Difference between revisions of "BoofCV Change Log"

From BoofCV
Jump to navigationJump to search
(Updated for v0.8)
m
 
(18 intermediate revisions by the same user not shown)
Line 1: Line 1:
Change Log
Date    : 2016/12/07
Version : 0.26


Date Format: year/month/day
* Fixed a long standing unit test issue where convolve unit test would some times on some systems erratically fail
 
** Appears that sometimes the random numbers caused a buffer overflow for U8 images
---------------------------------------------
** Now why it didn't have the exact same numbers every time when it has a fixed seed is disturbing...
Date    : 2012/05/13
* Renamed EquirectangularTo* to *ToEquirectangular
Version : Alpha 0.8
** Those classes convert pixels in * coordinates into their location in the equirectangular image
 
** They are used to generate a * image from equirectangular
'''IMPORTANT''' Discard old calibration files and calibrate again with latest code!
* Float 32bit auto coding switched over to using auto64fto32f library
 
* TypeInterpolate is now InterpolationType for consistency
* Added processing monitor to CalibrateStereoPlanarGuiApp
* Examples
* Fixed bug in Zhang99 calibration where Rodrigues coordinates were being parameterized incorrectly
** InterpolatePixel added
** Calibration results would be less accurate, but have a lower residual due to the increased degree of freedom
** Image blur added
* Added analytic Jacobian to Zhang99
** Non-Maximum Suppression added
** Decided not to use it since it produces same estimation parameters as numerical.
* Demonstrations
* Added functions for creating detectors in FactoryPlanarCalibrationTarget
** Improved DemonstrationInterpolateScaleApp (renamed also)
** changed code to reference those functions
** Added DetectBlackEllipseApp
* Stereo Disparity Image
* Gradle
** Dense and Sparse algorithms
** Will fail on dependency version conflict now
** Rectangular region winner take all (WTA)
** Will fail when building release with SNAPSHOT dependencies
*** Validation: right to left, max error, texture
** Resolved xstream version conflict
*** Precision: Pixel and Subpixel
* Updated DeepBoof
** Algorithms:
** This is to get around an issue with a java wget library where it would hang instead of giving up
*** Basic rectangular region
** New code is also much more informative and prints out size info and download status\
*** Five region adaptive: Hirschmuller, et. al. "Real-Time Correlation-Based Stereo Vision with Reduced Border Errors," 2002
* Visualization
* IntrinsicParameters
** Removed a bad +PI/2 from ellipse rendering.
** Added flipY to parameter list since it is vital information for many calculations.
* SnapToEllipseEdge * Fixed bug where it was only performing one iteration no matter what
* RectifyImageOps
* Circle Asymmetric Grid Target
** Fixed bug in functions that adjusted the rectification for viewing.  If left handed the coordinate systems got messed up
** Fixed issue which was causing clusters not to form by not limiting number of neighbors within X distance
* Changed allInside() so that the annoying single pixel black region is gone
** When clustering ellipses orientation and major/minor axis size is now taken in account.
** RectifyImageOps and LensDistortOps
** Significant net improvement in regression tests, only drop in performance in blurred images
* 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
* 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
** http://code.google.com/p/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

Latest revision as of 20:16, 7 December 2016

Date  : 2016/12/07 Version : 0.26

  • Fixed a long standing unit test issue where convolve unit test would some times on some systems erratically fail
    • Appears that sometimes the random numbers caused a buffer overflow for U8 images
    • Now why it didn't have the exact same numbers every time when it has a fixed seed is disturbing...
  • Renamed EquirectangularTo* to *ToEquirectangular
    • Those classes convert pixels in * coordinates into their location in the equirectangular image
    • They are used to generate a * image from equirectangular
  • Float 32bit auto coding switched over to using auto64fto32f library
  • TypeInterpolate is now InterpolationType for consistency
  • Examples
    • InterpolatePixel added
    • Image blur added
    • Non-Maximum Suppression added
  • Demonstrations
    • Improved DemonstrationInterpolateScaleApp (renamed also)
    • Added DetectBlackEllipseApp
  • Gradle
    • Will fail on dependency version conflict now
    • Will fail when building release with SNAPSHOT dependencies
    • Resolved xstream version conflict
  • Updated DeepBoof
    • This is to get around an issue with a java wget library where it would hang instead of giving up
    • New code is also much more informative and prints out size info and download status\
  • Visualization
    • Removed a bad +PI/2 from ellipse rendering.
  • SnapToEllipseEdge * Fixed bug where it was only performing one iteration no matter what
  • Circle Asymmetric Grid Target
    • Fixed issue which was causing clusters not to form by not limiting number of neighbors within X distance
    • When clustering ellipses orientation and major/minor axis size is now taken in account.
    • Significant net improvement in regression tests, only drop in performance in blurred images