Dav*_*ave 12 opencv camera-calibration
我正在尝试验证我的相机校准,所以我想纠正校准图像.我希望这将涉及使用调用,warpPerspective但我没有看到采用相机矩阵的明显函数,以及旋转和平移向量来生成此调用的透视矩阵.
基本上我想做这里描述的过程(特别是看到最后的图像),但从已知的相机模型和姿势开始.
是否有一个简单的函数调用,它采用相机的内在和外在参数,并计算透视矩阵用于warpPerspective?
在打电话给图像warpPerspective后我会打电话undistort.
原则上,我可以通过在指定约束后解决opencv相机校准文档顶部定义的方程组来推导出解决方案Z=0,但我认为必须有一个固定的例程,允许我对我的测试图像进行正射校正.
在我看来,我发现很难通过所有的立体声校准结果 - 我只有一个摄像头,但想要在我只看平面测试模式的约束条件下纠正图像.
BCo*_*nic 15
实际上,没有必要涉及正交相机.以下是如何获得适当的透视变换.
如果使用校准照相机cv::calibrateCamera,则得到的摄象机矩阵K透镜畸变系数的向量D为您的相机,并且对于你所使用的每个图像,旋转矢量rvec(可以转换为一个3×3矩阵R使用cv::rodrigues,DOC)和平移矢量T.考虑其中一个图像和相关的R和T.cv::undistort使用失真系数调用后,图像就像投影矩阵的摄像机一样K * [ R | T ].
基本上(如@DavidNilosek直觉),要取消旋转并获得图像,就好像它是由形式的投影矩阵获得K * [ I | -C ]其中C=-R.inv()*T的摄像机位置.为此,您必须应用以下转换:
Hr = K * R.inv() * K.inv()
Run Code Online (Sandbox Code Playgroud)
唯一可能的问题是扭曲的图像可能会超出图像平面的可见部分.因此,您可以使用其他翻译来解决该问题,如下所示:
[ 1 0 | ]
Ht = [ 0 1 | -K*C/Cz ]
[ 0 0 | ]
Run Code Online (Sandbox Code Playgroud)
其中Cz是沿Oz轴的C分量.
最后,根据上面的定义,H = Ht * Hr是对所考虑的图像的整流透视变换.
| 归档时间: |
|
| 查看次数: |
7354 次 |
| 最近记录: |