openCV 立体声校准 - >将相机图像 A 扭曲为相机图像 B

opencv stereo calibration -> warp camera image A into camera image B

本文关键字:图像 相机 立体声 gt openCV      更新时间:2023-10-16

我使用opencv成功校准了2台相机的内部和外部(左侧为低分辨率相机,右侧为高分辨率相机)。我从两组图像(棋盘图案-每个相机大约20张图像)中进行了立体校准。我现在有一个left.yml、right.yml和translationRotation.yml。现在我想扭曲/扭曲右图像,使其看起来与左图像相同(透视/扭曲等)。我知道我有校准的所有数据,只是知道如何使用正确的opencv函数来进行操作,例如warpPerspective、remap或其他什么?

背景信息-我基本上是用高分辨率rgb相机馈送(右)代替低分辨率rgb摄像头馈送(左)。将Openframeworks/c++与ofxCv。

谢谢。

如果我理解得对,每个相机上都有不同的失真,你想消除其中一个失真,并应用另一个相机的失真。对于不失真的部分,以下是我过去所做的。

使用OF,在设置时,您可以使用cv::initUndistortRectifyMap创建失真/不失真贴图,这将为您提供两个cv::Mat对象形式的贴图。此功能接收来自校准的相机矩阵和失真系数。

然后可以使用cv::remap应用映射。它将把结果存储在第二个参数中。

在取消扭曲后,您希望应用反向映射,以应用其他摄影机的扭曲。您提到的warpPerspective函数似乎可以很好地实现这一点,但映射可能可以从您获得的.yml文件中计算出来。这只是应用相反映射的问题。

只要有必要,就可以使用xCV的包装从图像切换到Mat,以确保不会进行不必要的复制。