2023年图像分割实验报告_第1页
2023年图像分割实验报告_第2页
2023年图像分割实验报告_第3页
2023年图像分割实验报告_第4页
2023年图像分割实验报告_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

评分

实验报告

课程名称__________医学图像解决_______________

实验名称______________图像分割________________

专业班级_____________________________________

姓名_______________________________________

学号_______________________________________

实验日期_____________________________________

实验地点_____________________________________

2023—2023学年度第,学期

一、实验目的

掌握常用的边沿提取算法,从图像中提取感爱好的区域,实现图像分割。在图像中,寻找灰度

相同或相似的区域,区分图像中的背景区域和目的区域,运用Matlab实现图像的边沿检测,进

行图像分割。

二'实验环境

1、硬件配置:Intel(R)Core(TM)i5-421OUCPU@1.7GHz1.7GHz

安装内存(RAM):4.OOGB系统类型:64位操作系统

2、软件环境:MATLABR2023b软件

三、实验内容

(涉及本实验要完毕的实验问题及需要的相关知识简朴概述)

图像边沿是图像中特性(如像素灰度、纹理等)分布的不连续处,图像周边特性有阶跃变化

或屋脊状变化的那些像素的集合。图像边沿存在于目的与背景、目的与目的、基元与基元的边

界,标示出目的物体或基元的实际含量,是图像辨认信息最集中的地方。

图像分割解决重要用于检测出图像中的轮廓边沿、细节以及灰度跳变部分,形成完整的物体

边界,达成将物体从图像中分离出来或将表达同一物体表面的区域检测出来的目的。常用的分割

方法是边沿检测。边沿检测是采用多种边沿算子实现突出图像边沿,克制图像中非边沿信息,使

图像轮廓更加清楚。

1.梯度算子法

对于图像f(x,y),它在点f(x,y)处的梯度是一个矢量,定义为

Gg聘M

dy)

梯度的方向在函数f(x,y)最大变化率的方向上,梯度的幅值为

|v/i=JSF®J

梯度的数值就是f(x,y)在其最大变化率方向上的单位距离所增长的量。对于图像而言,微

分运算可以用差分运算来近似。

M=画+|闻=|/Uy)-f(x-1,y)|+\f(x,y)-f(x,y-1)|

简化成模板可以表达成如下形式:

「10]「01]

Robert梯度算子

0-1J0

当梯度计算完后,可采用以下几种形式突出图像的轮廓。

梯度直接输出

使各点的灰度g(x,y)等于该点的梯度,即

g(x,y)=G[f(x,y)]

这种方法简朴、直接。但增强的图像仅显示灰度变化比较陡的边沿轮廓,而灰度变换比较

平缓的区域则呈暗色。

加阈值的梯度输出

加阈值的梯度输出表达式为

G[/(x,y)]G[f(x,y)]>T

g(x,y)=<

f(x,y)其他

式中,T是一个非负的阈值,适当选取T,既可以使明显的边沿得到突出,又不会破坏本来灰

度变化比较平缓的背景。

给边沿指定一个特定的灰度级

G[f(x,y)]>T

LG

g(x,y)=<

./(尤,y)其他

式中LG是根据需要指定的一个灰度级,它将明显的边沿用一个固定的灰度级表现,而其他的

非边沿区域的灰度级仍保持不变。

。给背景指定一个特定的灰度级

fG[/(x,j)]G[f(x,y)]>T

=k其他

该方法将背景用一个固定灰度级LG表现,便于研究边沿灰度的变化。

二值图像输出

在某些场合(如字符辨认等),既不关心非边沿像素的灰度级差别,又不关心边沿像素的灰

度级差别,只关心每个像素是边沿像素还是非边沿像素,这时可采用二值化图像输出方式,其表达

式为

\LGG[f(x,y)]>T

=k其他

此法将背景和边沿用二值图像表达,便于研究边沿所在位置。

2.Sobel算子法

Sobel相对于先对图像进行加权平均再做差分。

abc

X=(c+2/+i)-(a+2d+g)

对于图像的3X3窗口def

丫=(q+2Z?+c)-(g+2〃+i)

ghi

则定义Sobel算子为g(x,y)=(X2+Y2)2

简化成模板可以表达成如下形式:

--10f-121

Sobel模板-202000

-101-1-2-1

3.拉普拉斯运算法

拉普拉斯算子定义图像f(x,y)的梯度为\/2/=真+戛

dx28y2

