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