【发布时间】:2014-03-16 13:53:32
【问题描述】:
我在使用 OpenCV 的 undistort 函数时遇到了一点问题。我正在使用使用广角镜头的相机。假设我对它的访问是有问题的,因为它已经安装了。问题基本上归结为:
我已经成功测量了所有镜头参数,并且可以毫无问题地使全帧图像不失真,问题是我实际上是在某种线扫描模式下工作。我们只在传感器中间使用了一个切口,大约 100 像素高。图片说明:
现在,如果我对相关图像的 ROI(感兴趣区域)应用 undistort,它自然会假定它是全帧顶部的切口,因此校正与它应该做的大不相同全画幅高度的一半。
如果我只使用较低分辨率的全帧,我了解如何修改相机矩阵以补偿图像比例,但问题是:我能否以任何方式补偿裁剪的部分偏移以实现正确的转换?
我想我可以使用全帧分辨率的黑色图像,然后将相关数据复制到其中,但这是不可能的,因为这样会影响处理速度。
感谢您的任何见解!
干杯, 一月。
【问题讨论】:
-
你试过调整主点(cx,cy)吗?
-
意思是如果我说服 undistort 认为镜头的中心位于全画幅图像的顶部可能会有所帮助?会尝试...谢谢。
-
如果你裁剪图像,那么主点将有不同的坐标。例如,如果您的原始主点位于 (30,40),并且您在两侧裁剪 10 个像素,那么您的新主点将位于 (20,30),因为像素 (20,30) 在裁剪后的图像与原始图像中的像素 (30,40) 相同。
-
果然如此。谢谢一堆。您能否将其发布为答案,以便我接受?
标签: c++ opencv computer-vision camera-calibration