Difference between revisions of "BoofCV Change Log"

From BoofCV
Jump to navigationJump to search
m
m
Line 4: Line 4:


---------------------------------------------
---------------------------------------------
Date    : 2014/9/22
Date    : 2015/09/20
Version : Alpha 0.18
Version : Alpha 0.19
* Renamed ImageSegmentation to ImageSuperpixels
** Added a unit test which ensures connectivity requirement is meet
** Fixed issue with SLIC where it did not set its ConnectRule
* Renamed ExampleStructureFromMotion to ExampleMultiviewSceneReconstruction
* Processing
** Gradle copies over processing JavaDoc
** Fixed SimpleTrackerPoints.spawn() which did not update the tracks before
** Added more comments to examples
* Removed Caliper dependency
** Not designed the way I want it to be and recent changes made it less usable
* Removed v4l4j support since Webcam Capture is easier and does a better job
* Fixed OpenKinect examples
* ImageDistort now supports a different input and output types
** Support is provided for the same image type
** It now allows for all types to float 32. Interpolation always outputs a floating point value.
* ThresholdImageOps
** Otsu's method
** Entropy based method
** Sauvola
* Fixed problem in FilterImageReflection where it assumed two arguments but some binary operations have 3 now
* Added pow2 and sqrt to PixelMath
* Added invert to BinaryImageOps
* Added rotateCW and rotateCCW to ImageMiscOps
* FilterImageInterface
** Reference ImageBase instead of ImageSingleBand
** Can get output type
* InputToBinary = Interface for converting an arbitrary image into a binary one
** Added wrappers/implementations for all current thresholding techniques
* Fiducial Detector
** Square-Binary. Encodes 4096 numbers
** Square-Image. Detects arbitrary image fiducials contained inside a square.
* Fixed bug in ColorHsv for multi-spectral images
** Was missing a check to see if saturation was zero
** Thanks sandreas for reporting the bug
* GConvolveImageOps
** Fixed generics so it wasn't forcing input and output to be the same type
* Added ExampleConvolution
* Convolution
** ConvolveNormalizedNaive correctly handles offsets in the kernel
** 2D convolution correctly supports offset.  Before it used radius no matter what
** Normalized convolution makes sure the input kernel sums up to 1 for floating point
* Processing
** Added new thresholding and fiducials


---------------------------------------------
* Removed -1 from CachedSineCosine_F32
Date    : 2014/6/19
** Change suggested by Jochem
Version : Alpha 0.17
** Original code could cause problems for edge cases in hough transform
 
