分水岭算法是一种基于形态学的算法,是对图像的梯度分割。而图像分割的目的是将图像分割成不同的特体,即提取物体的边缘。由于物体边缘的灰度变换比较强烈,而梯度图像正好描述了图像的灰度变换情况。因此,可先将原始图像通过梯度算子边缘检测得到梯度图像,再通过梯度图像的分水岭变换来进行图像分割。因此,采用分水岭算法,利用形态学处理函数,不仅能达到有效分割图像的目的,而且也能消除过分割现象。
  分水岭算法作为一种基于区域的图像分割方法,建立在数学形态学的理论基础之上。20世纪70年代末,Becucher和Lantuejoul提出应用分水岭算法进行图像分割,实现了分水岭算法的模拟侵入过程并成功应用于灰度图像。其后,分水岭算法便作为一种经典的图像分割方法被广泛关注。

clc;                %clc的作用就是清屏幕
clear;              %clear是删除所有的变量
close all;          %close all是将所有打开的图片关掉。
filename=('3.jpg');        %读入图像
f=imread(filename);
imshow(f);
Info=imfinfo(filename);
if Info.BitDepth>8f=rgb2gray(f);
end
figure, mesh(double(f));        %显示图像,类似集水盆地,类似集水盆地

一、一般分水岭算法

     clc;                %clc的作用就是清屏幕clear;              %clear是删除所有的变量close all;          %close all是将所有打开的图片关掉。filename=('3.jpg');        %读入图像f=imread(filename);imshow(f);Info=imfinfo(filename);if Info.BitDepth>8f=rgb2gray(f);endfigure, mesh(double(f));        %显示图像,类似集水盆地,类似集水盆地b=im2bw(f, graythresh(f));  %二值化,注意应保证集水盆地的值较低(为0),否则就要对b取反d=bwdist(b);                %求零值到最近非零值的距离,即集水盆地到分水岭的距离l=watershed(-d);            %MATLAB自带分水岭算法,l中的零值即为风水岭w=l==0;                     %取出边缘g=b&~w;                     %用w作为mask从二值图像中取值figuresubplot(2,3,1),imshow(f);subplot(2,3,2),imshow(b);subplot(2,3,3),imshow(d);subplot(2,3,4),imshow(l);subplot(2,3,5),imshow(w);subplot(2,3,6),imshow(g);

