Difference between revisions of "BoofCV Change Log"

From BoofCV
Jump to navigationJump to search
m
m
Line 1: Line 1:
Change Log
Change Log
Date Format: year/month/day


---------------------------------------------
---------------------------------------------
Date    : 2015/09/20
Date    : 2015/11/09
Version : Alpha 0.19
Version : Alpha 0.20


* Removed -1 from CachedSineCosine_F32
* Improved pose stability of calibration targets as fiducials
** Change suggested by Jochem
** Turns out they were using a linear estimate only
** Original code could cause problems for edge cases in hough transform
** Now uses EPnP followed by a few steps of non-linear refinement
* Moved BufferedImage to IO package since it is swing dependent
* PerspectiveOps.createIntrinsic() which creates intrinsic parameters from a known FOV and image shape
** Suggested by Baha Elkassaby
* New WebcamInterface and some examples now can run on your webcam
* JCodec
** Requires WebcamCapture
** Formally added it back in since it works on Android videos
* ExamplePointFeatureTracker has colorized points to make it easier to identify the same point
** Added utilities to convert Picture into BoofCV formatted images
* Polygon Detector
* Images can be serialized again
** Simplified code by removing requirement the CW/CCW must be known by helper classes
** Made ImageType serializable now
* BinaryPolygonConvexDetector
** Fixed bug where subimages were not assigned an image type.
** Much improved performance on non-square like shapes
* Scene classification
** Stability is much better on very small shapes
** Bag-of-Words based techniques
* Merged data/applet and data/evaluation together
** K-Nearest-Neighbor classification. Learning and Classifier
** Renamed to data/examples
* Image setTo() will now automatically resize the image to match it's input
* Renamed package boofcv/evaluations to boofcv/demonstrations
* Added invert option to visualizing binary images
** It no longer served as a place for benchmarks
** swing and android
* VisualizeBinaryData
* Added in-place CW and CCW image rotation
** Marked buffered image as dirty when rendering a labeled image
* Fiducials
* Removed Processing from project
** Image square fiducials can now have their width individually set
** Might spawn into its own project if there is more interest in the future
** Square based fiducials now use the new polygon detector and benefit from its improved subpixel
* Binary Thresholding
** Fixed bug where the returned orientation was inconsistent with the JavaDoc
** Created a generic config class which supports all current types
** Fixed another bug that caused the sides to "flip" depending on view angle
* Square Fiducial Generator App
** Handling of small far away fiducials being viewed head on has improved much
** no longer defaults to a page border of 1cm
* PerspectiveOps
** page border is actually user configurable
** Can render pixel in camera frame using IntrinsicParameters
** border and white border are correctly handled
* Created FactoryMultiViewRobust for simplifying the creation of robust versions of solutions to PnP, essential, homography
* Square Binary Fiducial
* Camera Model
** Can now handle grids with arbtirary widths!
** Support for tangential distortion has been added
*** Thanks Nathan Pahucki npahucki@gmail.com for submitting this pull request
** Intrinsic parameters can now use a flow style assignment of parameters
** The width of the border can now be adjusted too
** Removed support for flipY to simplify the code.  Just flip the image if this is an issue.
* Moved PyBoof to it's own repository at https://github.com/lessthanoptimal/PyBoof
** Lens distortion.  More abstracted
** It will be update on its own cycle
* LensDistortionOps
* Chessboard Detector
** refactored several functions to make it more consistent and easier to use
** Improved stability especially for slightly blurred images
** Change fullView to expand
* PointTrackerKltPyramid
** Many functions will now correct for lens distortion.
** Fixed uninitialized variable in one of the constructorsThanks ericbhatti
* Square grid calibration target
** Change it from two constructors down to one constructor
** Fixed.  Multiple bugs were introduced at some point in the past but were not caught due to the lack of regression tests
* Created built in class for removing perspective distortion
** Change underlying algorithm.  Now uses polygon detector for corners.
** RemovePerspectiveDistortion
* Chessboard calibration target
* Partially observable calibration targets are now supported
** Complete re-write.  Now uses polygon detector
** Mathematically at least.  Targets which can be partially observed are not supported yet
** Corner precision appears to have improved and runs faster
* ConvertBufferedImage.stripAlphaChannel()
* Calibration
** Can be used to ensure that an alpha channel is not in the buffered image
** A single class fully specifies the calibration target now
** Inspired by an issue pete-experimenter had
** Intrinsic parameters can now use a flow style assignment of parameters
* Renamed FiducialDetector to FiducialPoseDetector
* Interpolation
** Done to accommodate fiducials in which you don't care about the pose
** Can specify a border handling algorithm now
* Morphological Thinning has been fixed and tweaked
* PixelMath
** Thanks Emil Hellman who first pointed out the issue and helped solve/improve the implementation
** Added minus(image,scalar)
* Locally adaptive threshold techniques that had a bias term now have a scale term.
** Added minus(scalar,image)
** Much more useful since bias was intensity and value range dependent
* Distortion
** Scale once again goes from in.width/out.width instead of (in.width-1)/(out.width-1)
*** The former is correct, but you have to deal with interpolating values like 9.5 when there are 10 pixels (9 is largest index)
** Added FDistort
*** Much easier to use and more flexible than the procedural fuctions in DistortImageOps
* FactoryDerivativeSparse
** Added sobel, prewitt, three, two0, two1
* Gradient Two0 and Two1
** There are two different ways to define the gradient from two samples, depending on the zero index.
** Two0 is [1] * [0] and Two1 is [0] * [-1].
** Before only one of these variants was available
* UtilImageIO
** Can save an image directly that is in BoofCV format
* Shape Features
** Corner fitting algorithm that uses the tangent of the gradient
** Black convex polygon detector
** Polygon fitting
* ShowImages
** Will now display any BoofCV image directly.
* Android
** Can convert from 8888 to 3 channel multi-spectral images
** Moved NV21 out of Android because it's also useful with Webcams
* Added support for YV12 image format
* BinaryImageOps
** BinaryImageOps.labelToBinary() now has an easier to use variant.  No need to explicitly declare a boolean array
** Added thin() operator for thinning/skeletonization
* Template Matching
** Can provide a mask for a template and effectively make pixels transparent or translucent
** Requested by Rafael Maus and others
* ConvertBufferedImage
** Tweaked defaults for boof to BufferedImage.  Single band images return single band images.
*** Thanks thhart for pointing this out
** Added partial support for images encoded with SunWritableRaster
** Much improved support of BoofCV Interleaved images
* ThresholdImageOps
** Changed threshold up from >= to >.
** Turns out the original choice was badImages were not inverses of each other
** Was possible the threshold an image with two values up and end up with all 0.
* PyBoof has been added to integration
** Python wrapper for BoofCV
** Thanks Romotive allowing donating this code!
* GHistogramFeatureOps, Histogram_F64, HistogramFeatureOps
** Computes color histograms with the intent that they can be used as features
** Supports an arbitrary number of color bands
** Can also be computed from a list of pixel values
** arbitrary min/max values and number of bins also supported
** Example added demonstrating how to look up images with similar histograms
* GImageDerivativeOps
** General cleaning up the API
** Fewer functions, but uses enum for specific type
** Function for AnyImageDerivative is clearly named and more useful
* ImageMiscOps
** fill band and bands
** insert band
* Background Model / Motion Detection
** For stationary cameras and moving cameras
** Basic: pixels modeled with a fading average
** Gaussian: pixels modeled with a fading Normal distribution

