【数字图像处理】实验三 图像分割(MATLAB实现)
目录
一、实验意义及目的
二、实验内容
三、Matlab 相关函数介绍
四、算法原理
五、参考代码及扩展代码流程图
(1)参考代码流程图
(2)扩展代码流程图
六、参考代码
七、实验要求
(1)尝试不同的阈值选择方法,实现灰度图像二值化
(2)变换参数实现形态学滤波,查看滤波效果
(3)更改重建边界点数,查看效果
(4)自行设计方法实现图像分割,并计算分割区域相关参数
一、实验意义及目的
二、实验内容
三、Matlab 相关函数介绍
ifft2(F):对 F 进行二维 IDFT 运算。
四、算法原理
图像分割是指把一副图像分成不同的具有特定性质区域的图像处理技术,将这些区域提取出来以便进一步提取特征,是由图像处理到图像分析的关键步骤。图像分割由于其重要性一直是图像处领域的研究重点。其中阈值分割方法是根据图像灰度值的分布特性确定某个阈值来进行图像分割的一种方法。设原灰度图像为 f (x, y) ,通过某种准则选择一个灰度值T 作为阈值,比较各像素值与T 的大小关系:像素值大于等于T 的像素为一类,变更像素值为 1;像素值小于T 的像素点为另一类,变更其像素值为 0。公式如下:
而边界跟踪是指根据某些严格的“探测准则”找出目标物体轮廓上的像素,即确定边界的起 始搜索点。在根据一定的“跟踪准则”找出目标物体上的其他像素,直到符合跟踪终止条件。
边界描述是指用相关方法和数据来表示区域边界。边界描述中既含有几何信息,也含有丰富的形状信息,是一种很常见的图像目标描述方法。傅里叶描绘子的方法主要利用 DFT描绘子重建区域边界曲线。由于傅里叶的高频分量对应于一些细节部分,而低频分量则对应基本形状,因此,重建时可以只使用复序列的前 M 各较大系数其余置零。
关于图像分割,就不得不提起经典又传统的分水岭算法了。传统的分水岭分割算法,是一种基于拓扑理论的数学形态学的分割方法,传统的分水岭分割方法,是一种基于拓扑理论的数学形态学的分割方法。传统的分水岭分割方法,是一种基于拓扑理论的数学形态学的分割方法,其基本思想是把图像看作是测地学上的拓扑地貌,图像中每一像素的灰度值表示该点的海拔高度,每一个局部极小值及其影响区域称为集水盆地,而集水盆地的边界则形成分水岭。分水岭的概念和形成可以通过模拟浸入过程来说明。在每-一个局部极小值表面,刺穿一个小孔,然后把整个模型慢慢浸人水中,随着浸入的加深, 极小值表面,每一个局部极小值的影响域慢慢向外扩展,在两个集水盆地汇合处构筑大坝如下每一个局部极小值的影响域慢慢向外扩展,在两个集水盆地汇合处构筑大坝如下图所示,即形成分水岭。分水岭变换通过不同的水系排水来分离区域,达到图像图所示,即形成分水岭.分水岭变换通过不同的水系排水来分离区域,达到图像分割的目的。
五、参考代码及扩展代码流程图
(1)参考代码流程图
(2)扩展代码流程图
六、参考代码
Image1=im2double(imread('plane.jpg'));
gray=rgb2gray(Image1);
T=graythresh(gray);%使用 Otsu 方法获取阈值,T 被归一化到[0,1]区间。
BW=im2bw(gray,T);%以 T 为阈值把灰度图像 I 转变为二值图像。
figure,imshow(BW),title('二值化图像');
SE=strel('square',3);%创建一个由square指定的结构元素,参数3控制 SE 的大小。
Morph=imopen(BW,SE); %对图像BW进行开运算,返回图像为Morph,SE是结构元素
Morph=imclose(Morph,SE);
figure,imshow(Morph),title('形态学滤波');
[B L]=bwboundaries(1-Morph);%搜索二值图像BW的外边界和内边界
figure,imshow(L),title('划分的区域');
hold on;
for i=1:length(B)boundary=B{i};plot(boundary(:,2),boundary(:,1),'r','LineWidth',2);
end
M=zeros(length(B));
for k=1:length(B) N=length(B{k}); if N/2~=round(N/2) B{k}(end+1,:)=B{k}(end,:); N=N+1;endM(k)=[N*3/4];
end
S=zeros(size(Morph));
figure,imshow(S);
hold on;
for k=1:length(B) z=B{k}(:,2)+1i*B{k}(:,1); Z=fft(z); [Y I]=sort(abs(Z)); for count=1:M(k) Z(I(count))=0; endzz=ifft(Z);%对Z进行IDFT 运算。 plot(real(zz),imag(zz),'w');
end
七、实验要求
(1)尝试不同的阈值选择方法,实现灰度图像二值化
代码:
I=imread('plane.jpg');
%人工选定阈值进行分割,选择阈值为150
[width,height]=size(I);
T1=150;
for i=1:widthfor j=1:heightif(I(i,j)<T1)BW1(i,j)=0;else BW1(i,j)=1;endend
end
BW2 = im2bw(BW1);
figure;imshow(BW2),title('人工阈值进行分割');
运行结果:
(2)变换参数实现形态学滤波,查看滤波效果
代码:
Image1=im2double(imread('plane.jpg'));
gray=rgb2gray(Image1);
T=graythresh(gray);
BW=im2bw(gray,T);
figure,imshow(BW),title('二值化图像');
SE=strel('disk',3);
Morph=imopen(BW,SE);
Morph=imclose(Morph,SE);
figure,imshow(Morph),title('形态学滤波');
运行结果:
(3)更改重建边界点数,查看效果
代码:
Image1=im2double(imread('plane.jpg'));
gray=rgb2gray(Image1);
T=graythresh(gray);
BW=im2bw(gray,T);
[B L]=bwboundaries(1-BW);
figure,imshow(L),title('划分的区域');
hold on;
for i=1:length(B)
boundary=B{i};
plot(boundary(:,2),boundary(:,1),'r','LineWidth',1);
end
M=zeros(length(B),4);
for k=1:length(B)
N=length(B{k});
if N/2~=round(N/2)
B{k}(end+1,:)=B{k}(end,:);
N=N+1;
end
M(k,:)=[N/2 N*7/8 N*15/16 N*63/64];
end
S=zeros(size(Morph));
for m = 1:4
figure,imshow(S);
hold on;
for k=1:length(B)
z=B{k}(:,2)+1i*B{k}(:,1);Z=fft(z);
[Y I]=sort(abs(Z));
for count=1:M(k,m)
Z(I(count))=0;
end
zz=ifft(Z);
plot(real(zz),imag(zz),'w');
end
end
运行结果:
(4)自行设计方法实现图像分割,并计算分割区域相关参数
代码:
img=imread('plane.jpg');
subplot(2,3,1);
imshow(img);
C = makecform('srgb2lab'); %设置转换格式
img_lab = applycform(img, C);ab = double(img_lab(:,:,2:3)); %取出lab空间的a分量和b分量
nrows = size(ab,1);
ncols = size(ab,2);
ab = reshape(ab,nrows*ncols,2);nColors = 3; %分割的区域个数为3
[cluster_idx cluster_center] = kmeans(ab,nColors,'distance','sqEuclidean','Replicates',3); %重复聚类3次
pixel_labels = reshape(cluster_idx,nrows,ncols);
subplot(2,3,2);
imshow(pixel_labels,[]), title('聚类结果');%显示分割后的各个区域
segmented_images = cell(1,3);
rgb_label = repmat(pixel_labels,[1 1 3]);for k = 1:nColorscolor = img;color(rgb_label ~= k) = 0;segmented_images{k} = color;
end
subplot(2,3,3);
imshow(segmented_images{1}), title('分割结果——区域1');
subplot(2,3,4);
imshow(segmented_images{2}), title('分割结果——区域2');
subplot(2,3,5);
imshow(segmented_images{3}), title('分割结果——区域3');
运行结果:
【数字图像处理】实验三 图像分割(MATLAB实现)相关推荐
- 数字图像处理实验三图像增强
一.实验目的 (1)了解图像增强的目的及意义,加深对图像增强的 感性认识,巩固所学的图像增强的理论知识和相 关算法. (2)熟练掌握直方图均衡化和直方图规定化的计算过 程. (3)熟练掌握空域滤波中常 ...
- 数字图像处理实验三-图像基本运算
实验内容 (1)对图像进行线性点运算. (2)对图像比例放大1.5倍,比例缩小0.7倍,非比例放大到600x700像素,非比例缩小到300x400像素. (3)对图像旋转30度.60度.90度.135 ...
- 【图像处理·实验三】matlab 去除人脸图像中的雀斑,人脸美白
以下内容均有参考, 非原作者允许,请勿用于商业用途!!! 仅供大家学习交流所用!! 一. 实验内容 1. 去除人脸图像中的雀斑 2. 去除图像中的背景和水印的去除. 二. 实验目的 1. 综合运用图像 ...
- 数字图像处理(三)——Matlab实现图像去噪
实验内容 1.自选一幅图像或自制一幅图像,图像的主体目标物形状有块状.圆形等形状,且有细线及尖角细节等多样化的细节. 2.添加不同强度的高斯噪声.椒盐噪声,编程实现图像的均值滤波.高斯加权均值滤波.中 ...
- TIT 数字图像处理 原理与实践(MATLAB) 入门教学 实验三 图像平滑与图像锐化
文章目录 数字图像处理 原理与实践(MATLAB) 入门教学 实验三 图像平滑与图像锐化 实验要求 知识点 实验内容 1.采用二维中值滤波函数medfilt2对受椒盐噪声干扰的图像滤波,窗口分别采用3 ...
- 数字图像处理matlab实验对图像复原,数字图像处理实验07图像的复原处理
数字图像处理实验 一.数字图像处理实验 实验七 图像的复原处理 一.实验目的 熟悉几种在实际应用中比较重要的图像复原技术,学会用MATLAB复原函数对退化图像进行复原处理. 二.实验内容 1.用点扩散 ...
- 实验1 数字图像处理的MATLAB基础,《数字图像处理(实验部分)》实验1_数字图像处理中MATLAB使用基础...
<数字图像处理(实验部分)>教案 实验一:数字图像处理中MATLAB使用基础实验 一. MATLAB软件安装 二. 进入MATLAB运行环境 三. MATLAB编程基础 3.1.变量 预定 ...
- TIT 数字图像处理 原理与实践(MATLAB) 入门教学 实验一 常用的MATLAB图像处理命令与图像基本操作
文章目录 数字图像处理 原理与实践(MATLAB) 入门教学 实验一 常用的MATLAB图像处理命令与图像基本操作 实验要求 知识点 实验内容 1.读入一幅RGB图像,变换为灰度图像和二值图像,并在同 ...
- matlab数字图像实验报告,数字图像处理实验报告(matlab)
数字图像处理实验报告(matlab) 学院:自动化学院 班级:电081班 姓名:李林树 学号:40850099 2011年10月 实验一 直方图均衡化 一. 实验目的: 1. 熟悉图像数据在计算机中的 ...
- 图像处理边缘增强matlab,数字图像处理实验 matlab 图像增强 边缘检测 图像操作.doc...
数字图像处理实验 matlab 图像增强 边缘检测 图像操作 实验1 点运算和直方图处理 实验目的 1. 掌握利用Matlab图像工具箱显示直方图的方法 2. 掌握运用点操作进行图像处理的基本原理. ...
最新文章
- [LeetCode] NO. 100 Same Tree
- java 注解 enum_13 Java枚举和注解
- 074_html5音频
- 你对博客中提到的评分规则有何意见和建议?
- socket编程流程与函数(实用篇)
- 关于jsp,javascript,php等语言
- 物联网碰到云计算会怎么样?
- Java基础知识强化之IO流笔记44:IO流练习之 复制图片的 4 种方式案例
- python可以处理的文件类型_Python学习笔记之数据类型与文件处理
- 排序算法(二)--选择排序法
- VS Code配置java环境
- 服务器上运行程序提示*工作已停止,已停止工作 出现了一个问题,导致程序停止正常工作。请关闭该程序...
- 药方的量化方法笔记(学习与尝试):第二回 第一次 药方的拆解 量化方法的形式的发展 对药的量化分析
- Python程序设计,pygame飞机大战课程设计
- APP首次启动提示开启定位服务
- 《天池龙珠 - Python训练营》03.Python基础进阶:从函数到高级魔法方法
- 智能网联汽车激光雷达工作原理、性能比较与安全性分析
- flutter中 dp的理解
- 校招基本告一段落,总结一下
- Android中常用的加密方式