forked from lessthanoptimal/BoofCV
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathchange.txt
703 lines (668 loc) · 32.2 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
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
Change Log
Date Format: year/month/day
---------------------------------------------
Date : 2013
Version : Alpha 0.16
- Simplified DescribeRegionPoint
* describe now returns true or false
* removed isInBounds()
* removed getDescriptionLength() since it is contained in the description itself
* added getImageType()
- Feature detection and describing related classes now extend ImageBase to allow support of color image processing
- SURF
* Laplacian sign calculation doesn't declare new memory for every single feature any more
* Added a color SURF descriptor
- Fixed SIFT bug which produced a feature with NaN in its descriptor
* The extractor border was not being taken in account when examining features. The net result was that the
localization interpolation would messed up since the center would not be a maximum, causing really bad stuff.
* Unit tests updated so that it they can detect it.
* Thanks Lefteris for detecting this bug.
- SURF detector (Fast-Hessian)
* Was affected in a similar fashion to the SIFT bug. The fix doesn't seem to change its stability at all.
- NCC error now more "correct" and divides by the number of elements
- Integral image operations now support more image types. S64 and F64
- KltTracker.setDescription() can now fail due to lack of texture
- Created TrackObjectQuad for tracking user select objects inside an image
* Added TLD tracker
* Added Sparse Flow Object Tracker
* Added various mean-shift trackers
- Created recognition package
* No other good place to put object trackers
- UtilImageIO
* Can read PPM from InputStream
* Can read images from URL
- Moved FastQueue and GrowQueue into DDogleg project so that other projects can use those data structures
- Modified ConvertBufferedImage functions with orderRgb to make it easier to maintain RGB ordering.
* No need to explicitly call orderBandsIntoRGB() any more
- Change behavior of ConvertRaster so that it does not modify the order of color bands at all
* Improved unit tests
- Added Fast Fourier Transform
* Code originally from General Purpose FFT by Takuya Ooura, actual Java code copied from JTransforms
with minor modifications.
- PixelMath
* pixel-wise image-to-image multiplication
* pixel-wise image-to-image division
* pixel-wise log(1+x)
- ImageMiscOps
* added copy() for rectangular sub-images
* limited support for Interleaved images
- ThresholdImageOps
* Added adaptiveSquare
* Added adaptiveGaussian
- Convolution and ImageBlurOps
* Improved accuracy of operations on integer images. Rounded instead of floored.
- Removed GeoModelRefine and replaced with ModelFitter
- Image Types
* Improved and renamed interleaved image types
* Added full support to all primitive data structures in interleaved images
* Added ImageBase.subimage class variable
* Added InterleavedImageOps
* Added ImageMultiBand as a base class for multi-band images.
- Generalized interpolation so that support can be provided for single-band and multi-band images.
* InterpolatePixelS for single-band
* InterpolatePixelMB for multi-band
- Fixed sub-image support for ConvertBufferedImage.extract*
* Thanks pcmoen
- Calibration target detection
* Locally adaptive thresholding is now used for square and chessboard target types. Less sensitive to lighting
conditions
* Chessboard target detector works much better on small targets. Uses corners to estimate initial calibration
point position then uses mean-shift to refine
- ImplConvertBitmap incorrectly converted floating point images
* Was doing an integer divide instead of a floating point divide
* Thanks Vagoster for reporting the bug
- TODO Chessboard calibration doesn't reject bad calibration points after sub-pixel
- TODO improve KLT edge handling
- TODO automate high level tests
* Move SURFPerformance into ValidationBoof
* Create logs for BoofCV performance
- TODO Mean-Shift common histogram model code for both code bases
---------------------------------------------
Date : 2013/06/21
Version : Alpha 0.15
- Improved automatic thresholding for calibration grids
- Fixed bug in Zhang99 calibration where skew was not being copied
- Fixed stereo calibration bug where if a target was not detected in right image it wouldn't be removed from the left
- Chessboard calibration
* Support for targets which are not symmetric. Requested by Karim Hammoudi.
* Much more tolerant of target which are visually small
* Handles cluttered backgrounds better
- Added support for OpenKinect in integration
* Added related example code and applications demonstrating how to process its data
- Can read/write PPM images
- Added DepthVisualOdometry for computing visual odometry from a Kinect
* Added several related classes and interfaces too
- Added MonocularPlaneVisualOdometry for computing 2D motion from a camera when traveling over a plane
* Two algorithms implement this interface
- Generalized VisualOdometry interface to allow for arbitrary transforms
- Cleaned up VisualOdometry and StereoVisualOdometry interfaces
- Automatic rescaling of images for visual odometry
* StereoVisualOdometryScaleInput
* MonocularPlaneVisualOdometryScaleInput
- Added VisualDepthParameters to specify calibration of RGB-D cameras
- Added MonoPlaneParameters to specify calibration of single camera with a known ground plane
- Added DistanceHomographyPixelSq so that the fit error for normalized homography can be computed in image pixels.
- Added MultiViewOps.decomposeHomography().
- Added more support for convert to/from 16bit BufferedImages
- Added DoNothingPixelTransform_F32 for those times when you don't want to do anything
- Added PairLineNorm for sets of line correspondences between two lines
- Added algorithms for computing induced homographies from planes
* Three points
* Line and a point
* Two lines
- Added NearestNeighborPixel_U16
- Added index setters and getters to GImageSingleBand
- CreateSyntheticOverheadView for converting an image into an overhead view when the scene is planar
- Added numBands to ImageDataType
- Fixed type-o in triangulation JavaDoc. Thanks tverbele
- Fixed bug in SIFT where a change in non-maximum behavior caused features to be detected too close to image border.
* Thanks lefman for pointing it out
- Fixed ConvertBufferedImage.orderBandsIntoRGB() for ABGR images. Thanks André Ambrósio Boechat
- Maven build working again. Thanks JensKapitza for the help.
- Moved boofcv/applet into boofcv/integration/applet
---------------------------------------------
Date : 2013/04/15
Version : Alpha 0.14
- Added histogram to ImageStatistics
- Calibration target's binary threshold is selected using image histogram to make it more tolerant to shadows
- Calibration grid size does not refer to number of black squares any more. Instead to number of square total.
- Added image enhancement operations
* Global histogram
* Local histogram
* Sharpen 4 and 8
* Demonstration to example directory
- Interface for V4L4J to provide webcam support
- ImageMiscOps
* added fillBorder()
- BinaryImageOps
* Changed API and algorithms used to label blobs and find their contour
* New algorithm is about 3x faster in all situations.
- Canny edge has been improved
* Can be configured to create a binary image output or a set of contours
* Conour pixels are now ordered and returned as a graph
- Fixed bug in FactoryImageBorder.value()
- Color Models (Added)
* Added HSV, YUV
* Added new example demonstrating simple color based segmentation
- XML Serialization
* Switched over to using XStream since XMLEncoder is broken in Java 1.7.
* XStream also produces easier to read XML
- Added ConfigFast. Configuration class for FAST feature detector
- Image Pyramids and Scale-Space
* Added additional functions to ImagePyramid interface that provide information on how the image is sample and the amount of blur in it
* There is no separate class for updating image pyramids any more. The image pyramid takes in the input image
* Scale-Space pyramids have been moved into the pyramid package instead of having its own
* Bug Fix: FeatureLaplacePyramid now looks for local maximum or minimum in searching across scales
* Removed GaussianScaleSpace class since it can now be represented using ImageFloatPyramid
- Added ExampleStereoDisparity3D and tweaked the first one
- Shape Fitting (Added)
* Fit polygon
* Fit ellipse
* Usage examples
- BRIEF description computation is 30% faster
- Made it easier to create mosaics from colored images and updated examples
- Generalized several classes so that images other than single band can be used
* VideoInterface
* SimpleImageSequence
- Added average down sampling and a related discrete image pyramid
- Android: YUV to RGB now works
- ExampleImageStitching has rendering code pushed into it
---------------------------------------------
Date : 2013/02/16
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
* Tweaked non-maximum suppression
- 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
- Point Trackers
* Renamed and changed function
* Created interface for extracting feature descriptions
* Added variant designed for two pass tracking
- 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
* Fixed multiple bugs/issues so that it detects targets more reliably
- 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
* Can get a list of unassociate destination features
* Can determine if the algorithm selects a unique match for source and destination
* 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.
- Non-Maximum supression
* Renamed FeatureExtractor to NonMaxSuppression
- Removed the parameter for requesting the number of returned features
* All algorithms contained a bug where the ignore border was being incorrectly enforced
* Added support for detecting maximums and minimums
- Fixed bugs in SortBestFeatures and added sort for negative peaks
- GeneralFeatureIntensity: Added flags to indicate if features are maximum or minimums
- Calibration package was missing from Maven build
- Removed maxMatches from greedy assocaition since its not part of Association interface and can be easily added
- Android
* ConvertNV21 - Convert camera preview images into BoofCV image types
* VisualizeImageData - Render different types of image information into a visible format
- Fixed bug in RemoveRadialPto*_* where it couldn't detect convergence
- 2D stabilization checks image fraction contained by points before spawning more points
- LaplacianEdge added suport for U8 in and F32 out
- Added kernel based (using LaplacianEdge) blob detector
- GridRansacLineDetector has support for S16 an F32
- Redesigned image stabilization and mosaic code
* Much easier to work with now and can be plugged in a high level
* Added a factory for creating related algorithms
- Stereo Disparity: support for ImageSInt16
---------------------------------------------
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