BoofCV Publisher's description
from Peter Abeles
BoofCV is an open source Java library for real-time computer vision and robotics applications.
BoofCV is an open source Java library for real-time computer vision and robotics applications. Written from scratch for ease of use and high performance, it often outperforms even native libraries. Functionality includes optimized low-level image processing routines, feature tracking, and geometric computer vision. BoofCV has been released under an Apache license for both academic and commercial use.
BoofCV is organized into several packages: image processing, features, geometric vision, , calibration, visualize, and IO. Image processing contains commonly used image processing functions which operate directly on pixels. Features contains feature extraction algorithms for use in higher level operations. Calibration has routines for determining the camera's intrinsic and extrinsic parameters. Geometric vision is composed of routines for processing extracted image features using 2D and 3D geometry. Visualize has routines for rendering and displaying extracted features. 'IO stands for input/output and contains common routines for reading in images from various input sources.
What's New in This Release:Simplified DescribeRegionPoint
describe now returns true or false
removed getDescriptionLength() since it is contained in the description itself
Feature detection and describing related classes now extend ImageBase to allow support of color image processing
Laplacian sign calculation doesn't declare new memory for every single feature any more
Added a color SURF descriptor
Fixed SIFT bug which produced a feature with NaN in its descriptor
The extractor border was not being taken in account when examining features. The net result was that the localization interpolation would messed up since the center would not be a maximum, causing really bad stuff.
Unit tests updated so that it they can detect it.
Thanks Lefteris for detecting this bug.
SURF detector (Fast-Hessian)
Was affected in a similar fashion to the SIFT bug. The fix doesn't seem to change its stability at all.
NCC error now more "correct" and divides by the number of elements
Integral image operations now support more image types. S64 and F64
KltTracker.setDescription() can now fail due to lack of texture
Created TrackObjectQuad for tracking user select objects inside an image
Added TLD tracker
Added Circulant tracker
Added Sparse Flow Object Tracker
Added various mean-shift trackers
Created recognition package
No other good place to put object trackers
Can read PPM from InputStream
Can read images from URL
Can read/write PGM files
Can handle comments in PPM + PGM files
Moved FastQueue and GrowQueue into DDogleg project so that other projects can use those data structures
Modified ConvertBufferedImage functions with orderRgb to make it easier to maintain RGB ordering.
No need to explicitly call orderBandsIntoRGB() any more
Change behavior of ConvertRaster so that it does not modify the order of color bands at all
Improved unit tests
Added Fast Fourier Transform
Code originally from General Purpose FFT by Takuya Ooura, actual Java code copied from JTransforms with minor modifications.
pixel-wise image-to-image multiplication
pixel-wise image-to-image division
added copy() for rectangular sub-images
limited support for Interleaved images
Convolution and ImageBlurOps
Improved accuracy of operations on integer images. Rounded instead of floored.
Removed GeoModelRefine and replaced with ModelFitter
Improved and renamed interleaved image types
Added full support to all primitive data structures in interleaved images
Added ImageBase.subimage class variable
Added ImageMultiBand as a base class for multi-band images.
Generalized interpolation so that support can be provided for single-band and multi-band images.
InterpolatePixelS for single-band
InterpolatePixelMB for multi-band
Fixed sub-image support for ConvertBufferedImage.extract*
Calibration target detection
Locally adaptive thresholding is now used for square and chessboard target types. Less sensitive to lighting conditions
Chessboard target detector works much better on small targets. Uses QuadBlob corners to estimate initial calibration point position then uses mean-shift for refinement
Chessboard now orders calibration points using QuadBlobs. Allowing orientation ambiguity to be correctly resolved when the target is not symmetric.
ImplConvertBitmap incorrectly converted floating point images
Was doing an integer divide instead of a floating point divide
Thanks Vagoster for reporting the bug
KLT can now track features which partially extend outside the image
Almost all interpolation routines incorrectly treated pixels 1 outside of the image as inside. Unit tests have been added and other classes modified for the change in behavior.
Fixed FactoryDistort.scale(). Off by one error when specifying scale factor
SearchLocalPeak high level interface
For algorithms which perform a local search for a peak
Added two mean-shift variants
Estimating pose from calibration grids
Two examples for object tracking
How to remove perspective distortion
Added video stabilization example
Reorganized package structure
It is now possible for it to produce a fatal error when all its tracks are lost
Computes a descriptor of the feature each time as needed. Doesn't extract it from the track itself. Made the code base more complex. Maybe old version has a slight runtime speed advantage
Fixed overflow issue in HarrisCorner_S16 weighted and unweighted
Improved Maven support by breaking it up into multiple modules
Fixed bug in UtilWavelet for integer images. X and Y got reversed in for loop
Program Release Status: Minor Update
Program Install Support: Install and Uninstall