分水岭分割

摘要:
分水岭分割使用图像形态学来分割图像区域。它将图像的灰度值视为地形图,可以实现图像的分水岭分割//ww.cnblogs.com/mikewolf2002/p/304118.html分水岭分割的具体算法思想如下:它是地形图上灰度值小于n的图像数量;图像的每个最小点构成储层的中心点。由于图像中存在许多最小点,一般的图像分水岭分割可能会得到许多小区域。

    分水岭分割利用图像形态学进行图像区域分割。它将图像灰度值看作一幅地形图,在地形图的局部极小值处与地形最低点是连通的,从最低点开始注水,水流会逐渐淹没地形较低点构成的区域,直到整个图像被淹没。在这个过程中,通过相关形态学处理,可以实现一幅图像的分水岭分割。

    以下GIF图像给出了形象说明:

    分水岭分割第1张

    图像来自 https://www.cnblogs.com/mikewolf2002/p/3304118.html

    分水岭分割具体算法思想如下:

    1 设 分水岭分割第2张 为地形图上完成分割后的 r 个蓄水池,分水岭分割第3张 为完成分割后蓄水池 分水岭分割第4张 内的像数集合,分水岭分割第5张 为地形图上灰度值小于 n 的像数集合;

    2 当水面上涨到 n 时,当前蓄水池 分水岭分割第6张 被淹没的像数集合可表示为: 分水岭分割第7张

       当前所有蓄水池被淹没的像数集合表示为:分水岭分割第8张

    3 假设第 n 步时,分水岭分割第9张 已知, 令 Q 表示 分水岭分割第10张 集合构成的连通区域,通过考察 Q 上各个连通区域 q 与 分水岭分割第11张 连通区域关系,分别进行如下处理:

      1)分水岭分割第12张 为空时,发现一个新的蓄水池 q,将 q 加入 分水岭分割第13张

      2)分水岭分割第14张 不为空,但仅包含 分水岭分割第15张 的一个连通分量,将 q 合并到 分水岭分割第16张 中构成 分水岭分割第17张,蓄水池面积扩大,但数量保持不变;

      3)分水岭分割第18张 不为空,但包含 分水岭分割第19张 的两个及两个以上连通分量,此时需要构造堤坝防止 分水岭分割第20张 中蓄水池融合;

    4 重复步骤3,直到 n = nmax + 1 时,分水岭分割第21张 表示整个图像像数,分割完成,分水岭分割第22张 各个连通区域即为分割的蓄水池区域,留下的堤坝则为分割边界。

    以上为分水岭分割基本思想,图像的每个极小值点构成一个蓄水池的中心点。由于图像中存在较多极小值点,故一般图像分水岭分割可能得到很多小的区域。可以通过手动设定蓄水池位置来避免过多极小值影响,算法仅认为设定点为蓄水池中心点,从而忽略掉任意其他极小值点。

    同时,可以首先对图像进行一阶微分处理,在图像平滑区域图像梯度值较小,在图像边缘区域梯度值较大。然后使用梯度图像作为地形图,可以分割出平滑图像块。

    在 opencv 中,函数 cv::watershed() 实现了分水岭分割,该函数将图像边缘转换为地形图上的山脊,图像平滑区域转换为地形图上的山谷,同时使用 markers 参数标记蓄水池,实现分水岭分割,具体如下:

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

    image: 8位3通道图像,函数对图像进行一阶微分处理,视梯度图为地形图上的山脊与山谷;

    markers: 32位有符号整数图像,使用 1,2,3... 等序号标记不同的蓄水池。当完成分割后,该图像形成最终蓄水池区域标记图像,其中,值 -1 表示区域边界。

    以下给出 cv::watershed() 分析截图:

     分水岭分割第23张

    分水岭分割第24张

   

   参数资料 医学图像处理与分析 罗述谦 周果宏

               https://www.cnblogs.com/mikewolf2002/p/3304118.html

免责声明:文章转载自《分水岭分割》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇利用span设置文字固定宽度redis数据审计下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

python+opencv图像投影、水平投影、垂直投影

python+opencv图像投影 一、图像投影 水平投影:以y轴为轴投影 垂直投影:以x轴为轴投影 原图: 二、水平投影 代码及解释: 1 #水平投影 2 import numpy as np 3 import cv2 as cv 4 img=cv.imread("123.jpg",0) 5 ret,img1=cv.threshold(im...

U_Net原理及tensorflow的实现

Unet——用于图像边缘检测,是FCN的改进 如上图是UNET的架构图,可以发现器输入图像和输出图像不一致,如果我们需要输入图像和输出图像一致时,在卷积时,使用padding=“SAME”即可,然后再边缘检测时,就相当与像素级别的二分类问题,用交叉熵做loss函数即可。但位置检测常用IOU作为loss函数。 个人觉得UNET的优点: 1.Unet的去除了...

Dockerfile参考

Docker可以通过阅读a的指示自动构建图像Dockerfile。Dockerfile是一个文本文档,其中包含用户可以在命令行上调用以组装图像的所有命令。使用docker build用户可以创建一个自动构建,连续执行几条命令行指令。 该页面描述了您可以在Dockerfile中使用的命令。阅读本页后,请参阅Dockerfile面向提示的指南的最佳做法。 用法...

【从零学习openCV】IOS7人脸识别实战

前言 接着上篇《IOS7下的人脸检測》,我们顺藤摸瓜的学习怎样在IOS7下用openCV的进行人脸识别,实际上非常easy,因为人脸检測部分已经完毕,剩下的无非调用openCV的方法对採集到的人脸样本进行训练,终于得到一个能够预測人脸的模型。可是当中的原理可谓是博大精深,因为快临最近末考试了,没时间去琢磨当中详细的细节,这次就先写个大概的demo,...

华为海思系列芯片开发学习中常见缩写详解

1. 系统控制Hi —— HiSilicon 海思半导体公司 MPP —— Media Process Platform 媒体处理平台 MPI —— MPP Programe Interface MPP程序接口 DDR —— Double Data-Rate 双倍速率,DDR SDRAM=双倍速率同步动态随机存储器,人们习惯称为DDR,其中,SDRAM 是...

AI大视觉(四) | Yolo v3 如何提高对小目标的检测效率

 本文来自公众号“AI大道理” ​ YOLO v3 是目前工业界用的非常多的目标检测的算法。 YOLO v3 没有太多的创新,主要是借鉴一些好的方案融合到 YOLO v2 里面。 不过效果还是不错的,在保持速度优势的前提下,提升了预测精度,尤其是加强了对小物体的识别能力。 YOLO v3 主要的改进有: (1)调整了网络结构; (2)利用多尺度特征进行对象...