锐化后的图像g为g=f-k\y2f]

式中k为扩散效应系数。对系数k的选择要合理,太大会使图像中的轮廓边沿产生过冲;太

小则锐化不明显。

-0-1o'--10-f--1-1-f

常用laplacian算子模板为-14-1040>-18-1

_0-10-10-1-1-1-1

此外尚有一些模板也常用于图像增强,如

--ior■iii一

Prewi11模板-101000

-101-1-1-1

四、实验结果与分析

(涉及实验原理、数据的准备、运营过程分析、源程序(代码)、图形图象界面等)

注:本项可以增长页数

%例1手动阈值分割

[I,map]=imreadCcameraman.tif');%读入图像

imshow(I);figure;%显示图像

J=imhist(I);imhist(I);%生成直方图并显示

[M,N]=size(I);%返回图像的行数和列数

fori—1:1:M%将i以步长1从1增长到M

forj=l:1:N%将上以步长1从1增长到N

if1(i,j)>80%假如图像阈值大于80

g(i,j)=0;%则大于80的就变成黑的

elseg(i,j)—1;%小于80就变成白的

end

end

end

figure;imshow(g);%保持原图,显示图像g

图1原图图2直方图图3阈值分割后的二值

图像

分析:手动阈值分割的阈值是取直方图中双峰的谷底的灰度值作为阈值,若有多个双峰谷底,

则取第一个作为阈值。本题的阈值取80。

%例2迭代阈值分割