Revision as of 23:08, 9 November 2015

Change Log


Date  : 2015/11/09 Version : Alpha 0.20

  • Improved pose stability of calibration targets as fiducials
    • Turns out they were using a linear estimate only
    • Now uses EPnP followed by a few steps of non-linear refinement
  • PerspectiveOps.createIntrinsic() which creates intrinsic parameters from a known FOV and image shape
  • New WebcamInterface and some examples now can run on your webcam
    • Requires WebcamCapture
  • ExamplePointFeatureTracker has colorized points to make it easier to identify the same point
  • Polygon Detector
    • Simplified code by removing requirement the CW/CCW must be known by helper classes
  • BinaryPolygonConvexDetector
    • Much improved performance on non-square like shapes
    • Stability is much better on very small shapes
  • Merged data/applet and data/evaluation together
    • Renamed to data/examples
  • Renamed package boofcv/evaluations to boofcv/demonstrations
    • It no longer served as a place for benchmarks
  • VisualizeBinaryData
    • Marked buffered image as dirty when rendering a labeled image
  • Removed Processing from project
    • Might spawn into its own project if there is more interest in the future
  • Binary Thresholding
    • Created a generic config class which supports all current types
  • Square Fiducial Generator App
    • no longer defaults to a page border of 1cm
    • page border is actually user configurable
    • border and white border are correctly handled
  • Square Binary Fiducial
    • Can now handle grids with arbtirary widths!
      • Thanks Nathan Pahucki npahucki@gmail.com for submitting this pull request
    • The width of the border can now be adjusted too
  • Moved PyBoof to it's own repository at https://github.com/lessthanoptimal/PyBoof
    • It will be update on its own cycle
  • Chessboard Detector
    • Improved stability especially for slightly blurred images
  • PointTrackerKltPyramid
    • Fixed uninitialized variable in one of the constructors. Thanks ericbhatti
    • Change it from two constructors down to one constructor
  • Created built in class for removing perspective distortion
    • RemovePerspectiveDistortion
  • Partially observable calibration targets are now supported
    • Mathematically at least. Targets which can be partially observed are not supported yet
  • ConvertBufferedImage.stripAlphaChannel()
    • Can be used to ensure that an alpha channel is not in the buffered image
    • Inspired by an issue pete-experimenter had
  • Renamed FiducialDetector to FiducialPoseDetector
    • Done to accommodate fiducials in which you don't care about the pose
  • Morphological Thinning has been fixed and tweaked
    • Thanks Emil Hellman who first pointed out the issue and helped solve/improve the implementation
  • Locally adaptive threshold techniques that had a bias term now have a scale term.
    • Much more useful since bias was intensity and value range dependent