有人用过opencv里面的cvUndistortPoints函数没有?

时间:2022-12-30 18:53:02
有人用过opencv里面的cvUndistortPoints函数没有?这个函数的输出标定后点坐标非常小,有没有高手能详细解释一下该函数的传参。我是按照官网www.opencv.org里面的方法传参的,可是有问题。

7 个解决方案

#1


这个函数功能是从原始坐标变换到矫正后的坐标。具体参数是在有心无力,算是帮顶了。

#2


我差不多弄出来了,在cvUndistortPoints之后还得乘以摄像机的内参数矩阵得出的才是标定后的图像坐标。http://www.opencv.org.cn/index.php/Cv%E7%85%A7%E7%9B%B8%E6%9C%BA%E5%AE%9A%E6%A0%87%E5%92%8C%E4%B8%89%E7%BB%B4%E9%87%8D%E5%BB%BA,看了一下该函数是x' = x / z 

y' = y / z 

 

 

这里 r2 = x'2 + y'2 

 

 

的逆推,再根据原始公式可知应该还要乘以摄像机内参数矩阵才算是矫正后的图片。

#3


我差不多弄出来了,在cvUndistortPoints之后还得乘以摄像机的内参数矩阵得出的才是标定后的图像坐标。http://www.opencv.org.cn/index.php/Cv%E7%85%A7%E7%9B%B8%E6%9C%BA%E5%AE%9A%E6%A0%87%E5%92%8C%E4%B8%89%E7%BB%B4%E9%87%8D%E5%BB%BA,(由于贴不出来完整公式,所以我只能标注从哪一行到哪一行)(从x' = x / z  y' = y / z 到k1和k2是径向形变系数,p1和p1是切向形变系数)。看了一下该函数是该公式的逆推,再根据原始公式可知应该还要乘以摄像机内参数矩阵才算是矫正后的图片。


 



#4


这个不是乘以内参的问题吧,主要是看输入的点的是图像点还是实际的三维坐标点。如果你输入的是三维坐标点,你后面要得到图像坐标,肯定要乘以内参。
带着问一个问题,cvUndistortPoints后面的两个参数R和Mr是干什么的?在learning opencv中文版的p-432,里面说R是两个摄像机之间的旋转矩阵,Mr是矫正后摄像机的内参数矩阵(仅仅在有两个摄像机时被使用)。这个函数不是对点进行矫正的么?怎么会涉及到两个摄像机呢?还有后面的Mr是矫正后的图像,它和他摄像机矩阵矫正前的M有什么不同呢?还有在这里面是定义为const类型的,应该是输入的参数吧,这些参数难道是通过标定两个摄像机之间的关系得到的么?这个在这里面有什么用啊?

我差不多弄出来了,在cvUndistortPoints之后还得乘以摄像机的内参数矩阵得出的才是标定后的图像坐标。http://www.opencv.org.cn/index.php/Cv%E7%85%A7%E7%9B%B8%E6%9C%BA%E5%AE%9A%E6%A0%87%E5%92%8C%E4%B8%89%E7%BB%B4%E9%87%8D%E5%BB%BA,看了一下该函数是x' = x ……
[/Quote]

#5


额,不好意思,我理解错了,lz的理解是对的。补充一下,如果对后面的一个参数(Mr)进行了输入,得到的也是图像点。

#6


cvUndistortPoints后面的两个参数R和Mr是用于双目校正中的,双目校正也需要校正畸变,同时要将两个摄像机的图片进行共面和对准校正,R和Mr是cvStereoRectify得出的输出参数,作为这里的输入参数,用于undistort

#7


楼主能把成功的源代码贴出来吗,我也想做点的畸变校正,可不知道数据格式怎么传进去和输出来,望参考一下

#1


这个函数功能是从原始坐标变换到矫正后的坐标。具体参数是在有心无力,算是帮顶了。

#2


我差不多弄出来了,在cvUndistortPoints之后还得乘以摄像机的内参数矩阵得出的才是标定后的图像坐标。http://www.opencv.org.cn/index.php/Cv%E7%85%A7%E7%9B%B8%E6%9C%BA%E5%AE%9A%E6%A0%87%E5%92%8C%E4%B8%89%E7%BB%B4%E9%87%8D%E5%BB%BA,看了一下该函数是x' = x / z 

y' = y / z 

 

 

这里 r2 = x'2 + y'2 

 

 

的逆推,再根据原始公式可知应该还要乘以摄像机内参数矩阵才算是矫正后的图片。

#3


我差不多弄出来了,在cvUndistortPoints之后还得乘以摄像机的内参数矩阵得出的才是标定后的图像坐标。http://www.opencv.org.cn/index.php/Cv%E7%85%A7%E7%9B%B8%E6%9C%BA%E5%AE%9A%E6%A0%87%E5%92%8C%E4%B8%89%E7%BB%B4%E9%87%8D%E5%BB%BA,(由于贴不出来完整公式,所以我只能标注从哪一行到哪一行)(从x' = x / z  y' = y / z 到k1和k2是径向形变系数,p1和p1是切向形变系数)。看了一下该函数是该公式的逆推,再根据原始公式可知应该还要乘以摄像机内参数矩阵才算是矫正后的图片。


 



#4


这个不是乘以内参的问题吧,主要是看输入的点的是图像点还是实际的三维坐标点。如果你输入的是三维坐标点,你后面要得到图像坐标,肯定要乘以内参。
带着问一个问题,cvUndistortPoints后面的两个参数R和Mr是干什么的?在learning opencv中文版的p-432,里面说R是两个摄像机之间的旋转矩阵,Mr是矫正后摄像机的内参数矩阵(仅仅在有两个摄像机时被使用)。这个函数不是对点进行矫正的么?怎么会涉及到两个摄像机呢?还有后面的Mr是矫正后的图像,它和他摄像机矩阵矫正前的M有什么不同呢?还有在这里面是定义为const类型的,应该是输入的参数吧,这些参数难道是通过标定两个摄像机之间的关系得到的么?这个在这里面有什么用啊?

我差不多弄出来了,在cvUndistortPoints之后还得乘以摄像机的内参数矩阵得出的才是标定后的图像坐标。http://www.opencv.org.cn/index.php/Cv%E7%85%A7%E7%9B%B8%E6%9C%BA%E5%AE%9A%E6%A0%87%E5%92%8C%E4%B8%89%E7%BB%B4%E9%87%8D%E5%BB%BA,看了一下该函数是x' = x ……
[/Quote]

#5


额,不好意思,我理解错了,lz的理解是对的。补充一下,如果对后面的一个参数(Mr)进行了输入,得到的也是图像点。

#6


cvUndistortPoints后面的两个参数R和Mr是用于双目校正中的,双目校正也需要校正畸变,同时要将两个摄像机的图片进行共面和对准校正,R和Mr是cvStereoRectify得出的输出参数,作为这里的输入参数,用于undistort

#7


楼主能把成功的源代码贴出来吗,我也想做点的畸变校正,可不知道数据格式怎么传进去和输出来,望参考一下