生活随笔
收集整理的這篇文章主要介紹了
影像畸变矫正带扭曲参数s(skew)像素比例ρ
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
影像畸變矯正帶扭曲參數s(skew)像素比例ρ
OpenCV自帶糾正方法不能矯正扭曲參數s和ρ。因此自己寫代碼來完成糾正。包括OpenCV的畸變模型,和Smart3D的畸變模型,其原理見影像畸變糾正詳解
remap()不懂的可以看remap詳解
Mat src_cpu = imread(in_filename);cv::Mat mapx, mapy;mapx.create(src_cpu.size(), CV_32FC1);mapy.create(src_cpu.size(), CV_32FC1);float u0 = src_cpu.size().width / 2 + cx;float v0 = src_cpu.size().height / 2 + cy;double u0 = src_cpu.size().width / 2 + cx;double v0 = src_cpu.size().height / 2 + cy;double k1, k2, k3, p1, p2;// Smart3d model//k1 = distortionArr[0];//k2 = distortionArr[1];//k3 = distortionArr[2];//p1 = distortionArr[3];//p2 = distortionArr[4];//for (int i = 0; i<src_cpu.cols; ++i)// for (int j = 0; j < src_cpu.rows; ++j)// {// double x = (i - u0) / f, y = (j - v0) / f;// double x2 = x*x, y2 = y*y;// double r2 = x2 + y2, _2xy = 2 * x*y;// double kr = (1 + ((k3*r2 + k2)*r2 + k1)*r2);// double xd = (x*kr + p2*_2xy + p1*(r2 + 2 * x2));// double yd = (y*kr + p2*(r2 + 2 * y2) + p1*_2xy);// double u = f*xd + u0 + skew*yd;// double v = f*pixelRadio*yd + v0;// mapx.at<float>(j, i) = u;// mapy.at<float>(j, i) = v;// }// OpenCV modelk1 = distortionArr[0];k2 = distortionArr[1];p1 = distortionArr[2];p2 = distortionArr[3];k3 = distortionArr[4];for(int i = 0;i<src_cpu.cols;++i)for (int j = 0; j < src_cpu.rows; ++j){double x = (i-u0)/f, y = (j - v0) / f;double x2 = x*x, y2 = y*y;double r2 = x2 + y2, _2xy = 2 * x*y;double kr = (1 + ((k3*r2 + k2)*r2 + k1)*r2);double xd = (x*kr + p1*_2xy + p2*(r2 + 2 * x2));double yd = (y*kr + p1*(r2 + 2 * y2) + p2*_2xy);double u = f*xd + u0 + skew*yd;double v = f*pixelRadio*yd + v0;mapx.at<float>(j, i) = u;mapy.at<float>(j, i) = v;}// GPU versioncv::cuda::GpuMat src(src_cpu);cv::cuda::GpuMat distortion(src.size(), src.type());cv::Mat result;::cv::cuda::GpuMat m_mapx;::cv::cuda::GpuMat m_mapy;m_mapx = ::cv::cuda::GpuMat(mapx);m_mapy = ::cv::cuda::GpuMat(mapy);::cv::cuda::remap(src, distortion, m_mapx, m_mapy, INTER_LINEAR);distortion.download(result);imshow("img", src_cpu);imshow("undistort", result);waitKey(0);
總結
以上是生活随笔為你收集整理的影像畸变矫正带扭曲参数s(skew)像素比例ρ的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。