为什么在opencv立体声对应中对象边界不清楚

时间:2013-02-05 21:01:18

标签: image-processing opencv camera-calibration stereo-3d 3d-reconstruction

我得到了两张几乎平行的照片,并没有相距很远的地方。 我正在使用OpenCV尝试创建视差图(立体声对应)。
因为我试图在现实世界中使用它,所以使用棋盘校准有点不实用 因此,我正在使用 stereoRectifyUncalibrated()
我尝试比较结果,使用2组不同的相应点进行整改:

  • 手动选择的点数(点击并点击)
  • 从SURF生成并用RANSAC过滤的点

输入图片1: http://i.stack.imgur.com/2TCi3.jpg
输入图片2: http://i.stack.imgur.com/j1fFA.jpg

(注意我在使用它们进行整改之前对图像进行了不失真等)

使用SURF和RANSAC校正图像:
(按顺序为1和2):
http://i.stack.imgur.com/pwbUw.jpg
http://i.stack.imgur.com/mb7TM.jpg

使用手动选择的点校正图像(更不准确!):
http://i.stack.imgur.com/Bodeg.jpg

现在,问题是,看看结果我们看到冲浪版几乎完全被纠正了。(极线对齐得很好)。
虽然手动选择的点版本得到了很好的纠正......但是极线很难对齐。

但是当我们使用我们的整改来查看openCV sgBM()的结果时:
手动点结果:
http://i.stack.imgur.com/N8Cyp.png
SURF点结果:
http://i.stack.imgur.com/tGsCN.jpg

使用SURF点(校正良好的版本)显示的差异/深度更准确/更正确。这并不奇怪。
然而,实际检测到的物体像素和物体边界在严重纠正的verison上实际上要好得多 例如,您可以看到笔实际上是一支笔,并且在错误修正的视差图中具有笔的形状,但在经过良好校正的地图中却没有。
问题是,为什么? 我该如何解决? (我试着用sgBM()参数愚弄,确保两者都是相同的,但它没有任何效果。仅仅是不同的整改使得经过严格纠正的图像因某种原因看起来很好(尊重对象边界))。

0 个答案:

没有答案