OpenCV 2009.08
The summer release, OpenCV 2.0 is done, Released Sept. 30, 2009
Dates:
Feature freeze Aug 15
Beta Release Sept. 15
Released Sept. 30, 2009
The goals in brief
- New C++ interface (with backward compatibility),
- Better Python interface with low-level capabilities.
- More 2D feature detectors and descriptors;
- Add 3D vision support:
- Better stereo support. 3D reconstruction, (If we can ...) image stitching.
- 3D feature detectors and descriptors.
- Application section:
- Human detector
- Camera location from chessboard/3D bounding box
- Better optical flow (dense, sparse), particle filtering, deformable templates.
- New functionality and optimizations in MLL, algorithmic and regression tests, better and more universal haartraining.
- Optimization and threading.
- Revised documentation.
- Highgui enhancements.
- Enhanced regression tests
... And in more details:
OpenCV Summer Release:
Dates:
Feature freeze July 31
Beta Released: Sept 14th. - Gold Release Sept 29, 2009
Keys:
Done;
In progress;
Um, maybe;
Left as an exercise for the user to implement
PLANS:
- General Structure:
(Probably past Beta) Provide way to build OpenCV statically, then the footprint will be variable and usually much smaller than now
- New Features
C++ interface
cxcore
cv
HighGUI
I/O for sructures, histograms
- Better python interface
In progress thanks to (James Bowman)
Move into OpenCV and deprecate SWIG only version -> selected in CMake either or both
Use this to expand unit test functions for OpenCV
- 2D features
HOG
Chamfer matching with orientation In progress thanks to Marius Muja
Keypoints (mostly thanks to LePetit group's great work in this area)
MSER -- list of contours ... how to extract keypoint from this
Fast detector *
SURF * D
Star *
Self-similar detector
- 3D features
Bundle Adjustment (by Phase Space / Sergey)
normals in grid (Gary)
normal based 3D patch (Gary)
SPIN
- Optical flow
Dense (Farnerback)
- MLL
Extreme trees
Reduce memory footprint
More convenient training via a data class
Nister trees (Patrick) Post Beta
FLANN or appropriate parts (Marius)
Generalized (boosted) cascade (generalizing Haar cascade -- not Haar or LBP features)
- Misc:
adaptive skin tracking
- Documentation
Move to one Latex source
Use to generate HTML, PDF
Add search function
Add user feedback/documentation bug system
Proof read -- Needs complet re-do
Put up
cxcore
cv
MLL
Aux
HighGUI
C++ Interface
C++ cxcore
cv
Aux nothing for new functions
HighGUI
Needs improvement on class descriptions
Create Python documenation
- High GUI
In memory .jpg, .png
move to C++ interface
visualizations, statistical data extensions
- Testing functions
Regression tests for all functions at least in python->OpenCv to make these easier to write
Bought new server for automated tests and builds
creating auto test system -> Usable results 3 weeks
Define user contribution process:
Put off to Future
- 2D features
Scale Invariant Feature Transform with Irregular Orientation Histogram Binning, Yan Cui, Nils Hasler, Thorsten Thorm ̈hlen, Hans-Peter Seidel (Feature_Point_Descriptors_SIFT_Improvement_CuiHasThoSei09igSIFT.pdf)
- Alpha channel, alternatives to contours RLE
- New alpha transparency (per pixel) added
- Introduce functions with advance ways of blending
- Mask channels
- 3D features
- Plane fit (delayed for integration with Radu's point cloud library -- more comprehensive approach)
- PFH, FPFH from Radu,
- 3D Delaunay,
- 3D convex hull,
- mesh generation,
- mesh simplification/subsampling
- Extend to using 2D XYZA grid as well as oct/kd trees
- 3D capture
- Probably by using silhouettes and then texture for cavities (?)
- Possibly with textures or phased light
- VSLAM
- Image stitching
- Probably by using silhouettes and then texture for cavities (?)
- Optical flow
- Variational optical flow
- MLL
- Tiechman's
- Kernel based gentle boost
- Feature selection engine
- Automatic parameter tuning
- Cross-validation, ROC curve generator
- Tiechman's
- High GUI
- move to using QT as the HighGUI interface look and feel
- Misc:
- Focus detector,
- Lighting/Specularity
- Look into:
Using Specularities for Recognition, Margarita Osadchy, David Jacobs, Ravi Ramamoorthi (stored on my disk as specularities.pdf)
Retrieving Multiple Light Sources in the Presence of Specular Reflections and Texture, Pascal Lagger and Pascal Fua (Specular_multiple_sources_Fua08a-1.pdf)
3D Pose Refinement from Reflections, Pascal Lagger, Mathieu Salzmann, Vincent Lepetit, Pascal Fua (Specular_lagger_cvpr08.pdf)
Detecting Specular Surfaces on Natural Images, Andrey DelPozo, Silvio Savarese
- Look into:
- Histograms
- Insert value function with interpolation
- Automatic bin size adjustment for recognition performance using a test set
Examples
Here's the new proposed STL/Template matrix interface for OpenCV being used for debugging SVD (Note that we will preserve the old interface to OpenCV).
// matrix A comes in
SVD svd(A);
int n = A.rows;
double a = norm(svd.u*svd.u.t() - Mat::eye(n,n), CV_C);
double b = norm(svd.vt*svd.vt.t() - Mat::eye(n,n), CV_C);
int nz = countNonZero(svd.w >= 0);
double c = norm(svd.u*Mat::diag(svd.w)*svd.vt - Mat::eye(n,n), CV_C);
CV_Assert( a < 1e-5 && b < 1e-5 && c < 1e-5 && nz == n );