f=imread(,earneraman.tif');%读入图像

subplot(1,2,1);imshow(f);%创建一个一行二列的窗口,在第一个窗口

显不图像

title('原始图像');%标注标题

f=double(f);%转换位双精度

T=(min(f(:))+max(f(:)))/2;%设定初始阈值

done=false;%定义开关变量,用于控制循环次数

i=0;%迭代,初始值i=0

while~done%while"done是循环条件,~是“非”

的意思,此

处done=0;说明是无限循环,循环体里面

应当还

有循环退出条件,否则就循环到死了;

rl=find(fV=T);%按前次结果对t进行二次分

r2=find(f>T);%按前次结果重新对t进行二次分

Tnew=(mean(f(rl))+mean(f(r2)))/2;%新阈值两个范围内像素平均值和的一半

done=abs(Tnew-T)<1;%设定两次阈值的比较,当满足小于1时,

停止循环,

1是自己指定的参数

T=Tnew;%把丁nw的值赋给T

i=i+l;%执行循坏,每次都加1

end

f(rl)=0;%把小于初始阈值的变成黑的

f(r2)=l:%把大于初始阈值的变成白的

subp1ot(1,2,2);%创建一个一行二列的窗口,在第二

个窗口显示图像

imshow(f);%显示图像

title('迭代阈值二值化图像');%标注标题

图4原始图像图5迭代阈值二值化图像

分析:本题是迭代阈值二值化分割,环节是:1.选定初始阈值,即原图大小取平均2用初阈

值进行二值分割;3.目的灰度值平均背景都取平均;4.迭代生成阈值,直到两次阈值的灰

度变化不超过1,则稳定;5.输出迭代结果。

%例3Laplacian算子和模板匹配法

I=imread('cameraman.tif');%读入图像

subp1ot(1,3,1);imshow(I);%创建一个一行三列的窗口,在第一个窗口显示

图像

titie(z原图像');%标注标题

H=fspecia1('lap1acian,);%生成lap1acian滤波器

laplacianH=fi1ter2(H,I);%以1ap1acian为模板对图像I进

行锐化滤波

subp1ot(1,3,2);%创建一个一行三列的窗口,在第二

个窗口显示图像

imshow(laplacianil);%显示图像

title('laplacian算子锐化图像');%标注标题

H=fspecial('prewitt');%生成Prewitt滤波器

prewittH=filter2(H,I);%以prewitt为模板对图像I进行锐化滤

subplot(1,3,3);%创建一个一行三列的窗口,在第三个

窗口显木图像

imshow(prewittH);%显示图像

tit1eCprewitt模板锐化图像');%标注标题

原图像laplacian算子锐化图像prewitt模板锐化图像

图6原图像图71aplacian算子锐化图像图8prewitt模板锐

化图像

分析:从结果图可以看出,laplacian算子对边沿的解决更明显,它是二阶微分算子,能加强

边沿效果,对噪声很敏感,Prewitt算子是平均滤波的一阶的微分算子,不仅能检测边沿

点,并且能克制噪声的影响。

%例4不同边沿检测方法比较

f=imread('cameraman.tif');%读取图像

subplot(2,2,1);imshow(f);%创建一个二行二列的窗口,在第一个窗口显

示图像

tit1e(,原始图像');%标注标题

[g,t]=edge(f,'roberts',口,'both');%用r。berts检测器对图像进行边沿检

测,阈值自动选

取,检测边沿方向(双向)为both

subplot(2,2,2);imshow(g);%创建一个二行二列的窗口,在第二个窗

口显示图像

title('Roberts算子分割结果’);%标注标题

[g,t]=edge(f,'sobe1',[],'both');%用sobe1检测器对图像进行边沿检测,

阈值自动选取,检测边沿方向(双向)为both

subp1ot(2,2,3);imshow(g);%创建一个二行二列的窗口,在第三个

窗口显示图像

titleCSobel算子分割结果’);%标注标题

[g,t]=edge(f,'prewittz,[],"both');%用prewitt检测器对图像进行边沿检测,

阈值自动

选取,检测边沿方向(双向)为both

subplot(2,2,4);imshow(g);%创建一个二行二列的窗口,在第四个

窗口显示图像

title('prewitt算子分割结果');/标注标题

图9原始图像图10Roberts算子分

割结果图像

Sobel算子分害!1结果prewitt算子分害!1结果

图11Sobel算子分割结果图像图12prewitt算子分割

结果图像

分析:从结果图可以看出,Prewitt和Sobel算子分割效果比Roberts效果要好一

些,提取

边沿较完整,其边沿连续性较好。但是这三种算子的边沿的连续性都不太好,这时我们

需要采用霍夫变换使间断变成连续,连接边沿。

思考题

1.分析S。bel算子特点,并给予说明。

f=imreadCsku11.tif');%读取图像

f=doub1e(f);%转化图像f的类型为双精度

subp1ot(3,3,1);%创建有3*3子图像的窗口,原图在位置1

imshow(f,□);%显示原图像f

titie(z原始图像');%给图像加标题为‘原始图像‘

J=imnoise(f,'gaussian,,0.02);%对图像加高斯噪声

subplot(3,3,2);%创建有3*3子图像的窗口,原图在位置2

imshow(J,[]);%显示加噪声的图像

titleC加高斯噪声图像');%给图像加标题为‘加高斯噪声图像’

[gl>t]=edge(f,'sobel',口,'both');%用sobe1检测器对原图像进行边沿检测,阈值

自动选

取,检测边沿方向(双向)为both

[g2,t]=edge(J,'sobel',口,'b。th');%用s。bel检测器对加噪图像进行边沿检测,阈

值自动

选取,检测边沿方向(双向)为both

[g3,t]=edge(f,'sobel',[],zvertical');%用sobeI检测器对原图像进行边沿检测,

阈值自动

选取,检测边沿方向为垂直方向

[g4,t]=edge(J,'sobelS[J/vertical");%用sobel检测器对加噪图像进行边沿检测,

阈值自

动选取,检测边沿方向为垂直方向

[g5,t]=edge(f,'sobe1',口,'horizontal');%用sobel检测器对原图像进行边沿检测,

阈值自

动选取,检测边沿方向为水平方向

[g6,t]=edge(J,'sobe1',zhorizontal');%用sobel检测器对加噪图像进行边沿检

测,阈值

自动选取,检测边沿方向为水平方向

subplot(3,3,3);%创建有3*3子图像的窗口,图在位置3

imshow(g1);%显示经sobel算子解决后的图像

title,sobel算子双向分割结果’);备给图像加标题为'sobel算子双向分割结果'

subplot(3,3,4);imshow(g2);title('加噪后sobe(双向分割结果');%在3*3子图

像的位置4

显示加噪后sobel双向分割结果图

subp1ot(3,3,5);imshow(g3);title(,sobe1水平方向分割结果');%在3*3子图

像的位置5显示

sobel水平方向分割结果结果图

subplot(3,3,6);imshow(g4);title('加噪后sobel水平方向分割结果');%在3*3

子图像的位

置6显示加噪后sobel水平方向分割结果图像

subp1ot(3,3,7);imshow(g5);title。sobel垂直方向分割结果');%在3*3子图像

的位置7显示

sobe1垂直方向分割结果图像

subp1ot(3,3,8);imshow(g6);titleC加噪后sobe1垂直方向分割结果');磕

3*3子图像的位

置8显示加噪后sobel垂直方向分割结果图像

图13原始图像图14加高斯噪声图像图15sobe1算子双向分

割结果图像

加嗓后sobel双向分割结果obel水平方向分割纳德后sobel水平方向分割结果

图16加噪后sobel双向分割图图17sobel水平方向分割图图18加噪后sobe1水平

分割图

sobel垂直方向分割绮躺后sobel垂直方向分割结果

图19s。bel垂直方向分割结果图像图20加噪后sobel垂直方向分割结果

图像

分析:Sobel相对于先对图像进行加权平均再做差分。在边沿检测中,常用的一种模板是S。

bel

算子。Sobel算子有三个,一个是检测双向边沿的,一个是检测水平边沿的;另一个是检

测垂直边沿的。由于S。bel算子是一节微分滤波算子的,用于提取边沿,有方向性,从

果可以看出双向both的分割效果最佳。缺陷:Sobel算子并没有将图像的主体与背景严

地区分开来,换言之就是Sobel算子没有基于图像灰度进行解决,由于Sobel算子没有严

格地模拟人的视觉生理特性,所以提取的图像轮廓有时并不能令人满意。

2.分析laplacian算子特点,并解释它为什么能增强图像的边沿?

I=imread('skull.tif');%读取原图

subplot(2,3,1),imshow(I,[]);title('原图留)%在2*3子图像的位置1显示原图

H1=fspecial(?1aplacian',0);%生成Laplacian算子

滤波器,滤波器的标

准差为0,说明H1模板的中间系数是-4

H2=fspecial('laplacian');%生成Laplacian算子滤波

器,滤波器的标

准差为默认值0.2,说明H2模板的中间系数是-

3.333

H3=fspeciallap1acian',1);%生成Laplacian算子滤波

器,滤波器的标

准差为1,说明H3模板的中间系数是一2

J=imnoise(I,zsalt&pepper,,0.02);%添加椒盐噪声

subp1ot(2,3,2),imshow(J,[]);tit1eC添加椒盐噪声图像')%在2*3子图像

的位置3显示添

加椒盐噪声图像

I1=imfilter(I,Hl);%用Hl模板进行均值滤波

subplot(2,3,3),imshow(Il,[]);tit1e('HI模板lap1acian算子滤波结果')/在2*3

子图像的

位置3显示'HI模板1aplacian算子滤波结果

图像

12=imfiIter(I,H2);2模板进行均值滤波

subplot(2,3,4),imshow(12,[]);title('H2模板1aplacian算子滤波结果’)%在2*3

子图像的

位置4显示112模板1aplacian算子滤波结果图

I3=imfilter(I,H3);%用H3模板进行均值滤波

subplot(2,3,5),imshow(13,[]):ti11e(zH3模板laplacian算子滤波结果')%在

2*3子图像的

位置5显示H3模板laplacian算子滤波结果图像

图21原图像图22添加椒盐噪声图像图23HI模板laplacian

算子滤波图

H2模板laplacian算子滤波反laplacian算子滤波结果

图24H2模板laplacian算子滤波结果图像图25H3模板laplacian算子滤波结果

图像

分析:1aplacian算子对边沿的解决明显,它是二阶微分算子,能加强边沿效果,对噪声很敏

感。它没有方向性,但是可以改变模板的中间系数,会有不同的效果。

3.比较各个边沿算子对图像边沿的检测效果。

I=imreadCsku11.tif');%读取图像

subp1ot(3,3,1),imshow(I),title("原图像'),imshow(I);title('原图像')%

在3*3子图像的

位置1显示原图像

BWl=edge(I,'sobel',0.1);%用sobe1算子进行边沿检测,判断

阈值为0.1

subplot(3,3,2),imshow(BW1);tit1e('sobel算子解决后图像')%在3*3子图像的位置2

显示

sobel算子解决后图像

BW2=edge(I,'robert,0.1);%用roberts算子进行边沿检测,

判断阈值为0.1

subp1ot(3,3,3),imshow(BW2);titleCroberts算子解决后图像’)%在3*3子图像的

位置3显示

roberts算子解决后图

BW3=edge(I,zprewittz,0.1);%用prewitt算子进行边沿检测,判

断阈值为0.1

subplot(3,3,4),imshow(BW3);titleCprewitt算子解决后图像')%在3*3子图像的位置

4显示

prewitt算子解决后图

BW4=edge(I/log'.O.01);%用log算子进行边沿检测,判断

阈值为0.01

subplot(3,3,5),imshow(BW4);tit1eC1og算子解决后图像')%在3*3子图像的位

置5显示log

算子解决后图像

BW5=edge(I,'canny',0.1);%用canny算子进行边沿检测,判断阈值为0.1

subp1ot(3,3,6),imshow(BW5);titleCcanny算子解决后图像’)%在3*3子图像的位

置6显示canny算子解决后图像

H=fspecial('laplacian');%生成Laplacian算子滤波器(突出图像中的小细节)(它具

有各向

同性)(Laplacian算子对噪声比较敏感,所以图像一般先通过平

解决,由于平滑解决也是用模板进行的,所以,通常的分割算法都

是把Laplacian算子和平滑算子结合起来生成一个新的模板。)

1ap1acianH=filter2(H,I);%图像I经Laplacian算子锐

化滤波解决

subplot(3,3,7);imshow(lap1acianH);title('Lap1acian算子锐化图像');%

在3*3子图像的位

置7显示Laplacian算子锐化图像

原图像sobel算子处理后图像roberts算子处理后图像

图26原图像图27sobeI算子解决后图像图28roberts算子解决后

图像

prewitt算干处理后图像log算子处理后图像canny算子处理后图像Laplacian算子锐化感像

图29prewitt解决后图图30log解决后图图31canny解决后图像图32Lap1

acian锐化图

分析:laplacian算子对边沿的解决最明显,Sobel和prewitt较差一些。Roberts算

子定位

比较精确,Prewitt算子是平均滤波的一阶的微分算子,Canny是一阶传统微分中

检测阶

跃型边沿效果最佳的算子之一。Prewitt和Sobel算子比Roberts效果要好一

些。Log

滤波器和Canny算子的检测效果优于梯度算子,可以检测出图像较细的边沿部分。

比较

几种边沿检测结果,可以看到Canny算子提取边沿较完整,其边沿连续性较好,效果

于其它算子.另一方面是Prewitt算子,其边沿比较完整。再次就是Sobel算子。

4.比较各个边沿检测算子对噪声的敏感性,并提出抗噪声性能较好的边沿检测的方法。

I=imread('skull,tif*);/读取图像

subplot⑶3,1),imshow⑴,tit1e('原图像'),imshow(I);title('原图像')%

在3*3子图像的

位置1显示原图像

J=imnoised/salt&pepper,0.02);%给图像加噪声密度为0.02的椒盐噪声

subplot(3,3,2),imshow(J,□);title('添加椒盐噪声图像')%在3*3子图像的位置2

显示添加

椒盐噪声图像

BWl=edge(J,'sobel',0.1);备用sobel算子进行边沿检测,判断阈值

为0.1

subplot(3,3,3),imshow(BW1,口);titIe('sobel算子解决后图像')%在3*3子图像

的位置3显示

sobel算子解决后图

BW2=edge(J,'roberts',0.1);%用roberts算子进行边沿检测,判断

阈值为0.1

subp1ot(3,3,4),imshow(BW2,[]);title('roberts算子解决后图像')%在3*3子

图像的位置4

显示roberts算子解决后图像

BW3=edge(J,'prewitt),0.1);%用prewitt算子进行边沿检测,

判断阈值为0.1

subplot(3,3,5),imshow(BW3,[]);tit1e('prewitt算子解决后图像')%在3

*3子图像的位置5

显示prewitt算子解决后图

B\V4=edge(J,'log,,0.01);%用log算子进行边沿检测,判断阈值

为0.01

subp1ot(3,3,6),imshow(BW4,[]);tit1e(;log算子解决后图像’)%在3*3子图

像的位置6显示

log算子解决后图像

BW5=edge(J,'canny',0.1);%用canny算子进行边沿检测,

判断阈值为0.1

subp1ot(3,3,7),imshow(BW5,[]);tit1eCcanny算子解决后图像')%在3*3子图

像的位置7显示

canny算子解决后图像

H=fspecial(zlaplacian');为生成Laplacian算子滤波器(突出图像中的小细节)(它具

有各向

同性)(Laplacian算子对噪声比较敏感,所以图像一般先通

过平

滑解决,由于平滑解决也是用模板进行的,所以通常的分割算法

都是把Lap1acian算子和平滑算子结合起来生成一个新的模

板。)

1aplacianH=fiIter2(H,J);%图像I经Laplacian算子锐化滤波

解决

subp1ot(3,3,8);imshow(laplacianH);t

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论