Release notes

2.0.0beta2 (2011-12-23)

The most notable new feature in 2.0.0beta2 is a new remote object framework. It allows one to map QObjects directly to URIs in a web server, which makes web browser integration a no-brainer. The remote object framework also provides a completely network-transparent signal/slot mechanism and allows calling remote functions with no "brokers" or "stub compilers" many Corba developers hate deeply. Beta2 comes with a new OCR plug-in and over 200 bug fixes and improvements in performance, stability, and usability.

New features

  • Remote object framework
  • Property protection levels in PiiOperation
  • Thread-safe read/write of properties in PiiDefaultOperation
  • OCR plug-in. Handwritten digit recognition implemented.
  • An almost complete rewrite of the linear algebra library. New SVD and PCA algorithms.
  • Circular Hough transform
  • Multi-class boosting and an operation interface to boosting algorithms
  • Blocking learning to PiiClassifierOperation
  • Solution algorithm to the linear assignment problem
  • Platform-neutral microsecond-resolution timer (on Linux/OSX, no Windows support yet)
  • Support for template classes in JavaScript API
  • JavaScript wrappers to QColor, PiiAbstractSocket
  • New "synchronized" construct for easy mutual exclusion.
  • Prebuilt MSVC binaries.

Improvements

  • Better OpenCV integration, including bug fixes
  • Remarkably improved camera driver interface with a few new implementations
  • PiiAsyncCall now accepts parameters for asynchronous functions
  • Scale invariance to shape context descriptors
  • Region-of-interest support to adaptive thresholding
  • New composition mode in PiiMatrixComposer
  • ... and about 70 other minor changes

Changed functionality

  • PiiVariant now uses qint64 as a long integer type.
  • PiiDefaultOperation::Simple was renamed "NonThreaded"
  • PiiWaitingIODevice no longer exists. The functionality was moved to PiiSocketDevice
  • PiiBackgroundExtractor property names and output name
  • PiiImageFileWriter::stripPath is now false by default
  • Renamed PiiNetworkClient::readTimeout to connectionTimeout

Bug fixes

  • PiiOperationCompound::stop() now works in "Starting" state.
  • PiiOperationCompound subclasses now work in JavaScript
  • Never-ending on-line training in PiiClassifierOperation.
  • Potential synchronization error when stopping a configuration with many parallel flows at different flow levels.
  • ... and more than 150 others, many of them platform-specific.

2.0.0beta1 (2011-04-30)

New features

  • Feature point based object detection framework
  • RANSAC algorithm
  • k-d tree
  • Shape-based matching (shape contexts)
  • MSVC support is back. No precompiled binaries though.
  • Experimental QML support
  • Undistortion operation for camera calibration
  • A few new generic low-level algorithms
  • An asynchronously loading thumbnail list view
  • A program to execute JavaScript/QML directly
  • A generic camera image source (PiiCameraOperation)
  • Background extractor for detecting moving objects in videos.

Improvements

  • Many small optimizations in the execution engine.
  • Refactoring and enhancements in the serialization library (e.g. support for non-default constructors)
  • Enhanced region-of-interest support. Rectangular areas and free-form ROI masks are now supported by most operations.
  • Support for non-rectangular crop areas to PiiImageCropper.
  • More preprocessor tricks (loops, conditional macros)
  • Many common Qt types were added to the JavaScript API.
  • PiiClassifierOperation can now handle also matching applications.
  • PiiCameraDriver can now handle different frame buffer allocation schemes.
  • Usability enhancements on the documentation site.

Changed functionality

  • PiiVariantPtr is removed in favor of the faster (and more convenient) PiiVariant
  • PiiSampleSet is now hidden as an implementation detail. Compatible sample set types can be used directly.
  • Serialization of binary data changed in the serialization library. This among other things makes previously stored archives incompatible with the current version.

Bug fixes

  • Incorrect handling of boundary limits in PiiBoundaryFinderOperation
  • Memory allocation error in PiiMatrix::appendColumn()
  • Infinite recursion in PiiBinaryMatrixTransform::rowBegin()
  • Out-of-bounds index in PiiImage::crop()
  • PiiCalibration::undistort() didn't always converge. Replaced with LM minimization.
  • Misplaced rectangles in PiiImageOverlay
  • Potential crash when removing overlays
  • Handling enter in PiiLayerEditor
  • A literal corner case in labeling 4-connected components
  • Out-of-bounds index in PiiSerializationException
  • Missing signal in PiiTableModel::clear()
  • PiiDefaultFlowController sometimes missed an incoming object
  • Flow controller behavior in PiiPisoOperation
  • Initialization error in PiiFrequencyCounter
  • Incorrectly retained images in PiiVisualTrainerWidget
  • Memory leak in PiiImageFileWriter (Windows specific)
  • Handling of precalculated Jacobians in LM minimization
  • Handling of multiples of pi in PiiImage::rotate() with different cropping styles.
  • Incorrect initialization in PiiSimpleMemoryManager.
  • Crash in handling stateless protocols in PiiNetworkServerThread