我正在尝试提取图像中前景对象的视差图。使用颜色提取前景对象,最终目的是确定提取对象的坐标。下面是蒙版 View 的蒙版左侧图像,其中提取了带红色的对象

opencv - 来自前景蒙版图像的视差图-LMLPHP

然后有正确的图像

opencv - 来自前景蒙版图像的视差图-LMLPHP

背景基本上是一个巨大的窗口,我想忽略它,而我只关心找到带红色(或以后选择的任何颜色)对象的位置。

在OpenCV示例中试用了SGBM算法的参数后,主要

int SADWindowSize
int minDisparity
int numberOfDisparities

我无法获得令人满意的结果,更确切地说,该算法无法很好地处理蒙版部件的均匀纹理。我将发布两个示例进行说明。在这些示例中,SADWindowSize是唯一变化的参数,因为它给出了最独特的结果。

示例1:较小的窗口大小= 9并且视差数量= 64

opencv - 来自前景蒙版图像的视差图-LMLPHP

示例2:窗口尺寸较小= 23,并且视差数量= 64

opencv - 来自前景蒙版图像的视差图-LMLPHP

较大的窗口大小会带来更多不理想的拖尾结果。

问题:计算视差图时掩盖背景是否错误?另一种可能的方法是计算视差图,然后应用蒙版,但是在这种情况下,我不确定结果是否合理。

请注意,校正了相机和校准后的图像(和遮罩)。

最佳答案

在计算深度图之前进行遮罩是没有意义的,因为算法需要比较指定的空间以找到相应的像素。由于大量的黑色像素,使用遮罩会导致信息不足。因此,您的尝试对我们来说很直观,但是应用程序无法轻松确定哪些像素代表同一点。

我不确定,但是如果您使用蒙版在视差上使用左 View ,您应该会得到期望的结果。或屏蔽reprojectImageTo3D()的输出。

关于opencv - 来自前景蒙版图像的视差图,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41851744/

10-12 16:35