我目前正在使用OpenCV来实现stereovision。现在,我正在使用Stereo_Calib示例来消除扭曲以校正图像。消除失真效果很好。

但是,当我应用校正时,图像非常扭曲。

这是纠正图像的代码。参数rmap的计算方法与Stereo_calib示例中的方法相同(请参见here)

void StereoCalibration::StereoRectify(Mat &imageLeft, Mat &imageRight)
{
Mat imLeft, imRight;

remap(imageLeft, imLeft,DistLeft.rmap[0], DistLeft.rmap[1], CV_INTER_CUBIC);
remap(imageRight,imRight, DistRight.rmap[0], DistRight.rmap[1], CV_INTER_CUBIC);

imageLeft = imLeft;
imageRight = imRight;
}

最佳答案

我意识到这个问题已有几年历史了,但是最近我也遇到了类似的问题。基于morynicz有关“不良棋盘”图案的校准立体图像的答案,我发现,即使您的棋盘图案稍有变形(例如不平坦),矫正后的立体图像对也会产生较大的翘曲。例如,OpenCV中的算法假定呈现的是平坦的棋盘图案,从而该图案中的任何物理变形都将错误地归因于相机光学器件(或两个相机传感器的相对方向)的变形。然后,算法将尽力消除这种错误失真,从而导致图像变形。

为避免出现此问题,可以使用平板电脑(或其他电子屏幕)显示棋盘图案,因为这样可以保证其平坦。

此外,您应检查用于校准立体声对的图像是否清晰,并且没有运动模糊或图像撕裂。

如果使用OpenCV进行纠正,请对stereoCalibrate函数中使用的标志进行一些试验,因为这可能会导致特定应用程序的纠正更为“优化”。

关于opencv - 立体校正后图像变形,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8375039/

10-11 04:02