我们构建好的堤坝就是对图像的分割,这就是分水岭算法的背后原理。 OpenCV采用了基于掩模的分水岭算法,在这种算法中我们要设置那些山谷点会汇合,那些不会。这是一种交互式的图像分割,我们要做的就是给我们已知的对象打上不同的标签。如果某个区域肯定是前景或对象,就使用某个颜色(或灰度值)标签标记它。如果某个区...
【从零学习OpenCV 4】分割图像——分水岭法 分水岭算法与漫水填充法相似,都是模拟水淹过山地的场景,区别是漫水填充法是从局部某个像素值进行分割,是一种局部分割算法,而分水岭法是从全局出发,需要对全局都进行分割。 分水岭算法会在多个局部最低点开始注水,随着注水量的增加,水位越来越高会淹没局部像素值较小的...
一、理论 二、利用分水岭算法分割硬币 一、理论 任何灰度图像都可以看作是地形表面,其中高强度的表示峰和丘陵,而低强度的表示山谷。用不同颜色的水(标签)填充每个孤立的山谷(局部最小值)。水位上升取决于附近的峰值(梯度),来自不同山谷的水将开始融合,为避免这种情况,需要在水合并前建立障碍,继续填补水和...
因此,OpenCV实现了一个基于标记的分水岭算法,你可以在其中指定哪些是要合并的谷点,哪些是不合并的。它是一种交互式图像分割。我们所做的是为我们所知道的对象提供不同的标签。用一种颜色(或强度)标记我们确定为前景或对象的区域,用另一种颜色标记我们确定为背景或非对象的区域,最后标记我们不确定的区域,用0标记...
分水岭分割算法是一种基于拓扑理论的数学形态学分割方法。它将图像视为测地学上的地形图,其中每个像素的灰度值代表该点的海拔高度。图像中的局部极小值及其影响区域被称为集水盆,而集水盆的边界则形成分水岭。通过模拟水从每个局部极小值点开始逐渐淹没的过程,算法最终将图像分割成不同的区域。
OpenCV 提供了分水岭算法(Watershed Algorithm)的实现, 使用分水岭算法对图像进行分割,将图像的不同区域分割成互不干扰的区域。分水岭算法模拟了水在图像中的扩散和聚集过程,将标记的边界被看作是阻挡水扩散的高山,通过模拟水的扩散和聚集,最终确定图像的分割边界。
因此需要对分水岭算法进行改进。在OpenCV中采用的是基于标记的分水岭算法。 水淹过程从预先定义好的标记图像(像素)开始, 这样可以减少很多极小值点盆地产生的影响。 较好的克服了过度分割的不足。 本质上讲,基于标记点的改进算法是利用先验知识来帮助分割的一种方法。 对比如下图所示。
使用OpenCV函数cv::watershed来将图像中的物体与背景隔离。 理论: cv::watershed 函数是 OpenCV 库的一部分,它是一个流行的用于计算机视觉的 C++ 库。该函数用于基于分水岭算法进行图像分割。以下是该函数的参数简要说明: image: 此参数表示将应用分水岭算法的输入图像。通常,这是一幅灰度图像,算法将根据强度差异对...
一、概述 案例:使用分水岭算法实现图像的分割实现 API:介绍参考上一遍 实现步骤: 1.输入图像 2.灰度化 3.二值化 4.执行距离变换 5.归一化 6.二值化 7.生成marker:通过findContours+drawContours来创建一个marker 8.将7生成的marker放入分水