Difference between revisions of "BoofCV Change Log"
From BoofCV
Jump to navigationJump to search (Updated for v0.9) |
m |
||
Line 2: | Line 2: | ||
Date Format: year/month/day | Date Format: year/month/day | ||
--------------------------------------------- | |||
Date : 2012/09/18 | |||
Version : Alpha 0.10 | |||
* Association Score | |||
** Pushed implementations of ScoreAssociation into abst package | |||
** Put most association distance algorithms into DescriptorDistance | |||
** Added hamming lookup table | |||
** Brief now uses a look up table. About a 7x speed improvement. | |||
** FactoryAssociate now can create instances of ScoreAssociate. | |||
** Fixed incorrect NCC equation. Thanks Christian Kramer. | |||
* DescribeRegionPoint has been redesigned | |||
** Now more generic and can work with any feature descriptor | |||
** Separate function for checking to see if feature is inside bounds | |||
* TupleDesc | |||
** changed to an interface | |||
** functions added to provide some generic support | |||
* Brief descriptor renamed to TupleDesc_B | |||
** Acts as a generic binary feature descriptor | |||
* Descriptors | |||
** BRIEF and BRIEF-SO now can process features along the image border. Bit set to false in that case. | |||
* Visualization Apps | |||
** VisualizeAssociationScoreApp has score type in a separate panel and can support binary descriptors | |||
* InterestPointDetector | |||
** WrapFHtoInterestPoint now returns the correct detection radius | |||
** Fixed non-compliant implementations with incorrectly handled unsupported features. Thanks jasonnn for submitting this bug | |||
* FAST Feature Detector | |||
** Original implementation was buggy and did not produce same results as original author's code | |||
** Rewrote from scratch and replicates original author results | |||
* GeneralFeatureDetector moved from extract to interest package | |||
* Fundamental/Essential Matrix | |||
** 7-point algorithm now returns all solutions and the algorithm was tweaked | |||
** Nister 5-pt Essential Matrix | |||
** Abstractions which can handle multiple solutions | |||
** Stability evaluator for epipolar matrices | |||
** Improved unit tests | |||
* Polynomials | |||
** Various ways to find and polish polynomial roots (EVD and Sturm) | |||
** New data type and basic operations | |||
* Added ExampleStereoTwoViewsOneCamera | |||
** Demonstrates how to perform stereo image processing using a single camera and two views | |||
* LensDistortionOps | |||
** Added normalized to distorted pixel transform | |||
** Tweaked some of the function names | |||
* SparseIntegralSample_I32.isInBounds() did not return that correct value along the right and bottom image border | |||
* Functions inside of GThresholdImageOps did not return the number of blobs found like it should | |||
** Thanks jasonnn | |||
* NonMaxBlockStrict | |||
** Fixed bug where it assumed intensity values were all positive | |||
* TemplateMatching | |||
** Added code for template matching | |||
** Added example code to demonstrate its use | |||
* Added support for alpha channel in ConvertBufferedImage | |||
* FactoryPointSequentialTracker doesn't create trackers with FAST detector instead uses ShiTomasi to improve stability | |||
--------------------------------------------- | --------------------------------------------- |
Revision as of 11:57, 18 September 2012
Change Log
Date Format: year/month/day
Date : 2012/09/18 Version : Alpha 0.10
- Association Score
- Pushed implementations of ScoreAssociation into abst package
- Put most association distance algorithms into DescriptorDistance
- Added hamming lookup table
- Brief now uses a look up table. About a 7x speed improvement.
- FactoryAssociate now can create instances of ScoreAssociate.
- Fixed incorrect NCC equation. Thanks Christian Kramer.
- DescribeRegionPoint has been redesigned
- Now more generic and can work with any feature descriptor
- Separate function for checking to see if feature is inside bounds
- TupleDesc
- changed to an interface
- functions added to provide some generic support
- Brief descriptor renamed to TupleDesc_B
- Acts as a generic binary feature descriptor
- Descriptors
- BRIEF and BRIEF-SO now can process features along the image border. Bit set to false in that case.
- Visualization Apps
- VisualizeAssociationScoreApp has score type in a separate panel and can support binary descriptors
- InterestPointDetector
- WrapFHtoInterestPoint now returns the correct detection radius
- Fixed non-compliant implementations with incorrectly handled unsupported features. Thanks jasonnn for submitting this bug
- FAST Feature Detector
- Original implementation was buggy and did not produce same results as original author's code
- Rewrote from scratch and replicates original author results
- GeneralFeatureDetector moved from extract to interest package
- Fundamental/Essential Matrix
- 7-point algorithm now returns all solutions and the algorithm was tweaked
- Nister 5-pt Essential Matrix
- Abstractions which can handle multiple solutions
- Stability evaluator for epipolar matrices
- Improved unit tests
- Polynomials
- Various ways to find and polish polynomial roots (EVD and Sturm)
- New data type and basic operations
- Added ExampleStereoTwoViewsOneCamera
- Demonstrates how to perform stereo image processing using a single camera and two views
- LensDistortionOps
- Added normalized to distorted pixel transform
- Tweaked some of the function names
- SparseIntegralSample_I32.isInBounds() did not return that correct value along the right and bottom image border
- Functions inside of GThresholdImageOps did not return the number of blobs found like it should
- Thanks jasonnn
- NonMaxBlockStrict
- Fixed bug where it assumed intensity values were all positive
- TemplateMatching
- Added code for template matching
- Added example code to demonstrate its use
- Added support for alpha channel in ConvertBufferedImage
- FactoryPointSequentialTracker doesn't create trackers with FAST detector instead uses ShiTomasi to improve stability
Date : 2012/7/22 Version : Alpha 0.9
- Renamed factories
- FactoryBlobDetector -> FactoryDetectPoint
- FactoryCornerDetector -> FactoryDetectPoint
- Renamed KLT corner to Shi Tomasi corner, which is more standard
- Fixed bug various point detectors where if the input image was resized the edge intensity might not be zero when it should be
- Changed some corner detection algorithms to take the intensity image in as an input.
- Added new Pixel to Normalized transform
- Created interface for Stereo visual odometry
- Fixed bug in unsafe_set inside of ImageInt8
- Added unsafe_set() and unsafe_get() to ImageFloat32, ImageFloat64, ImageSInt64
- Fixed bug in ImageSInt64.set() where the value was cast into a short
- Changed transform* functions inside of DistortImageOps so that you can specify how outside image pixels are handled.
- Fixed bug in ImageHistogramPanel - reported by Ray
- Added support for integer images
- Integration
- Created ant build scripts
- Updated Xuggler integration code
- Added Android
- Generalized SimpleImageSequence so that it does not reference BufferedImage and will play nicer with Android
- Fixed bug in ImplImageDistort* where for 16bit and 32 bit images values were being type casted into bytes
- Changed UnconstrainedMinimization so that the minimum function value is specified in setFunction()
- Added ExampleContours
- Thanks cspnanda for pointing out the lack of documentation
- New non-maximum suppression algorithm
- About the same for 3x3 regions, much faster for larger regions
- Tweaked related API and improved unit tests
- Fixed bug in WrapDescrivePixelRegion where the descriptor is not properly configured for integer images
Date : 2012/05/13 Version : Alpha 0.8
IMPORTANT Discard old calibration files and calibrate again with latest code!
- Added processing monitor to CalibrateStereoPlanarGuiApp
- Fixed bug in Zhang99 calibration where Rodrigues coordinates were being parameterized incorrectly
- Calibration results would be less accurate, but have a lower residual due to the increased degree of freedom
- Added analytic Jacobian to Zhang99
- Decided not to use it since it produces same estimation parameters as numerical.
- Added functions for creating detectors in FactoryPlanarCalibrationTarget
- changed code to reference those functions
- Stereo Disparity Image
- Dense and Sparse algorithms
- Rectangular region winner take all (WTA)
- Validation: right to left, max error, texture
- Precision: Pixel and Subpixel
- Algorithms:
- Basic rectangular region
- Five region adaptive: Hirschmuller, et. al. "Real-Time Correlation-Based Stereo Vision with Reduced Border Errors," 2002
- IntrinsicParameters
- Added flipY to parameter list since it is vital information for many calculations.
- RectifyImageOps
- Fixed bug in functions that adjusted the rectification for viewing. If left handed the coordinate systems got messed up
- Changed allInside() so that the annoying single pixel black region is gone
- RectifyImageOps and LensDistortOps
- FactoryCornerDetector
- Added flag for weighted KLT and Harris
- Added weighted corners to list of features in some evaluation apps
- Examples:
- ExampleCalibrateMonocularPoints
- ExampleDetectCalibrationPoints
- ExampleStereoDisparity
- ImageTestingOps
- Flip image vertical
- Fast point cloud viewer
Date : 2012/04/22
Version : Alpha 0.7
- Redesigned how evaluation apps/applets handle data input and configuration
- Removed the epipolar directory
- More than just stereo algorithms in there
- Camera calibration outputs XML file containing intrinsic parameters
- Java XML serialization
- For square calibration grids, added sub-pixel refinement using canny edge
- Fixed a bug in camera calibration where it transposed the grid instead of rotating it if the number of rows/columns needed to be swapped.
- 3D Vision Algorithms
- Estimate translation given rotation and two observations
- Refine pose estimate given set of 3D points and observations
- Interface for n-view triangulation
- Bundle adjustment for calibrated cameras
- Analytic Jacobian
- A bit slow right now
- Changed behavior of GeneralFeatureDetector
- Supports sub-region extraction. Forces features to be more spread out
- Max N now is the total number of features, including excludes
- Improved speed of Levenberg algorithm by taking advantage of symmetry
- UtilEpipolar
- Added canonicalCamera() and decomposeCameraMatrix()
- Created the following Util and Ops classes
- UtilIntrinsic
- LensDistortionOps
- RectifyImageOps
- Stereo Rectification
- Calibrated with known baseline
- Uncalibrated, from using a fundamental matrix.
- Adjust rectification to maximize usefull viewing area
- New Examples
- Estimate fundamental matrix
- Rectify calibrated
- Rectify fundamental matrix
- Remove lens distortion
- The feature score was not being set in WrapAssociateGreedy
- Thanks Nir Amar
- Also changed AssociateSurfBasic for a similar reason
- Fixed problem in FundamentalResidualSampson where the denominator was being squared
- Fixed problem in Se3 Essential generator
- Changed positive depth constraint class
Date : 2012/03/01
Version : Alpha 0.6
- Added convolution related code for ImageSInt32
- Added weighted KLT and Harris corner detectors
- Refactored factory names and other classes to make them easier to find and more consistent
- Planar calibration grid detectors
- Chess board pattern
- Square grid pattern
- Generic code for detecting squares in binary images
- Inside of calibration module
- Application for calibration from planar calibration targets
- GUI and commandline
- ImageDistort
- Fixed bug where border.setImage() was not being called
- ImageBorder
- Added generalized get(x,y)
- Refactored FactoryImageBorder into two factories
- Fixed bug in several derivative operators where the passed in border was being ignored and an extended border being used instead
- Change ImplImageDistort* to use interpolate.get_unsafe() to speed it up by a large margin
- Moved ImageDistort from boofcv.alg.distort to boofcv.struct.distort
- Added PointTransform_F32
- Added both forward and reverse radial distortion PixelTransform_F32 implementations
- ModelMatcher classes can now create multiple model hypotheses from a single set of points.
- Changed ImagePointTracker to use PointTrack instead of AssociatedPair
- Created KeyFramePointTracker to track features and create AssociatedPairs
- Added FactoryEpipolar
- Added FactoryTriangulate
- Added non-linear refinement for:
- Fundamental/Essential matrix
- Homography matrix
- Triangulation
- Added 2-view and N-View triangulation algorithms
- DLT
- Closest point from two lines
- Added EPnP from Lepetit 2009 paper
- Validation against author's code is pending
- Added color processing to several Apps
- EvaluateInterpolateEnlargeApp
- ShowImageBlurApp
- Added SimpleNumberSequenceReader for reading small sequences of numbers
- Added lens distortion app
- Found sudbtle bug in Harris corner detector.
- Surprisingly doesn't seem to change output.
Date : 2012/02/01
Version : Alpha 0.5
- Improved SURF performance
- Fixed various bugs and changed algorithm to improve performance
- Both speed and stibility have been improved
- Now is the best performing SURF implementation in the benchmark
- Fixed various bugs and changed algorithm to improve performance
- ImplOrientationSlidingWindowIntegral has been replaced with a faster and more accurate algorithm
- Improved integral image support
- Improved sparse gradient support
- Refactored sparse image operator code
- Added SparseImageSample interface
- Added/Improved unconstrained non-linear optimization code
- Quasi-Newton line search
- Levenberg-Marquardt
- Geometric vision and calibration code which uses non-linear optimization now works correectly
- Started converting internal micro benchmarks to use Caliper
Date : 2012/01/06
Version : Alpha 0.4
- Changed behavior of ConvertBufferedImage so that it won't automatically swap bands in MultiSpecitral image
- orderBandsIntoRGB() has been provided to do that manually if needed
- All automatic convert to/from BGR and been removed from ConvertRaster
- Fixed SURF related issue
- Image bounds check was being incorrectly performed for integral image orientation estimation algorithms (Thanks Oleg Chernoguz for pointing this out)
- FactoryOrientationAlgs.sliding_ii() was creating an average orienation alg for I32 images
- Some coordinates were integer instead of double
- Added comments to several factories and other classes
- Added ant script for examples and readme.txt explaining how to use it
Date : 2012/01/02
Version : Alpha 0.3
- Camera Calibration
- Planar grid (Zhang 98)
- Camera calibration matrix from homographies
- Linear radial distortion
- Decomposition of homography for calibration
- Nonlinear optimization of all parameters
- Calibration Grid Detection
- Detects corners up to "pixel accuracy", in reality its probably worse than that
- Sub-pixel accuracy code exists but needs more work
- Added min and max values to ImageTestingOps.addGaussian()
- Tweaked factories related to wavelet denoising so that they take in an image type.
- Removed cyclical dependency between modules by creating a visualize modules
- Added to BinaryImageOps
- label to clusters
- clusters to binary
- Renamed ImageBase to ImageSingleBand
- Created a new ImageBase
- Flushed out MultSpectral image type more and extended ImageBase
- Created functions to convert to and from BufferedImage
- Changed behavior of several functions in GeneralizedImageOps to include MultiSpectral images
- refactor createImage -> createSingleBand
- Updated ant scripts
- Common template is now used for the different modules
- Fixed unit test and make it work across the whole project
- Added crop to ImageDistort
- If cropping is used the only part of the destimation image is processed
- Created calibration package to hold calibration related code
- Moved jars not part of the primary build into boofcv/lib/testing
- Started converting runtime benchmark code over to Caliper
Date : 2011/12/01
Version : Alpha 0.2
- Added integer polynomial interpolation
- Cleaned up polynomial interpolation code
- Fixed bug in PixelMath.bound() dealing with unsigned images
- Converting to a BufferedImage now marks it as modified
- Added min and max pixel values to ImageTypeInfo
- Added ComplexMath
- Added PolynomialSolver
- Added process(image) to PointSequentialTracker and renamed it to ImagePointTracker
- Added the following 3D vision code:
- Linear 8-point essential/fundamental matrix
- Linear 7-point essential/fundamental matrix
- Linear 4-point homography
- Extract camera motion from essential
- Extract camera and plane normal from homography
- Triangulate: Linear pixel depth
- Projective N Point (PNP): Linear N >= 6
- Added non-linear optimizer based upon Levenberg-Marquardt
- Added pixel region based descriptors
- Raw pixel values
- Normalized Cross Correlation (NCC)
- Added pixel region based trackers
- Added Sum of Absolute Difference (SAD) score for feature association with a few different descriptor types.
Date : 2011/11/01
Version : Alpha 0.1
- Initial public release