当前位置:   article > 正文

针孔相机的畸变模型与opencv手动去畸变代码,畸变矫正_opencv坐标点去畸变

opencv坐标点去畸变

为什么要加入透镜?

小孔成像当然简单,但是只有一条光线投射到胶片上,图像暗淡,透镜将多条光线聚焦到胶片上,增加了照片的亮度,但同时会带来畸变、失焦等影响。

针孔相机的畸变模型

径向畸变

在实际拍摄的照片中,摄像机的透镜使得真实环境中的一条直线在图片中变成了曲线(往里弯称桶形畸变;往外弯称枕形畸变)。越靠近图像的边缘,这种现象越明显。由于实际的透镜往往是中心对称的,这使得不规则的畸变通常径向对称。主要分为桶形畸变枕形畸变。

数学模型r=x^2+y^2,此处x,y,xd,yd均为归一化像平面上的坐标。

切向畸变

机械组过程中,透镜和成像平面不平行会引入切向畸变。

数学模型r=x^2+y^2,此处x,y,xd,yd均为归一化像平面上的坐标。

归一化像平面

 

实际上我们使用的针孔相机模型是假设成像位置在相机前方z=f的平面上,否则成像为倒像,且会带来负号,会使模型复杂,相机为我们把图像自动转化成了正向,也简化了模型。相机前方z=1的平面称为归一化像平面,畸变模型是在归一化像平面上讨论的。

畸变过程和去畸变过程

畸变过程

1.三维空间点先投影到归一化像平面(如上图所示),归一化坐标为[x,y]T。

2.对归一化平面上的点计算径向畸变和切向畸变。

3.将畸变后的点通过内参数矩阵投影到像素平面。

ud = fx*xdistorted+cx

vd = fy*ydistorted+cy

此处ud,vd为畸变图像上像素点坐标,现要找到ud,vd对应的无畸变像素点,然后赋值即可。

去畸变

新建一张空白图像,该图像为无畸变的像素点存储图像,遍历空白图像上的每一个像素点,找到对应的发生畸变后的对应像素点。

1.将空白图像上的每一个像素点(设W,H)投影到归一化像平面。

x = (W-cx)/fx        y = (H-cy)/fy        r=\sqrt{x^{2}+y^{2}}

2.模拟畸变过程,找到发生畸变后的对应点(与畸变过程2 3一致)

ud = fx*xdistorted+cx

vd = fy*ydistorted+cy

3.将ud,vd赋值给空白图像上的W,H位置上的像素点,即可完成去畸变。

opencv代码(xu,yu即x,y,代表归一化平面无畸变点坐标)

没有用到k3和p1,p2,需要使用只需加上即可

  1. #include <opencv.hpp>
  2. using namespace std;
  3. using namespace cv;
  4. int main()
  5. {
  6. Mat src,gray;
  7. src = imread("C://Users/86182/Desktop/新建文件夹/16.bmp");
  8. cvtColor(src, gray, COLOR_BGR2GRAY);
  9. Mat trans = Mat::zeros(240, 320, CV_8UC1);
  10. float xu, yu,xd,yd,r,cx = 148.2546,cy=122.5429,fx = 282.971,fy = 282.1993;
  11. float k1 = -0.4082, k2 = 0.2088;
  12. int ud, vd;
  13. for (int H = 0; H < gray.rows ; H++)
  14. for (int W = 0; W < gray.cols; W++)
  15. {
  16. xu = (W - cx) / fx;
  17. yu = (H - cy) / fy;
  18. r = sqrt(xu * xu + yu * yu);
  19. xd = xu * (1 + k1 * r * r + k2 * r * r * r * r);
  20. yd = yu * (1 + k1 * r * r + k2 * r * r * r * r);
  21. ud = (xd * fx + cx);
  22. vd = (yd * fy + cy);
  23. if (ud >= 0 && vd >= 0 && ud < gray.cols && vd < gray.rows)
  24. trans.ptr<uchar>(H)[W] = gray.ptr<uchar>(vd)[ud];
  25. }
  26. return 0;
  27. }

效果

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/秋刀鱼在做梦/article/detail/959085
推荐阅读
相关标签
  

闽ICP备14008679号