From 349ff631a5d30e979608581adaf75abf7450643b Mon Sep 17 00:00:00 2001 From: Ilya Krylov Date: Wed, 7 May 2014 20:53:07 +0400 Subject: [PATCH] Added sample of work of Fisheye::undistortImage and its description to documentation. Removed readPoints and readExtrinsic (useless) --- ...mera_calibration_and_3d_reconstruction.rst | 32 +++ .../calib3d/doc/pics/fisheye_undistorted.jpg | Bin 0 -> 86109 bytes modules/calib3d/test/test_fisheye.cpp | 226 +++++------------- 3 files changed, 88 insertions(+), 170 deletions(-) create mode 100644 modules/calib3d/doc/pics/fisheye_undistorted.jpg diff --git a/modules/calib3d/doc/camera_calibration_and_3d_reconstruction.rst b/modules/calib3d/doc/camera_calibration_and_3d_reconstruction.rst index e020b21e34..20a731f958 100644 --- a/modules/calib3d/doc/camera_calibration_and_3d_reconstruction.rst +++ b/modules/calib3d/doc/camera_calibration_and_3d_reconstruction.rst @@ -1686,6 +1686,38 @@ Computes undistortion and rectification maps for image transform by cv::remap(). :param map2: The second output map. +Fisheye::undistortImage +------------- +Transforms an image to compensate for fisheye lens distortion. + +.. ocv:function:: void Fisheye::undistortImage(InputArray distorted, OutputArray undistorted, + InputArray K, InputArray D, InputArray Knew = cv::noArray(), const Size& new_size = Size()) + + :param distorted: image with fisheye lens distortion. + + :param K: Camera matrix :math:`K = \vecthreethree{f_x}{0}{c_x}{0}{f_y}{c_y}{0}{0}{_1}`. + + :param D: Input vector of distortion coefficients :math:`(k_1, k_2, k_3, k_4)`. + + :param Knew: Camera matrix of the distorted image. By default, it is the same as ``cameraMatrix`` but you may additionally scale and shift the result by using a different matrix. + + :param undistorted: Output image with compensated fisheye lens distortion. + +The function transforms an image to compensate radial and tangential lens distortion. + +The function is simply a combination of +:ocv:func:`Fisheye::initUndistortRectifyMap` (with unity ``R`` ) and +:ocv:func:`remap` (with bilinear interpolation). See the former function for details of the transformation being performed. + +See below the results of undistortImage. + * a\) result of :ocv:func:`undistort` of perspective camera model (all possible coefficients (k_1, k_2, k_3, k_4, k_5, k_6) of distortion were optimized under calibration) + * b\) result of :ocv:func:`Fisheye::undistrortImage` of fisheye camera model (all possible coefficients (k_1, k_2, k_3, k_4) of fisheye distortion were optimized under calibration) + * c\) original image was captured with fisheye lens + +Pictures a) and b) almost the same. But if we consider points of image located far from the center of image, we can notice that on image a) these points are distorted. + +.. image:: pics/fisheye_undistorted.jpg + Fisheye::estimateNewCameraMatrixForUndistortRectify ---------------------------------------------------------- diff --git a/modules/calib3d/doc/pics/fisheye_undistorted.jpg b/modules/calib3d/doc/pics/fisheye_undistorted.jpg new file mode 100644 index 0000000000000000000000000000000000000000..bfdc9afd5cbd297c10bc43a969a84d0bd3a5091d GIT binary patch literal 86109 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 >& objectPoints, - std::vector >& imagePoints, - const std::string& path, const int n_images); - - void readExtrinsics(const std::string& file, cv::OutputArray _R, cv::OutputArray _T, cv::OutputArray _R1, cv::OutputArray _R2, - cv::OutputArray _P1, cv::OutputArray _P2, cv::OutputArray _Q); - cv::Mat mergeRectification(const cv::Mat& l, const cv::Mat& r); }; @@ -71,16 +63,16 @@ TEST_F(FisheyeTest, undistortImage) { cv::Matx33d K = this->K; cv::Mat D = cv::Mat(this->D); - std::string file = combine(datasets_repository_path, "image000001.png"); + std::string file = combine(datasets_repository_path, "/calib-3_stereo_from_JY/left/stereo_pair_014.jpg"); cv::Matx33d newK = K; cv::Mat distorted = cv::imread(file), undistorted; { newK(0, 0) = 100; newK(1, 1) = 100; cv::Fisheye::undistortImage(distorted, undistorted, K, D, newK); - cv::Mat correct = cv::imread(combine(datasets_repository_path, "test_undistortImage/new_f_100.png")); + cv::Mat correct = cv::imread(combine(datasets_repository_path, "new_f_100.png")); if (correct.empty()) - CV_Assert(cv::imwrite(combine(datasets_repository_path, "test_undistortImage/new_f_100.png"), undistorted)); + CV_Assert(cv::imwrite(combine(datasets_repository_path, "new_f_100.png"), undistorted)); else EXPECT_MAT_NEAR(correct, undistorted, 1e-10); } @@ -88,9 +80,9 @@ TEST_F(FisheyeTest, undistortImage) double balance = 1.0; cv::Fisheye::estimateNewCameraMatrixForUndistortRectify(K, D, distorted.size(), cv::noArray(), newK, balance); cv::Fisheye::undistortImage(distorted, undistorted, K, D, newK); - cv::Mat correct = cv::imread(combine(datasets_repository_path, "test_undistortImage/balance_1.0.png")); + cv::Mat correct = cv::imread(combine(datasets_repository_path, "balance_1.0.png")); if (correct.empty()) - CV_Assert(cv::imwrite(combine(datasets_repository_path, "test_undistortImage/balance_1.0.png"), undistorted)); + CV_Assert(cv::imwrite(combine(datasets_repository_path, "balance_1.0.png"), undistorted)); else EXPECT_MAT_NEAR(correct, undistorted, 1e-10); } @@ -99,9 +91,9 @@ TEST_F(FisheyeTest, undistortImage) double balance = 0.0; cv::Fisheye::estimateNewCameraMatrixForUndistortRectify(K, D, distorted.size(), cv::noArray(), newK, balance); cv::Fisheye::undistortImage(distorted, undistorted, K, D, newK); - cv::Mat correct = cv::imread(combine(datasets_repository_path, "test_undistortImage/balance_0.0.png")); + cv::Mat correct = cv::imread(combine(datasets_repository_path, "balance_0.0.png")); if (correct.empty()) - CV_Assert(cv::imwrite(combine(datasets_repository_path, "test_undistortImage/balance_0.0.png"), undistorted)); + CV_Assert(cv::imwrite(combine(datasets_repository_path, "balance_0.0.png"), undistorted)); else EXPECT_MAT_NEAR(correct, undistorted, 1e-10); } @@ -206,10 +198,21 @@ TEST_F(FisheyeTest, Calibration) { const int n_images = 34; - std::vector > imagePoints; - std::vector > objectPoints; + std::vector > imagePoints(n_images); + std::vector > objectPoints(n_images); - readPoints(objectPoints, imagePoints, combine(datasets_repository_path, "calib-3_stereo_from_JY/left"), n_images); + const std::string folder =combine(datasets_repository_path, "calib-3_stereo_from_JY"); + cv::FileStorage fs_left(combine(folder, "left.xml"), cv::FileStorage::READ); + CV_Assert(fs_left.isOpened()); + for(int i = 0; i < n_images; ++i) + fs_left[cv::format("image_%d", i )] >> imagePoints[i]; + fs_left.release(); + + cv::FileStorage fs_object(combine(folder, "object.xml"), cv::FileStorage::READ); + CV_Assert(fs_object.isOpened()); + for(int i = 0; i < n_images; ++i) + fs_object[cv::format("image_%d", i )] >> objectPoints[i]; + fs_object.release(); int flag = 0; flag |= cv::Fisheye::CALIB_RECOMPUTE_EXTRINSIC; @@ -230,10 +233,22 @@ TEST_F(FisheyeTest, Homography) { const int n_images = 1; - std::vector > imagePoints; - std::vector > objectPoints; + std::vector > imagePoints(n_images); + std::vector > objectPoints(n_images); + + const std::string folder =combine(datasets_repository_path, "calib-3_stereo_from_JY"); + cv::FileStorage fs_left(combine(folder, "left.xml"), cv::FileStorage::READ); + CV_Assert(fs_left.isOpened()); + for(int i = 0; i < n_images; ++i) + fs_left[cv::format("image_%d", i )] >> imagePoints[i]; + fs_left.release(); + + cv::FileStorage fs_object(combine(folder, "object.xml"), cv::FileStorage::READ); + CV_Assert(fs_object.isOpened()); + for(int i = 0; i < n_images; ++i) + fs_object[cv::format("image_%d", i )] >> objectPoints[i]; + fs_object.release(); - readPoints(objectPoints, imagePoints, combine(datasets_repository_path, "calib-3_stereo_from_JY/left"), n_images); cv::internal::IntrinsicParams param; param.Init(cv::Vec2d(cv::max(imageSize.width, imageSize.height) / CV_PI, cv::max(imageSize.width, imageSize.height) / CV_PI), cv::Vec2d(imageSize.width / 2.0 - 0.5, imageSize.height / 2.0 - 0.5)); @@ -279,10 +294,21 @@ TEST_F(FisheyeTest, EtimateUncertainties) { const int n_images = 34; - std::vector > imagePoints; - std::vector > objectPoints; + std::vector > imagePoints(n_images); + std::vector > objectPoints(n_images); - readPoints(objectPoints, imagePoints, combine(datasets_repository_path, "calib-3_stereo_from_JY/left"), n_images); + const std::string folder =combine(datasets_repository_path, "calib-3_stereo_from_JY"); + cv::FileStorage fs_left(combine(folder, "left.xml"), cv::FileStorage::READ); + CV_Assert(fs_left.isOpened()); + for(int i = 0; i < n_images; ++i) + fs_left[cv::format("image_%d", i )] >> imagePoints[i]; + fs_left.release(); + + cv::FileStorage fs_object(combine(folder, "object.xml"), cv::FileStorage::READ); + CV_Assert(fs_object.isOpened()); + for(int i = 0; i < n_images; ++i) + fs_object[cv::format("image_%d", i )] >> objectPoints[i]; + fs_object.release(); int flag = 0; flag |= cv::Fisheye::CALIB_RECOMPUTE_EXTRINSIC; @@ -360,12 +386,13 @@ TEST_F(FisheyeTest, rectify) cv::Mat rectification = mergeRectification(lundist, rundist); - cv::Mat correct = cv::imread(combine_format(folder, "test_rectify/rectification_AB_%03d.png", i)); + cv::Mat correct = cv::imread(combine_format(datasets_repository_path, "rectification_AB_%03d.png", i)); + if (correct.empty()) - cv::imwrite(combine_format(folder, "test_rectify/rectification_AB_%03d.png", i), rectification); - else - EXPECT_MAT_NEAR(correct, rectification, 1e-10); - } + cv::imwrite(combine_format(datasets_repository_path, "rectification_AB_%03d.png", i), rectification); + else + EXPECT_MAT_NEAR(correct, rectification, 1e-10); + } } TEST_F(FisheyeTest, stereoCalibrate) @@ -396,58 +423,6 @@ TEST_F(FisheyeTest, stereoCalibrate) fs_object[cv::format("image_%d", i )] >> objectPoints[i]; fs_object.release(); - std::ofstream fs; - - for (size_t i = 0; i < leftPoints.size(); i++) - { - std::string ss = combine(folder, "left"); - ss = combine_format(ss, "%d", i); - fs.open(ss.c_str()); - CV_Assert(fs.is_open()); - for (size_t j = 0; j < leftPoints[i].size(); j++) - { - double x = leftPoints[i][j].x; - double y = leftPoints[i][j].y; - fs << std::setprecision(15) << x << "; " << y; - fs << std::endl; - } - fs.close(); - } - - for (size_t i = 0; i < rightPoints.size(); i++) - { - std::string ss = combine(folder, "right"); - ss = combine_format(ss, "%d", i); - fs.open(ss.c_str()); - CV_Assert(fs.is_open()); - for (size_t j = 0; j < rightPoints[i].size(); j++) - { - double x = rightPoints[i][j].x; - double y = rightPoints[i][j].y; - fs << std::setprecision(15) << x << "; " << y; - fs << std::endl; - } - fs.close(); - } - - for (size_t i = 0; i < objectPoints.size(); i++) - { - std::string ss = combine(folder, "object"); - ss = combine_format(ss, "%d", i); - fs.open(ss.c_str()); - CV_Assert(fs.is_open()); - for (size_t j = 0; j < objectPoints[i].size(); j++) - { - double x = objectPoints[i][j].x; - double y = objectPoints[i][j].y; - double z = objectPoints[i][j].z; - fs << std::setprecision(15) << x << "; " << y; - fs << std::setprecision(15) << "; " << z; - fs << std::endl; - } - fs.close(); - } - cv::Matx33d K1, K2, R; cv::Vec3d T; cv::Vec4d D1, D2; @@ -516,59 +491,6 @@ TEST_F(FisheyeTest, stereoCalibrateFixIntrinsic) fs_object[cv::format("image_%d", i )] >> objectPoints[i]; fs_object.release(); - - std::ofstream fs; - - for (size_t i = 0; i < leftPoints.size(); i++) - { - std::string ss = combine(folder, "left"); - ss = combine_format(ss, "%d", i); - fs.open(ss.c_str()); - CV_Assert(fs.is_open()); - for (size_t j = 0; j < leftPoints[i].size(); j++) - { - double x = leftPoints[i][j].x; - double y = leftPoints[i][j].y; - fs << std::setprecision(15) << x << "; " << y; - fs << std::endl; - } - fs.close(); - } - - for (size_t i = 0; i < rightPoints.size(); i++) - { - std::string ss = combine(folder, "right"); - ss = combine_format(ss, "%d", i); - fs.open(ss.c_str()); - CV_Assert(fs.is_open()); - for (size_t j = 0; j < rightPoints[i].size(); j++) - { - double x = rightPoints[i][j].x; - double y = rightPoints[i][j].y; - fs << std::setprecision(15) << x << "; " << y; - fs << std::endl; - } - fs.close(); - } - - for (size_t i = 0; i < objectPoints.size(); i++) - { - std::string ss = combine(folder, "object"); - ss = combine_format(ss, "%d", i); - fs.open(ss.c_str()); - CV_Assert(fs.is_open()); - for (size_t j = 0; j < objectPoints[i].size(); j++) - { - double x = objectPoints[i][j].x; - double y = objectPoints[i][j].y; - double z = objectPoints[i][j].z; - fs << std::setprecision(15) << x << "; " << y; - fs << std::setprecision(15) << "; " << z; - fs << std::endl; - } - fs.close(); - } - cv::Matx33d R; cv::Vec3d T; @@ -647,42 +569,6 @@ std::string FisheyeTest::combine_format(const std::string& item1, const std::str return std::string(buffer); } -void FisheyeTest::readPoints(std::vector >& objectPoints, - std::vector >& imagePoints, - const std::string& path, const int n_images) -{ - objectPoints.resize(n_images); - imagePoints.resize(n_images); - - cv::FileStorage fs1(combine(path, "objectPoints.xml"), cv::FileStorage::READ); - CV_Assert(fs1.isOpened()); - for (size_t i = 0; i < objectPoints.size(); ++i) - { - fs1[cv::format("image_%d", i)] >> objectPoints[i]; - } - fs1.release(); - - cv::FileStorage fs2(combine(path, "imagePoints.xml"), cv::FileStorage::READ); - CV_Assert(fs2.isOpened()); - for (size_t i = 0; i < imagePoints.size(); ++i) - { - fs2[cv::format("image_%d", i)] >> imagePoints[i]; - } - fs2.release(); -} - -void FisheyeTest::readExtrinsics(const std::string& file, cv::OutputArray _R, cv::OutputArray _T, cv::OutputArray _R1, cv::OutputArray _R2, - cv::OutputArray _P1, cv::OutputArray _P2, cv::OutputArray _Q) -{ - cv::FileStorage fs(file, cv::FileStorage::READ); - CV_Assert(fs.isOpened()); - - cv::Mat R, T, R1, R2, P1, P2, Q; - fs["R"] >> R; fs["T"] >> T; fs["R1"] >> R1; fs["R2"] >> R2; fs["P1"] >> P1; fs["P2"] >> P2; fs["Q"] >> Q; - if (_R.needed()) R.copyTo(_R); if(_T.needed()) T.copyTo(_T); if (_R1.needed()) R1.copyTo(_R1); if (_R2.needed()) R2.copyTo(_R2); - if(_P1.needed()) P1.copyTo(_P1); if(_P2.needed()) P2.copyTo(_P2); if(_Q.needed()) Q.copyTo(_Q); -} - cv::Mat FisheyeTest::mergeRectification(const cv::Mat& l, const cv::Mat& r) { CV_Assert(l.type() == r.type() && l.size() == r.size());