图像处理46-分水岭算法

使用分水岭算法执行基于标记的图像分割。

void cv::watershed(InputArray image,
                    InputOutputArray markers
                    )

该函数实现了 [171] 中描述的分水岭、基于非参数标记的分割算法的变体之一。

在将图像传递给函数之前,您必须用正 (>0) 索引粗略地勾勒出图像标记中所需的区域。 因此,每个区域都表示为一个或多个具有像素值 1、2、3 等的连通分量。 可以使用 findContours 和 drawContours 从二进制掩码中检索此类标记(请参阅 watershed.cpp 演示)。 标记是未来图像区域的“种子”。 标记中的所有其他像素,其与轮廓区域的关系未知,应由算法定义,应设置为 0。 在函数输出中,标记中的每个像素都设置为“种子”组件的值,或者在区域之间的边界处设置为 -1。

注意

任何两个相邻的连通分量不一定被分水岭边界(-1 的像素)分开; 例如,它们可以在传递给函数的初始标记图像中相互接触。

image: 输入 8 位 3 通道图像。

markers:输入/输出标记的 32 位单通道图像(地图)。 它应该与 image 具有相同的大小。

猜你喜欢

转载自blog.csdn.net/u013480226/article/details/124210242
今日推荐