二、用梯度的两次分水岭分割

     clc;                %clc的作用就是清屏幕clear;              %clear是删除所有的变量close all;          %close all是将所有打开的图片关掉。filename=('3.jpg');        %读入图像f=imread(filename);imshow(f);Info=imfinfo(filename);if Info.BitDepth>8f=rgb2gray(f);endfigure, mesh(double(f));        %显示图像,类似集水盆地,类似集水盆地h=fspecial('sobel');                           %获得纵方向的sobel算子fd=double(f);g=sqrt(imfilter(fd, h, 'replicate').^2+imfilter(fd, h', 'replicate').^2);l=watershed(g);                              %分水岭运算wr=l==0;g2=imclose(imopen(g, ones(3,3)), ones(3,3));          %进行开闭运算对图像进行平滑l2=watershed(g2);                            %再次进行分水岭运算wr2=l2==0;f2=f;f2(wr2)=255;figuresubplot(2,3,1),imshow(f);subplot(2,3,2),imshow(g);subplot(2,3,3),imshow(l);subplot(2,3,4),imshow(g2);subplot(2,3,5),imshow(l2);subplot(2,3,6),imshow(f2);

三、使用梯度加掩模的三次分水岭算法

     clc;                %clc的作用就是清屏幕clear;              %clear是删除所有的变量close all;          %close all是将所有打开的图片关掉。filename=('3.jpg');        %读入图像f=imread(filename);imshow(f);Info=imfinfo(filename);if Info.BitDepth>8f=rgb2gray(f);endfigure, mesh(double(f));        %显示图像,类似集水盆地,类似集水盆地h=fspecial('sobel');            %获得纵方向的sobel算子fd=double(f);g=sqrt(imfilter(fd, h, 'replicate').^2+imfilter(fd, h', 'replicate').^2);l=watershed(g);                 %分水岭运算wr=l==0;rm=imregionalmin(g);            %计算图像的区域最小值定位im=imextendedmin(f,2);          %上面仅是产生最小值点fim=f;fim(im)=175;                    %将im在原图上标识出,用以观察lim=watershed(bwdist(im));      %再次分水岭计算em=lim==0;g2=imimposemin(g, im|em);       %在梯度图上标出im和eml2=watershed(g2);               %第三次分水岭计算f2=f;f2(l2==0)=255;                  %从原图对分水岭进行观察figuresubplot(3,3,1),imshow(f);subplot(3,3,2),imshow(g);subplot(3,3,3),imshow(l);subplot(3,3,4),imshow(im);subplot(3,3,5),imshow(fim);subplot(3,3,6),imshow(lim);subplot(3,3,7),imshow(g2);subplot(3,3,8),imshow(l2)subplot(3,3,9),imshow(f2);

图像分割是由图像处理转到图像分析的关键。一方面,它是目标图像表达的基础,对特征测量有重要的影响。另一方面,图像分割和分割的目标表达、特征提取和参数测量等将原始图像转化为数学表达形式,使得利用计算机进行图像分析和理解成为可能。

matlab中图像分割技术之三分水岭分割法相关推荐

  1. matlab中图像分割技术之二阈值分割

    1.直方图双峰法 2.最大类间方差法 3.迭代法 阈值化图像分割是一种最基本的图像分割方法,其基本原理就是选取一个或多个处于灰度图像范围之中的灰度阈值,然后将图像中各个像素的灰度值与阈值比较,并根据比 ...

  2. 怎样在matlab中写技术,rect矩形函数 matlab中怎样编写矩形函数

    矩形函数的定义: 矩形函数 rect(t); 如果绝对值 |t| > 0.5 rect(t) = 0; 如果绝对值 |t| = 0.5 rect(t) = 0.5; 如果绝对值 |t| < ...

  3. 【MATLAB教程案例23】基于MATLAB图像分割算法仿真——阈值分割法、Otsu阈值分割法、K均值聚类分割法等

    FPGA教程目录 MATLAB教程目录 目录 1.软件版本 2.通过二值图实现图像分割 3.通过Otsu阈值分割实现图像分割

  4. 第10章 Python 数字图像处理(DIP) - 图像分割 基础知识 标准差分割法

    This Chapter is all about image segmentation. I still not finished whole chapter, but here try to pu ...

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

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

  6. 图像分割技术与MATLAB仿真剖析

    图像分割技术研究及MATLAB仿真 摘要:作为一项热门的计算机科学技术,图像分割技术已经在我们生活中越来越普及.顾名思义这项技术的目的就是,将目标图像从背景图像中分离出去.由于这些被分割的图像区域在某 ...

  7. matlab帽檐图像,图像分割技术与MATLAB仿真

    中南民族大学 毕业论文(设计) 学院: 计算机科学学院 专业: 自动化 年级:2012 题目: 图像分割技术与MATLAB仿真 学生姓名: 高宇成 学号:2012213353 指导教师姓名: 王黎 职 ...

  8. 基于matlab的图像分割与识别

    总的来说,图像分析的大致步骤为: 1.把图像分割成不同的区域或把不同的对象分开: 2.找出分开的各区域的特征: 3.识别图像中要找的对象或对图像分类: 4.对不同区域进行描述或寻找出不同区域的相互联系 ...

  9. matlab中图像的阈值分割,基于MATLAB的图像阈值分割技术汇总

    数字图像处理课程论文 基于MATLAB的图像阈值分割技术 摘要:本文主要针对图像阈值分割做一个基于MATLAB的分析.通过双峰法,迭 代法以及OUTS法三种算法来实现图像阈值分割,并且就这三种算法做了 ...

最新文章

  1. vue中axios如何实现token验证
  2. php5.6.11编译安装报错configure: error: Don't know how to define struct flock on this system
  3. pytorch和jittor 程序对比
  4. .net (object sender, EventArgs e) 学习总结
  5. 用vmware安装win7虚拟机(windows10系统)
  6. 数学--数论-- AtCoder Beginner Contest 151(组合数+数学推导)好题(๑•̀ㅂ•́)و✧
  7. 从谷歌公司发现的十个至理名言
  8. 栈溢出笔记1.1 函数调用过程
  9. cs224 - Lecture2: Word Vectors and Word Senses
  10. redistemplate使用_SpringBoot 使用 Redis 缓存
  11. Kali Linux 网络扫描秘籍 第一章 起步(一)
  12. pythoncookbook和流畅的python对比_为什么你学Python效率比别人慢?因为你没有这套完整的学习资料...
  13. MicroSIP软电话安装配置说明
  14. 数据库索引:位图索引
  15. 腾讯地图获取地址的经度和纬度
  16. Linux 集群搭建
  17. JavaScript 通过注册表的形式调用搜狗输入法的手写输入功能
  18. php下载微信服务器图片
  19. 推荐几个适合上班摸鱼的神操作!
  20. BZOJ 2002 HNOI2010 弹飞绵羊 分块

热门文章

  1. 华硕ROG枪神X一键重装Win11教学,能否联网均适用
  2. 第9章第2节:继续商业计划书封面幻灯片的制作 [PowerPoint精美幻灯片实战教程]
  3. MicroSoft Office 2007各版本解析
  4. marquee无缝滚动
  5. 赋能生态合作 共话数字创新 | 2023开放原子全球开源峰会软硬协同开源分论坛即将启幕
  6. 2021年中国文化产业发展现状分析:营业收入达119064亿元,占GDP的10.41%[图]
  7. unity出现“Error refreshing packages”怎么办?
  8. OleDbDataReader Demo
  9. 15个实用的webApp前端开发技巧
  10. 如何安装WIN11安卓子系统并进行侧载apk详细说明