forked from lessthanoptimal/BoofCV
-
Notifications
You must be signed in to change notification settings - Fork 0
/
change.txt
511 lines (481 loc) · 22.3 KB
/
change.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
Change Log
Date Format: year/month/day
---------------------------------------------
Date :
Version : Alpha 0.13
- Removed TupleDescQueue
* Use UtilFeature.createFeature() instead or extend FastQueue
- Fixed bug in ImplSelectSparseStandardWta_* where peak checks for 0 disparity were incorrectly handled
- FactoryPointSequentialTracker tweaked tracker configurations for better SFM performance
- PointTrackerKltPyramid can now create new data to store tracks after init
- Made scale configurable in corner based interest points
- Renamed GeneralAssociation to AssociateDescription
- Added AssociateDescription2D for association with location info
- ScoreAssociateCorrelation no longer takes the abs()
- SIFT
* Accounts for offset during sub-sampling
* Documents deviations from paper in pyramid construction
* Tweaked pyramid construction
- Improved handling of Max Features in SURF + SIFT
* All features are considered in order of intensity
* Features are no longer added once the max has been reached
- Added Model Assisted Trackers
* Can use estimated motion to improve tracking results
* Useful in SFM applications
* Updated SFM algorithms so that they can use these types of trackers
- Chessboard and Square grid calibration target detectors
* Made minimum blob automatically adjust to image size
* Made it user configurable
* These changes allow calibration of 320x240 images
- PerspectiveOps.scaleIntrinsic() changes image width/height
- Improved unit tests for MultiSpectral images
- ImageConvert
* Added support for ImageSInt64
* Added support for MultiSpectral to SingleBand using average
* Added GImageConvert
- Code to convert between different types of TupleDesc
- Fixed bug in TupleDesc_F64 SAD scorer
- Added approximate nearest neighbor from DDogleg
* k-d tree best-bin-first
* k-d random forest
- Changing the way complex algorithm are configured
* Instead of passing in parameters to a factory a config class is passed in.
* Affected: SIFT, SURF
- PixelMath
* Fixed bug in PixelMath.subtract for ImageUInt8
- Thanks Paul Dumais for reporting the problem
* Added PixelMath.invert()
- Associate and ScoreAssociation
* Added ability to set a threshold via Associate interface
* Created MatchScoreType to provide more information on the score's behavior
- Created EasyGeneralFeatureDetector
* Automatically handles image derivatives
* Split off from WrapGeneralFeatureDetector
- GeneralFeatureDetector
* moved to alg package
* can now detect local minimums
* Removed ability to segment image. Turned out to not be all that useful, just increase the size of the non-maximum region.
- FeatureExtractor
* Removed the parameter for requesting the number of returned features
* Nothing implements it any more and it is handled otherways now
- NonMaximum supression
* All algorithms contained a bug where the ignore border was being incorrectly enforced
---------------------------------------------
Date : 2012/12/05
Version : Alpha 0.12
- Fixed inverse wavelet transform so that it bounds the pixel values
* Wavelet denoising sometimes overflowed
- Adding new feature tracker which combines KLT and DDA style tracking
- Updated Pyramid KLT tracker
* Removed PkltTrackManager and pushed its functionality into the ImagePointTracker implementation
* Was only separate for historical reasons
* renamed PstWrapperPyramidKlt to PointTrackerKltPyramid
* Deleted GenericPkltFeatureSelector and put into KLT point tracker
* Moved what was left into KLT directory
- ImagePointTracker
* Changed contract, more fully specified contract, improved tests
* Updated behavior of implementing classes
- Deleted KeyFramePointTracker
* Added pointless complexity. Use ImagePointTracker instead
* Changed 2D and 3D SFM algorithms which were using it
- Fixed bugs in various feature descriptors setTo() and copy() functions:
* SurfFeature
* TupleDesc_B
* NccFeature
- Feature Descriptors
* No longer have hidden orienation estimation algorithms inside
- Feature Orienation
* Interfaces moved to abst package
* Created wrappers to convert different types into image input
* Added a new factory
- Created DetectDescribePoint interface
* Combines detection and describing into a single interface
* Useful for algorithms which have coupled data structures are are more efficient this way.
- FactoryPointSequentialTracker has been tweaked a bit
- GeneralAssociation provides two functions for specifying the source and destination lists
* Allows better optimization since preprocessing might only need to be done once
- ConvertBufferedImage
* Added support for sub-image BufferedImages
- All numerics code has been put into its own project
* http://ddogleg.org
- Reworking several basic image operations
* Created ImageMiscOps
* Created ImageStatistics
* Deleted ImageTestingOps
* Changed PixelMath
* Changed GeneralizedImageOps
- Added setTo() in ImageBase
- FastHessianFeatureDetector now recycles ScalePoints that it detects
- Removed canoncialRadius() from feature detector and descriptor
* It was poorly implemented
* Was not consistent with scale-space theory
- Added 2D convolution in KernelMath
- Maven build has been added.
* BoofCV is on the central repository
- Added SIFT feature descriptor and detector
- Removed seperable kernel
* Wasn't being used and there is no need for it with more modern techniques
* Plus it was causing a unit test to fail
- Removed Gaussian12 and Steerable feature descriptors
* They sucked and were not properly implemented limited their historical value
---------------------------------------------
Date : 2012/11/6
Version : Alpha 0.11
- Association Score
* Normalized Cross Correlation (NCC) has been fixed (yet again) in ScoreAssociateNccFeature where the abs() was incorretly being taken.
* Fixed bug in NccFeature.setTo()
- FactoryAssociation
* Added NCC to defaultScore()
- Template Matching
* Added NCC template matching algorithm
* TemplateScoreType: ERROR_SQUARED renamed to SUM_DIFF_SQ
- ModelSet
* Original index of inlier set can be requested now
* Removed the ability to generate multiple hypotheses. Was not needed after all.
* RANSAC score has been deleted and RANSAC simplified
- RectifyImageOps
* Cleaned up function names and improved documentation
- LensDistortionOps
* Added transformRadialToPixel_F64()
- Reorganized functions in geometric vision package
* Created MultiViewOps and PerspetiveOps
* Refactored/deleted other related Util classes
* Enums are now used to select which algorithm is returned in the Factory in many cases
* New interfaces for each problem and improved JavaDoc
- Moved AssociatedPair and PointPositionPair to boofcv.struct.geo package
- Trifocal Tensor
* Added related functions to MultiViewOps
* Added linear estimator for 7+ points
- PnP Problem
* Added two P3P solutions
* Analytic Jacobian for non-linear refinement
* Refactored class names for better consistency
- Fixed bugs in StereoSparse3D
- Fixed bug in DistortImageOps.boundBox_F32()
- Added ImageGridPanel to display a set of images as a grid
- ModelMatcher added getMinimumSize()
- Renamed PointPosePair to Point2D3D since the old name was misleading
- Visual Odometry
* Added stereo camera based algorithm that uses PnP for pose estimation
* Removed broken mono and stereo algorithms
- DetectAssociateTracker
* Changed from an abstract class into a regular class
* Deleted SURF,BRIEF,NCC specific implementations since they are no longer needed
- AssociatedPair
* renamed key and curr points to p1 and p2
* new names are more generic and consistent
- DetectAssociateTracker
* Changed internal design a bit and fixed bugs
* Performs well in structure from motion applications (2D and 3D)
- ImagePointTracker accessors changed so that a storage list is requested
* Makes usage easier since now its impossible to drop a track while reading
from the main list.
* Updated implementations so that the internal list is not returned
* Removed addTrack() since only KLT supported that functionality, hence not generic.
- ConvertBufferedImage
* Fixed bug where INDEXED images where not being converted correctly
---------------------------------------------
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 are 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
- Added SIFT feature descriptor and detector
---------------------------------------------
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 subtle bug in Harris corner detector.
* Surprisingly doesn't seem to change output that much.
---------------------------------------------
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) feature association score for several different descriptor types.
---------------------------------------------
Date : 2011/11/01
Version : Alpha 0.1
- Initial public release