如何缩小现实生活图像中的大差距?

How to close large gaps in real life images?

假设我有一张现实生活中物体的照片,例如:

使用双边过滤和 canny 边缘检测产生:

这很有可能无法正确检测到某些边缘部分

即使没有双边过滤:

我需要增加检测到这些边缘的概率。时间不是问题。

我已经尝试过某些图像锐化效果,但 none 似乎可以使边缘更容易被检测到。

编辑:

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

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

编辑 2:

提取每个通道并为每个红色、蓝色、绿色添加 canny 结果得到一个闭合形状。

在此示例中,由于背景较亮,对比度变得非常低,所以靠近左上角的边缘消失了。如果没有关于形状的先验信息,这实际上是不可恢复的。事实上,真正的边缘可能是沿着白色垂直区域而不是大理石 table,就像在未过滤的图像上发生的那样。我们人类可以分辨,多亏了两边的color/texturing,但是Canny远没有这样的表现。

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

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

这些参数将允许您调整将哪些检测为线,哪些不检测。在您的情况下,检测 table 将非常容易。如果由于大理石图案而出现问题,一些形态学开口可能会有所帮助,但我对此表示怀疑。

Here is a tutorial/ some information 来自 OpenCV

编辑:

如果你想得到一个封闭的矩形,你可以自己做霍夫变换。在 hough space 中将有四个高度密集的区域。其中两个将具有相同的 r 或 theta 轴。这就是如何在 hough space 中不仅可以检测线而且可以检测矩形。将这四个点向后变换将导致形成矩形的四条线(在这张图片中很可能是 table)。也许已经有一个 OpenCv hough 矩形检测器。没查过。

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