【图像分割】基于matlab分水岭算法图像分割【含Matlab源码 390期】
一、图像分割简介
理论知识参考:【基础教程】基于matlab图像处理图像分割【含Matlab源码 191期】
二、部分源代码
clear, close all;
clc;
%1.读取图像并求取图像的边界。rgb = imread('tree.jpeg');%读取原图像
I = rgb2gray(rgb);%转化为灰度图像
figure; subplot(121)%显示灰度图像
imshow(I)
text(732,501,'Image courtesy of Corel','FontSize',7,'HorizontalAlignment','right')
hy = fspecial('sobel');%sobel算子,应用sobel算子锐化图像
hx = hy';
Iy = imfilter(double(I), hy, 'replicate');%滤波求y方向边缘
Ix = imfilter(double(I), hx, 'replicate');%滤波求x方向边缘
gradmag = sqrt(Ix.^2 + Iy.^2);%求摸
subplot(122); imshow(gradmag,[]), %显示梯度
title('Gradient magnitude (gradmag)')%2. 直接使用梯度模值进行分水岭算法:(往往会存在过的分割的情况,效果不好)L = watershed(gradmag);%直接应用分水岭算法
Lrgb = label2rgb(L);%转化为彩色图像
figure; imshow(Lrgb), %显示分割后的图像
title('Watershed transform of gradient magnitude (Lrgb)')%过分割现象%3.分别对前景和背景进行标记:本例中使用形态学重建技术对前景对象进行标记,首先使用开操作,开操作之后可以去掉一些很小的目标。
%开和闭这两种运算可以除去比结构元素小的特定图像细节,同时保证不产生全局几何失真。
%开运算可以把比结构元素小的突刺滤掉,切断细长搭接而起到分离作用;
%闭运算可以把比结构元素小的缺口或孔填充上,搭接短的间断而起到连接作用。
se = strel('disk', 4);%圆形结构元素,STREL('disk',R,N),R is the specified radius, When N is greater than 0, the disk-shaped structuring%element is approximated by a sequence of N
Io = imopen(I, se);%形态学开操作
figure; subplot(121)
imshow(Io), %显示执行开操作后的图像
title('Opening (Io)')
Ie = imerode(I, se);%对图像进行腐蚀,基本参数:待处理的输入图像以及结构元素对象
Iobr = imreconstruct(Ie, I);%形态学重建
subplot(122); imshow(Iobr), %显示重建后的图像
title('Opening-by-reconstruction (Iobr)')
Ioc = imclose(Io, se);%形态学关操作,首先膨胀,然后腐蚀,两个操作使用同样的结构元素
figure; subplot(121)
imshow(Ioc), %显示关操作后的图像
title('Opening-closing (Ioc)')
Iobrd = imdilate(Iobr, se);%对图像进行膨胀,基本参数:待处理的输入图像和结构元素对象。
Iobrcbr = imreconstruct(imcomplement(Iobrd), ...imcomplement(Iobr));%形态学重建
Iobrcbr = imcomplement(Iobrcbr);%图像求反
subplot(122); imshow(Iobrcbr), %显示重建求反后的图像,figure4
title('Opening-closing by reconstruction (Iobrcbr)')
%As you can see by comparing Iobrcbr with Ioc,
%reconstruction-based opening and closing are more
%effective than standard opening and closing at removing
%small blemishes without affecting the overall
%shapes of the objects. Calculate the regional maxima
%of Iobrcbr to obtain good foreground markers.
fgm = imregionalmax(Iobrcbr);%局部极大值
figure; imshow(fgm), %显示重建后局部极大值图像,figure5
title('Regional maxima of opening-closing by reconstruction (fgm)')
I2 = I; %前景标记图与原图叠加
I2(fgm) = 255;%局部极大值处像素值设为255
figure; imshow(I2), %在原图上显示极大值区域,figure6
title('Regional maxima superimposed on original image (I2)')
se2 = strel(ones(3,3));%结构元素
fgm2 = imclose(fgm, se2);%关操作
fgm3 = imerode(fgm2, se2);%腐蚀
fgm4 = bwareaopen(fgm3, 20);%开操作
I3 = I;
I3(fgm4) = 255;%前景处设置为255
figure; subplot(121)
imshow(I3)%显示修改后的极大值区域,figure7
title('Modified regional maxima')
bw = im2bw(Iobrcbr, graythresh(Iobrcbr));%转化为二值图像
subplot(122); imshow(bw), %显示二值图像,figure7
title('Thresholded opening-closing by reconstruction')%4. 进行分水岭变换并显示:D = bwdist(bw);%计算距离
DL = watershed(D);%分水岭变换
bgm = DL == 0;%求取分割边界
三、运行结果
四、matlab版本及参考文献
1 matlab版本
2014a
2 参考文献
[1] 蔡利梅.MATLAB图像处理——理论、算法与实例分析[M].清华大学出版社,2020.
[2]杨丹,赵海滨,龙哲.MATLAB图像处理实例详解[M].清华大学出版社,2013.
[3]周品.MATLAB图像处理与图形用户界面设计[M].清华大学出版社,2013.
[4]刘成龙.精通MATLAB图像处理[M].清华大学出版社,2015.
[5]赵勇,方宗德,庞辉,王侃伟.基于量子粒子群优化算法的最小交叉熵多阈值图像分割[J].计算机应用研究. 2008,(04)
【图像分割】基于matlab分水岭算法图像分割【含Matlab源码 390期】相关推荐
- 【Matlab图像加密】正交拉丁方置乱算法图像加解密【含GUI源码 182期】
一.代码运行视频(哔哩哔哩) [Matlab图像加密]正交拉丁方置乱算法图像加解密[含GUI源码 182期] 二.matlab版本及参考文献 一.代码运行视频(哔哩哔哩) [Matlab图像处理]自动 ...
- 【Matlab验证码识别】遗传算法和最大熵优化+大津法(OTSU)+自定义阈值数字验证码识别【含GUI源码 1694期】
一.代码运行视频(哔哩哔哩) [Matlab验证码识别]遗传算法和最大熵优化+大津法(OTSU)+自定义阈值数字验证码识别[含GUI源码 1694期] 二.matlab版本及参考文献 1 matlab ...
- 【Matlab人脸识别】BP神经网络人脸识别(含识别率)【含GUI源码 891期】
一.代码运行视频(哔哩哔哩) [Matlab人脸识别]BP神经网络人脸识别(含识别率)[含GUI源码 891期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] ...
- 【Matlab人脸识别】形态学教室人数统计(带面板)【含GUI源码 1703期】
一.代码运行视频(哔哩哔哩) [Matlab人脸识别]形态学教室人数统计(带面板)[含GUI源码 1703期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]孟 ...
- 【Matlab人脸识别】人脸实时检测与跟踪【含GUI源码 673期】
一.代码运行视频(哔哩哔哩) [Matlab人脸识别]人脸实时检测与跟踪[含GUI源码 673期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]孟逸凡,柳益君 ...
- 【Matlab图像融合】小波变换遥感图像融合【含GUI源码 744期】
一.代码运行视频(哔哩哔哩) [Matlab图像融合]小波变换遥感图像融合[含GUI源码 744期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 包子阳,余 ...
- 【Matlab身份证识别】身份证号码识别【含GUI源码 014期】
一.代码运行视频(哔哩哔哩) [Matlab身份证识别]身份证号码识别[含GUI源码 014期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 蔡利梅.MAT ...
- 【Matlab人脸识别】KL变换人脸识别【含GUI源码 859期】
一.代码运行视频(哔哩哔哩) [Matlab人脸识别]KL变换人脸识别[含GUI源码 859期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 蔡利梅.MAT ...
- 【Matlab指纹识别】指纹识别门禁系统【含GUI源码 1692期】
一.代码运行视频(哔哩哔哩) [Matlab指纹识别]指纹识别门禁系统[含GUI源码 1692期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 包子阳,余继 ...
- 【Matlab指纹识别】指纹识别匹配门禁系统【含GUI源码 587期】
一.代码运行视频(哔哩哔哩) [Matlab指纹识别]指纹识别匹配门禁系统[含GUI源码 587期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 包子阳,余 ...
最新文章
- Git 常用操作(2)- 创建标签
- android好还是windows好,收银机操作系统哪种好?安卓系统与Windows系统区别?
- AI黑箱:我们要用AI解释AI?
- Druid如何自动根据URL自动识别DriverClass的
- long类型python_Python如何管理int和long?
- IPM: Technical model of IP right scope on Contract Item level
- Framework Design Studio 发布了
- Web Broadcast Channel
- 设计导航网,全心全意为设计师服务的导航网站!
- redis发布与订阅
- 网站里的MG电子是一个服务器吗,魔兽世界中的品质生活,从MG电子游艺开始!...
- Ubuntu MPEG-4 AAC 与 H.264 解码器安装
- 小米手机怎么打不开云服务器错误,为什么小米云服务打不开页面?
- 全国大学生“高教杯“成图大赛:关于蜗轮蜗杆快速建模研究(二)
- 数据可视化大屏-Vue项目
- 目录扫描暴力破解网站管理员密码
- 目标决定人生——没有目标就失去一切 (转载)
- 云e办(后端)——项目介绍及搭载项目
- linux的命令参考手册,Linux常用命令汇总——可当作简要参考手册 - 程序语言 - 小木虫 - 学术 科研 互动社区...
- MIT多变量微积分--8.多元函数,等值面,偏导数,切平面逼近
热门文章
- 【BZOJ-1090】字符串折叠 区间DP + Hash
- LinearLayout布局问题
- Qt之Dialog\widget\ mainwindow的区别和布局管理器 分裂器的区别
- Java反编译插件Jdclipse导致Eclipse 3.7.2启动崩溃的解决方法
- 打开WORD 2003时提示发现错误,需要关闭,还要发送错误报告给Microsoft 解决方案...
- MEF的asp.net Hello World程序
- python pip 安装 win10 解决anacoda代理错误 ProxyError: Conda cannot proxy configuration
- User Experience Questionnaire UEQ
- Atitit s2018 s3 doc list alldvc.docx .docx s2018 s3f doc compc s2018 s3f doc homepc sum doc dvcCom
- Atitit 物联网之道 艾龙著 attilax著 1. 理论基础(控制理论 信息理论)	2 2. 1.5 物联网的关键技术12 	2 2.1. 1.5.1 网络与通信技术12 1.5.2 无线传感