如何弥合现实图像中的巨大空白?

时间:2019-02-05 21:22:29

标签: python opencv computer-vision edge-detection

假设我有一个真实物体的图片,例如:

enter image description here

使用双边过滤和Canny边缘检测可得出结果:

/home/camilotalero/Desktop/CounterTopExperiment/image_screenshot_05.02.2019.png

这很可能无法正确检测某些边缘区域

enter image description here

即使没有双边过滤:

enter image description here

我需要增加检测这类边缘的可能性。时间不是问题。

我尝试了某些图像锐化效果,但似乎没有效果使该边缘更容易被检测到。

编辑:

我正在尝试仅对内部图像和较大的平坦表面执行此操作。我也不是想获得完美的东西,我只是想要一个过度预测,其中包含成功率很高(80%+)的边界

在指定的示例和我尝试过的其他情况下,出现问题的主要原因是边界区域之间的过渡区域缺乏清晰度。

编辑2:

提取每个通道并为红色,蓝色,绿色中的每一个添加canny结果会形成一个封闭的形状。

3 个答案:

答案 0 :(得分:1)

在此示例中,由于背景较浅,对比度变得非常低,因此边缘在左上角附近消失了。没有形状的事先信息,这实际上是无法恢复的。确实,可能是真实边缘遵循白色垂直区域,而不是大理石台面,就像未过滤图像上发生的那样。由于边缘两侧的颜色/纹理,我们人类可以进行区分,但是Canny距离这种表现还很远。

您可以尝试使用图像分割和纹理分割,尽管后者在OpenCV中不易使用。请注意,您正在解决一个难题。

答案 1 :(得分:1)

如果您的目标是缩小线条中的间隙以导致线条完美连续,请尝试使用霍夫变换和线条检测。仍然需要某种边缘检测,因此请保持精明。

该参数将允许您调整要检测为线的内容和不检测为线的内容。在您的情况下,检测表格将非常容易。如果由于大理石图案而出现问题,可以进行一些形态上的开口,但我对此表示怀疑。

Here is a tutorial/ some information来自OpenCV

编辑:

如果您想获得一个封闭的矩形,则可以自己进行霍夫变换。在霍夫空间中,将有四个高密度区域。其中两个将具有相同的r或theta轴。这样一来,不仅可以检测霍夫空间中的线条,还可以检测矩形。将这四个点向后变换将导致形成矩形的四条线(在此图片中最有可能是表格)。也许已经有一个OpenCv Hough矩形检测器。还没检查。

答案 2 :(得分:0)

一种改进边缘检测的非常有效的方法是在每个单独的通道(RGB)上运行canny,然后使用addWeighted()将图像相加,而不是在灰度图像上进行检测。将图像转换为不同的色彩空间,然后再次执行此过程也可以进一步改善它。