* Moved BufferedImage to IO package since it is swing dependent
* Improved/Fixed serialization
** Suggested by Baha Elkassaby
** Several classes were missing no argument constructors
* JCodec
* Added ImageMiscOps.flipHorizontal()
** Formally added it back in since it works on Android videos
* Added WeightSample2D_F32 for computing the weight of a sample in an abstract manor
** Added utilities to convert Picture into BoofCV formatted images
** Reduced MeanShiftPeak from 3 classes into one
* Images can be serialized again
* Edge Non-Maximum suppression's documentation now clearly states that it suppresses only if adjacent pixel is less thanThis is not true non-maximum suppression since it allows equal values but seems to produce better results
** Made ImageType serializable now
** Improved unit tests to explicitly test for this behavior
** Fixed bug where subimages were not assigned an image type.
* Canny edge detector would fail if threshold was zero and the image had no texture
* Scene classification
** HysteresisEdge code was using a value of 0 to mark traversed regionsIt now uses -1 and sanity checks the lower threshold.
** Bag-of-Words based techniques
** Thanks Lucaro for finding this bug
** K-Nearest-Neighbor classificationLearning and Classifier
* Added GImageMultiBand for generalized access to multi-band image data
* Image setTo() will now automatically resize the image to match it's input
* Added support for MultiSpectral images to:
* Added invert option to visualizing binary images
** GBlurImageOps and BlurImageOps
** swing and android
* Image Segmentation / Superpixels
* Added in-place CW and CCW image rotation
** Watershed
* Fiducials
** Mean-shift
** Image square fiducials can now have their width individually set
** Felzenszwalb-Huttenlocher 2004
** Square based fiducials now use the new polygon detector and benefit from its improved subpixel
** SLIC Superpixels
** Fixed bug where the returned orientation was inconsistent with the JavaDoc
* Dense Optical Flow
** Fixed another bug that caused the sides to "flip" depending on view angle
** KLT Based
** Handling of small far away fiducials being viewed head on has improved much
** Square Region Based
* PerspectiveOps
** Horn Schunck
** Can render pixel in camera frame using IntrinsicParameters
** Horn Schunck Pyramid
* Created FactoryMultiViewRobust for simplifying the creation of robust versions of solutions to PnP, essential, homography
** Brox Spacial Warping
* Camera Model
* Fixed bugs in ConvertNV21
** Support for tangential distortion has been added
** Was applying YV12 byte alignment to NV21 images. Depending on image size, this could cause a crash.
** Intrinsic parameters can now use a flow style assignment of parameters
* Fixed bug in ImplConvertToBitmap.multiToArray_F32()
** Removed support for flipY to simplify the codeJust flip the image if this is an issue.
** Didn't handle case where the input image has 3 bands and not 4
** Lens distortion.  More abstracted
* ImageBase now provides a method for getting ImageType information
* LensDistortionOps
* Threshold in the interface Associate is now <= instead of <
** refactored several functions to make it more consistent and easier to use
** Change fullView to expand
** Many functions will now correct for lens distortion.
* Square grid calibration target
** Fixed.  Multiple bugs were introduced at some point in the past but were not caught due to the lack of regression tests
** Change underlying algorithm.  Now uses polygon detector for corners.
* Chessboard calibration target
** Complete re-write.  Now uses polygon detector
** Corner precision appears to have improved and runs faster
* Calibration
** A single class fully specifies the calibration target now
** Intrinsic parameters can now use a flow style assignment of parameters
* Interpolation
** Can specify a border handling algorithm now
* PixelMath
** Added minus(image,scalar)
** Added minus(scalar,image)
* 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
* Android
** Added classes which greatly simplify dealing with camera previews
** Can convert from 8888 to 3 channel multi-spectral images
** Added new visualizations intended for use with segmented images
** Moved NV21 out of Android because it's also useful with Webcams
** Simplified example code
* Added support for YV12 image format
* Added XYZ and LAB color spaces
* GImageMiscOps.fillUniform() max is inclusive for both integer and float and this is enforced
* BinaryImageOps
* BinaryImageOps
** Erode and dilate can now be applied multiple times with a single function call
** BinaryImageOps.labelToBinary() now has an easier to use variant.  No need to explicitly declare a boolean array
* StitchingFromMotion2D can now resize and translate the stitch image
** Added thin() operator for thinning/skeletonization
** Thanks Julien Seinturier for the suggestion
* Template Matching
* Convolution
** Can provide a mask for a template and effectively make pixels transparent or translucent
** 1D convolution now supports kernels which are not symmetric
** Requested by Rafael Maus and others
* Image gradient from a difference of two neighbors added
* ConvertBufferedImage
* Square grid calibration grid detector has been improved.
** Tweaked defaults for boof to BufferedImage.  Single band images return single band images.
** No longer permutes through all combinationsSelects each valid square and assumes its the first instead
*** Thanks thhart for pointing this out
** Graph connection rule has been improved too to reduce false connections
** Added partial support for images encoded with SunWritableRaster
* Moved serializeXML from BoofMiscOps to UtilIO
** Much improved support of BoofCV Interleaved images
** Removing an IO function which shouldn't be in image processing
* ThresholdImageOps
* FactoryDerivative
** Changed threshold up from >= to >.
** If derivative type is null it will use the default
** Turns out the original choice was badImages were not inverses of each other
* Added ImageType to interpolate interface
** Was possible the threshold an image with two values up and end up with all 0.
* Added ImageType to ImageSegmentation interface
* PyBoof has been added to integration
* Processing (http://processing.org) integration
** Python wrapper for BoofCV
** Lots of examples
** Thanks Romotive allowing donating this code!
** Simplified interface for working with BoofCV
* GHistogramFeatureOps, Histogram_F64, HistogramFeatureOps
* XStream now works without that ugly hack
** Computes color histograms with the intent that they can be used as features
** Thanks to Jörg Schaible of XStream for fixing the issue and all the help
** Supports an arbitrary number of color bands
* Webcam Capture Support
** Can also be computed from a list of pixel values
** Easy to use library for streaming webcams
** arbitrary min/max values and number of bins also supported
** Wrote several example showing how Webcam Capture can be used with BoofCV
** Example added demonstrating how to look up images with similar histograms
* Structure From Motion (SFM) example
* 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 22:38, 20 September 2015

Change Log

Date Format: year/month/day


Date  : 2015/09/20 Version : Alpha 0.19

  • Removed -1 from CachedSineCosine_F32
    • Change suggested by Jochem
    • Original code could cause problems for edge cases in hough transform
  • Moved BufferedImage to IO package since it is swing dependent
    • Suggested by Baha Elkassaby
  • JCodec
    • Formally added it back in since it works on Android videos
    • Added utilities to convert Picture into BoofCV formatted images
  • Images can be serialized again
    • Made ImageType serializable now
    • Fixed bug where subimages were not assigned an image type.
  • Scene classification
    • Bag-of-Words based techniques
    • K-Nearest-Neighbor classification. Learning and Classifier
  • Image setTo() will now automatically resize the image to match it's input
  • Added invert option to visualizing binary images
    • swing and android
  • Added in-place CW and CCW image rotation
  • Fiducials
    • Image square fiducials can now have their width individually set
    • Square based fiducials now use the new polygon detector and benefit from its improved subpixel
    • Fixed bug where the returned orientation was inconsistent with the JavaDoc
    • Fixed another bug that caused the sides to "flip" depending on view angle
    • Handling of small far away fiducials being viewed head on has improved much
  • PerspectiveOps
    • Can render pixel in camera frame using IntrinsicParameters
  • Created FactoryMultiViewRobust for simplifying the creation of robust versions of solutions to PnP, essential, homography
  • Camera Model
    • Support for tangential distortion has been added
    • Intrinsic parameters can now use a flow style assignment of parameters
    • Removed support for flipY to simplify the code. Just flip the image if this is an issue.
    • Lens distortion. More abstracted
  • LensDistortionOps
    • refactored several functions to make it more consistent and easier to use
    • Change fullView to expand
    • Many functions will now correct for lens distortion.
  • Square grid calibration target
    • Fixed. Multiple bugs were introduced at some point in the past but were not caught due to the lack of regression tests
    • Change underlying algorithm. Now uses polygon detector for corners.
  • Chessboard calibration target
    • Complete re-write. Now uses polygon detector
    • Corner precision appears to have improved and runs faster
  • Calibration
    • A single class fully specifies the calibration target now
    • Intrinsic parameters can now use a flow style assignment of parameters
  • Interpolation
    • Can specify a border handling algorithm now
  • PixelMath
    • Added minus(image,scalar)
    • Added minus(scalar,image)
  • 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 bad. Images 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