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