Commit Graph

64 Commits

Author SHA1 Message Date
Vadim Pisarevsky
8f15a609af
mostly removed obsolete C API from calib3d (at least at the interface level) (#13081) 2018-11-09 16:12:22 +03:00
Wenfeng CAI
31be03a805 Merge pull request #12772 from xoox:calib-release-object
More accurate pinhole camera calibration with imperfect planar target (#12772)
43 commits:

* Add derivatives with respect to object points

Add an output parameter to calculate derivatives of image points with
respect to 3D coordinates of object points. The output jacobian matrix
is a 2Nx3N matrix where N is the number of points.

This commit introduces incompatibility to old function signature.

* Set zero for dpdo matrix before using

dpdo is a sparse matrix with only non-zero value close to major
diagonal. Set it to zero because only elements near major diagonal are
computed.

* Add jacobian columns to projectPoints()

The output jacobian matrix of derivatives with respect to coordinates of
3D object points are added. This might break callers who assume the
columns of jacobian matrix.

* Adapt test code to updated project functions

The test cases for projectPoints() and cvProjectPoints2() are updated to
fit new function signatures.

* Add accuracy test code for dpdo

* Add badarg test for dpdo

* Add new enum item for new calibration method

CALIB_RELEASE_OBJECT is used to whether to release 3D coordinates of
object points. The method was proposed in: K. H. Strobl and G. Hirzinger.
"More Accurate Pinhole Camera Calibration with Imperfect Planar Target".
In Proceedings of the IEEE International Conference on Computer Vision
(ICCV 2011), 1st IEEE Workshop on Challenges and Opportunities in Robot
Perception, Barcelona, Spain, pp. 1068-1075, November 2011.

* Add releasing object method into internal function

It's a simple extension of the standard calibration scheme. We choose to
fix the first and last object point and a user-selected fixed point.

* Add interfaces for extended calibration method

* Refine document for calibrateCamera()

When releasing object points, only the z coordinates of the
objectPoints[0].back is fixed.

* Add link to strobl2011iccv paper

* Improve documentation for calibrateCamera()

* Add implementations of wrapping calibrateCamera()

* Add checking for params of new calibration method

If input parameters are not qualified, then fall back to standard
calibration method.

* Add camera calibration method of releasing object

The current implementation is equal to or better than
https://github.com/xoox/calibrel

* Update doc for CALIB_RELEASE_OBJECT

CALIB_USE_QR or CALIB_USE_LU could be used for faster calibration with
potentially less precise and less stable in some rare cases.

* Add RELEASE_OBJECT calibration to tutorial code

To select the calibration method of releasing object points, a command
line parameter `-d=<number>` should be provided.

* Update tutorial doc for camera_calibration

If the method of releasing object points is merged into OpenCV. It will
be expected to be firstly released in 4.1, I think.

* Reduce epsilon for cornerSubPix()

Epsilon of 0.1 is a bigger one. Preciser corner positions are required
with calibration method of releasing object.

* Refine camera calibration tutorial

The hypothesis coordinates are used to indicate which distance must be
measured between two specified object points.

* Update sample calibration code method selection

Similar to camera_calibration tutorial application, a command line
argument `-dt=<number>` is used to select the calibration method.

* Add guard to flags of cvCalibrateCamera2()

cvCalibrateCamera2() doesn't accept CALIB_RELEASE_OBJECT unless overload
interface is added in the future.

* Simplify fallback when iFixedPoint is out of range

* Refactor projectPoints() to keep compatibilities

* Fix arg string "Bad rvecs header"

* Read calibration flags from test data files

Instead of being hard coded into source file, the calibration flags will
be read from test data files.
opencv_extra/testdata/cv/cameracalibration/calib?.dat must be sync with
the test code.

* Add new C interface of cvCalibrateCamera4()

With this new added C interface, the extended calibration method with
CALIB_RELEASE_OBJECT can be called by C API.

* Add regression test of extended calibration method

It has been tested with new added test data in xoox:calib-release-object
branch of opencv_extra.

* Fix assertion in test_cameracalibration.cpp

The total number of refined 3D object coordinates is checked.

* Add checker for iFixedPoint in cvCalibrateCamera4

If iFixedPoint is out of rational range, fall back to standard method.

* Fix documentation for overloaded calibrateCamera()

* Remove calibration flag of CALIB_RELEASE_OBJECT

The method selection is based on the range of the index of fixed point.
For minus values, standard calibration method will be chosen.  Values in
a rational range will make the object-releasing calibration method
selected.

* Use new interfaces instead of function overload

Existing interfaces are preserved and new interfaces are added. Since
most part of the code base are shared, calibrateCamera() is now a
wrapper function of calibrateCameraRO().

* Fix exported name of calibrateCameraRO()

* Update documentation for calibrateCameraRO()

The circumstances where this method is mostly helpful are described.

* Add note on the rigidity of the calibration target

* Update documentation for calibrateCameraRO()

It is clarified that iFixedPoint is used as a switch to select
calibration method. If input data are not qualified, exceptions will be
thrown instead of fallback scheme.

* Clarify iFixedPoint as switch and remove fallback

iFixedPoint is now used as a switch for calibration method selection. No
fallback scheme is utilized anymore. If the input data are not
qualified, exceptions will be thrown.

* Add badarg test for object-releasing method

* Fix document format of sample list

List items of same level should be indented the same way. Otherwise they
will be formatted as nested lists by Doxygen.

* Add brief intro for objectPoints and imagePoints

* Sync tutorial to sample calibration code

* Update tutorial compatibility version to 4.0
2018-10-25 19:38:55 +03:00
Alexander Alekhin
8f1f4273a2 calib3d: move undistort files from imgproc 2018-10-05 07:52:21 +00:00
Vladislav Sovrasov
ef7833a271 calib3d: add CALIB_FIX_TANGENT_DIST flag to stereoCalibrate 2017-08-25 13:05:16 +03:00
sourin
a34fbf7bb1 Fixed identifiers warns 2016-09-30 15:16:29 +05:30
Vladislav Sovrasov
46fb46c54e Add an extended version of CalibrateCamera function 2016-06-07 12:31:11 +03:00
Thomas Dunker
6882c10b45 Extension of the camera distortion model for tilted image sensors (Scheimpflug condition) including test 2015-12-14 15:20:34 +01:00
Pavel Rojtberg
4c251bd260 CvLevMarq: add solve method to interface 2015-12-10 23:02:18 +01:00
Maksim Shabunin
c5a698fb54 Doxygen documentation: calib3d and features2d modules 2014-12-01 15:47:13 +03:00
Vadim Pisarevsky
887a950243 Merge pull request #3116 from shubhra:master 2014-08-22 07:15:40 +00:00
Shubhra Pandit
6ca893be23 Adding feature 1544 and 1557
-cv::findHomography added a parameter for RANSAC iterations
 -cv::findHomography added a parameter for RANSAC confidence
2014-08-17 13:06:06 -04:00
edgarriba
9cad1dfa0d Update C headers for DLS 2014-07-25 11:49:20 +02:00
Adrien BAK
c5c3fd4443 modify signature of stereoCalibrate for consistency 2013-12-17 14:53:44 +09:00
Roman Donchenko
9ed475cf52 War on Whitespace, master edition: file endings. 2013-08-27 14:23:26 +04:00
Andrey Kamaev
e5a33723fc Move C API of opencv_calib3d to separate file 2013-04-11 21:00:17 +04:00
Andrey Kamaev
a42a0f5fca Added compatibility headers 2013-03-13 17:26:56 +04:00
Andrey Kamaev
ad5cddc007 Main module headers are moved 1 level up
e.g. <opencv2/core/core.hpp> become <opencv2/core.hpp>

Also renamed <opencv2/core/opengl_interop.hpp> to <opencv2/core/opengl.hpp>
2013-03-13 17:26:56 +04:00
Vadim Pisarevsky
df89f30b4a removed preset parameter in createStereoBM, updated stereo_match sample 2013-03-02 02:17:49 +04:00
Vadim Pisarevsky
b6efe30527 new API for StereoMatchers 2013-03-01 02:24:46 +04:00
alegarda
62655b05f4 Indentation ok 2013-02-21 15:25:22 +01:00
alegarda
76d03fccb9 Added Thin Prism Distortion Model
Only the code.
2013-02-20 15:11:47 +01:00
Bo Li
956a029ede added code, test and doc for five-point algorithm 2012-12-26 18:58:50 +01:00
OpenCV Buildbot
81f826db2b Normalize line endings and whitespace 2012-10-17 15:57:49 +04:00
Andrey Kamaev
eb2f1f81ed Fixed hundreds of documentation problems 2012-05-28 07:36:14 +00:00
Vadim Pisarevsky
beb7fc3c92 a LOT of obsolete stuff has been moved to the legacy module. 2012-03-30 12:19:25 +00:00
Ilya Lysenkov
e7b4353505 Added termination criteria as a calibrateCamera() parameter 2012-03-29 17:19:15 +00:00
Ilya Lysenkov
f29912b501 Added wrappers of cvCorrectMatches (#1350) 2012-03-29 13:21:24 +00:00
Ilya Lysenkov
37db334f8a Added wrappers of cvTriangulatePoints() 2012-03-29 10:39:06 +00:00
Ilya Lysenkov
207e46b425 Restored findCirclesGridDefault() for backward compatibility 2012-03-13 09:38:00 +00:00
Ilya Lysenkov
1252671c9d Added a full Python wrapper of findCirclesGrid 2012-03-12 11:40:46 +00:00
Alexander Shishkov
c11551a510 added P3P method
added test for solvePnP
changed test for solvePnPRansac
fixed bug with mutex solvePnPRansac
2011-12-26 12:59:07 +00:00
Alexander Shishkov
c5d8ec4ac0 first version of ePnP code 2011-12-20 11:33:12 +00:00
Vadim Pisarevsky
282c3044e6 exported C++ stereoRectify in Python 2011-10-05 00:14:43 +00:00
Vadim Pisarevsky
1badec0b2d eliminated opencv_extra_api.hpp (all the functionality is moved to the regular OpenCV headers) 2011-07-18 16:31:30 +00:00
Vadim Pisarevsky
2dea07f9f8 repaired Python bindings for functions using InputOutputArray 2011-07-14 14:13:10 +00:00
Vadim Pisarevsky
5bb8076d7d added centerPrincipalPoint=false to getOptimalNewCameraMatrix (ticket #1199) 2011-07-07 21:38:21 +00:00
Vadim Pisarevsky
f4dc4b43e4 fixed calibrateCamera API (ticket #1143) 2011-06-17 21:21:01 +00:00
Vadim Pisarevsky
6229af93d6 corrected estimateAffine3D parameter name: outliers=>inliers (ticket #1141) 2011-06-17 19:12:21 +00:00
Vadim Pisarevsky
2d2b8a496e renamed "None()" to "noArray()" to avoid conflicts with X11 (ticket #1122) 2011-06-08 06:55:04 +00:00
Vadim Pisarevsky
fcd2a0c3d3 fixed VS2010 compile warnings and errors 2011-06-06 15:15:30 +00:00
Vadim Pisarevsky
0c877f62e9 replaced "const InputArray&" => "InputArray"; made InputArray and OutputArray references. added "None()" constant (no array()). 2011-06-06 14:51:27 +00:00
Ilya Lysenkov
a685be3ea9 Added extra argument for BlobDetector in findCirclesGrid 2011-05-06 14:02:07 +00:00
Vadim Pisarevsky
d02a0cab48 updated OpenCV version to 2.2.9; added missing cv::convertPointsHomogeneous for backward compatibility; fixed bug #952 2011-05-02 22:20:22 +00:00
Vadim Pisarevsky
83efef4b9a added overloaded variants of findHomography & findFundamentalMat for backward compatibility 2011-04-23 12:49:14 +00:00
Vadim Pisarevsky
abeeb40d46 a big patch; use special proxy types (Input/OutputArray, Input/OutputArrayOfArrays) for passing in vectors, matrices etc. 2011-04-17 13:14:45 +00:00
Ilya Lysenkov
37cd2b6f25 Implemented new algorithm for asymmetric circles pattern detection. Use flag CALIB_CB_CLUSTERING. 2011-04-15 15:33:11 +00:00
Alexander Shishkov
04461a53f1 added solvePnPRansac method 2011-03-05 00:18:49 +00:00
Vadim Pisarevsky
65a7f13af3 replaced alloca() (a.k.a. cvStackAlloc) with AutoBuffer or vector() everywhere. cvStackAlloc() is still defined, but we do not need alloca() anymore to compile and run OpenCV (fixes #889 and may be some others) 2011-02-18 10:29:57 +00:00
Vadim Pisarevsky
061b49e0b2 reworked nearly all of the OpenCV tests (except for opencv_gpu tests) - they now use the Google Test engine. 2011-02-09 20:55:11 +00:00
Ilya Lysenkov
f8e9f65ea8 Added detection of asymmetric circles' pattern 2011-02-07 07:57:32 +00:00