我的图像中有几个由几个黑色区域组成的轮廓。与这些黑色区域直接相邻的是一些不属于我的轮廓的较亮区域。我想将这些较亮的区域添加到我的黑色区域,从而在 OpenCv 中扩展我的轮廓。
有没有一种方便的方法来扩展轮廓?我考虑从创建的渐变图像中查看强度变化,cv::Sobel
并一直延伸到渐变再次发生变化,这意味着像素的强度将回到图像的既不是黑色也不是明亮区域。
谢谢!
以下是示例图像。第一张图片是原始图像,第二张是使用 Canny 和 findContours 提取的 Contour,最后一张是同一区域的 Sobel-Gradient 强度图像。我想在轮廓的第一张图像中包含明亮的边界。
更新:现在我在 Sobelgradients 上使用了一些形态学操作,并在它们周围添加了一个轮廓(见下图)。下一步可能是找到相邻的一对紫色和红色轮廓,但实际上必须搜索直接相邻的轮廓似乎非常浪费时间。有更好的想法吗?
更新 2:我现在的解决方案是在我的(紫色)轮廓周围的边界框中搜索变形渐变(红色)轮廓,然后选择具有正确方向和大小的轮廓。这适用于梯度轮廓,其中形态学操作关闭了“上升”和“下降”梯度区域,如图 3 所示。但对于照明区域比上图中更宽的情况,它仍然是一个糟糕的解决方案。任何想法仍然非常感谢,谢谢!