针对分割,与分水岭变换相配合的常用工具是距离变换。二值图像的距离变换是相对简单的概念:是指从每个像素到最接近零值的像素的距离。例如,图10-25(a)显示了一个小的二值图像矩阵。图10-25(b)显示了相应的距离变换。注意,每个值为1的像素的距离变换为0,因为最靠近的非0像素是它本身。距离变换可以用工具箱函数bwdist来计算,调用语法为:

  1. D = bwdist(f)

例10.15  使用距离变换和分水岭变换分割二值图像

在这个例子中,我们说明如何与工具箱的分水岭变换一起,使用距离变换分割彼此有些接触的圆形水滴。特别是,我们想要分割图9-29(b)中处理过的销钉图像。首先,正如10.3.1节中描述的那样,使用im2bw和graythreshi把图像变换为二值图像:

  1. >> g = im2bw(f, graythresh(f));

图10-26(a)显示了结果。下一步是对图像求补,计算距离变换。然后,用函数watershed计算距离变换的负分水岭变换。该函数的调用语法是:

  1. L =  watershed(A,conn)

其中,L是在9.4节讨论和定义过的标记矩阵。A是输入数组(一般可以是任何维数,但在本章是二维),并且conn指定了连通性(对于二维数组是4或8(默认值))。在L中,正整数与汇水盆地相对应,零值指出分水岭的脊线像素:

  1. >> gc = ~g;
  2. >> D = bwdist(gc);
  3. >> L = watershed(?D);
  4. >> w = L == 0;

图10-26(b)和(c)显示了求补后的图像及其距离变换。因为L的0值像素是分水岭的脊线像素,前面代码的最后一行计算二值图像w,图中仅显示这些像素。分水岭的脊线图像显示于图10-26(d)中。最后,使用原始的二值图像和图像w的"补",通过逻辑AND操作完成分割,如图10-26(e)所示:

  1. >> gg2 = g&-w;

注意,图10-20(e)中的某些物体没有很好地分开。这被称为过分割,这是使用基于分水岭的分割方法时常常会出现的问题。下边将讨论克服这一问题的不同技术。

使用距离变换的分水岭分割相关推荐

  1. OpenCV(26)图像分割 -- 距离变换与分水岭算法(硬币检测、扑克牌检测、车道检测)

    目录 一.基础理论 1.思想 2.原理 二.分水岭实战:硬币 步骤归纳 1.把原图像转二值图 2.开运算去噪 3.确定背景区域(膨胀)(得到背景/最大连通域) 4.确定前景区域(距离变换) (分离)( ...

  2. 基于matlab山脊线,基于Matlab的标记分水岭分割算法

    lyqmath 1 综述 Separating touching objects in an image is one of the more difficult image processing o ...

  3. 做形态学方法的团队_图像分割实战-分水岭分割方法和GrabCut 算法

    1. 分水岭分割方法 它是依赖于形态学的,图像的灰度等级不一样,如果图像的灰度等级一样的情况下怎么人为的把它造成不一样?可以通过距离变换实现,这样它们的灰度值就有了阶梯状的变换.风水岭算法常见的有三种 ...

  4. 基于标记的分水岭分割算法

    分水岭技术是一种众所周知的分割算法,特别适用于提取图片中的相邻或重叠对象.使用分水岭方法时,我们必须从用户定义的标记开始.这些标记可以使用点击手动定义,也可以使用阈值或形态学处理方法定义. 分水岭技术 ...

  5. matlab迭代分水岭分割,matlab分水岭分割算法

    single [-1, 1] double 17-17 17-17 Normalized Difference Vegetation Index NDVI with Threshold Applied ...

  6. 目标检测-分水岭分割与阈值分割对比

    1.1 对阴影的处理 基于阈值的分割,是在以某个阈值T,对图像进行分割.分割时由于拍摄时图像阴影处导致分割不理想,结果虽然达到理想预期.但是二值化后的结果以阴影部分外围与图像融合,导致再用findCo ...

  7. 8.3 Python图像处理之图像典型分割-分水岭分割

    8.3 Python图像处理之图像典型分割-分水岭分割 文章目录 8.3 Python图像处理之图像典型分割-分水岭分割 1 算法原理 2 代码 3 效果 1 算法原理 分水岭概念是以对图像进行三维可 ...

  8. 图像处理实例--基于分水岭分割进行肺癌判断

    实例背景 为了帮助医生减少重复性工作,对肺部CT图像进行计算机辅助检测的技术被广泛应用于肺癌的诊断和治疗过程中.而图像处理是应用在,对CT图像中医生所关注的区域进行精确的分割和定位.因此需要选择一种合 ...

  9. matlab中图像分割技术之三分水岭分割法

      分水岭算法是一种基于形态学的算法,是对图像的梯度分割.而图像分割的目的是将图像分割成不同的特体,即提取物体的边缘.由于物体边缘的灰度变换比较强烈,而梯度图像正好描述了图像的灰度变换情况.因此,可先 ...

  10. cv::cuda与CUDA的NPP库、距离变换和分水岭并行版本尝试

    因为不想什么函数都自己写设备核函数,看到opencv有对应的cuda版本的函数比如滤波,然而CUDA的NPP库也提供了对应的滤波函数,我不知道哪个性能更高(当然肯定要比纯CPU版本快,但我没测试过) ...

最新文章

  1. 区块链为什么这么热?有这么大热度的原因是什么
  2. the archive which is referenced by ...问题解决方案
  3. oracle云产品是什么意思,Oracle云端产品线也要AI化,ERP云等4大主力云产品先升级...
  4. 改变进程的优先级,nice,getpriority,setpriority
  5. OpenGL编程轻松入门之二次几何体
  6. 华为nova9系列正式官宣:9月23日震撼上市
  7. 程序在发布前就应该发现的一些错误
  8. Java 函数传递对象是引用传递还是值传递?
  9. Windows 10 优化
  10. webpack入坑之旅(一)入门安装
  11. 使c语言程序变成流程图的软件6,下载_AutoFlowchart(C语言流程图生成器) V3.5.3 英文版_6z6z下载站...
  12. 【UE4从零开始 082】全局光照
  13. cJSON 轻量级json解析器 速度快
  14. 常见互联网职业英文简写,你是哪个O?
  15. 复制计算机软件,一键复制粘贴工具
  16. 测试:如何测试微信朋友圈的点赞功能
  17. mongo connect error no reachable servers
  18. wannier插值能带拟合4
  19. 关于微信小程序简单瀑布流的制作
  20. cd .ssh返回-bash: cd: .ssh:No such file or directory怎么办

热门文章

  1. 封装数据库增删该通用方法
  2. Composite UI Application Block(Cab)比较详细的一片文章
  3. 麦子学院-第一阶段-测试基础
  4. phantom.js - HTML To PDF
  5. WebGL多模型光照综合实例
  6. RuiJie命令行划VLAN
  7. 6.解决AXIOS的跨域问题
  8. MYSQL 4种插入数据的方式比较
  9. 序列化和反序列化的概念
  10. Ubuntu 12.04装五笔,同时又可以打拼音。