文档视界 最新最全的文档下载
当前位置:文档视界 › 《实验四:形态学》word版

《实验四:形态学》word版

《实验四:形态学》word版
《实验四:形态学》word版

实验四形态学操作与空间变换

一、实验目的

1.了解膨胀和腐蚀的Matlab实现方法

2.掌握图像膨胀、腐蚀、开启、闭合等形态学操作函数的使用方法

3.了解二进制图像的形态学应用

4.了解空间变换函数及图像匹配方法

二、实验内容

1.图像膨胀

A)对包含矩形对象的二进制图像进行膨胀操作。

BW=zeros(9,10);

BW(4:6,4:7)=1;

imshow(BW,'notruesize')

se=strel('square',3);

BW2=imdilate(BW,se);

figure,imshow(BW2,'notruesize')

B)改变上述结构元素类型(如:line, diamond, disk等),重新进行膨胀

操作。

Line: BW=zeros(9,10);

BW(4:6,4:7)=1;

imshow(BW,'notruesize')

se=strel('line',3,3);

BW2=imdilate(BW,se);

figure,imshow(BW2,'notruesize')

C)对图像‘text.png’进行上述操作,观察不同结构元素膨胀的效果。

BW3=imread('text.png ');

imshow(BW3)

se2=strel('line',11,90); %线型结构元素

BW4=imdilate(BW3,se2);

figure,imshow(BW4)

2.图像腐蚀

A)对图像‘circbw.tif’进行腐蚀操作。

BW1=imread('circbw.tif');

se=strel('arbitrary',eye(5));

BW2=imerode(BW1,se);

imshow(BW1)

figure,imshow(BW2)

B)对图像‘text.tif’进行腐蚀操作。

BW=imread('text.tif');

se=strel('line',11,90);

BW2=imerode(BW3,se);

imshow(BW)

figure,imshow(BW2)

3.膨胀与腐蚀的综合使用

A)从原始图像‘circbw.tif’中删除电流线,仅保留芯片对象。

方法一:先腐蚀(imerode),再膨胀(imdilate);

BW1=imread('circbw.tif');

imshow(BW1)

se=strel('rectangle',[40 30]); %选择适当大小的矩形结构元素BW2=imerode(BW1,se); %先腐蚀,删除较细的直线

figure,imshow(BW2)

BW3=imdilate(BW2,se); %再膨胀,恢复矩形的大小

figure,imshow(BW3)

方法二:使用形态开启函数(imopen)。

BW1=imread('circbw.tif');

imshow(BW1)

se=strel('rectangle',[30,20]);

BW2=imopen(BW1,se); %开启操作

figure,imshow(BW2)

B)改变结构元素的大小,重新进行开启操作,观察处理结果。se=strel(‘rectangle’,[20 10]);

se=strel(‘rectangle’,[50 40]);

C)置结构元素大小为[4 3],同时观察形态开启(imopen)与闭合(imclose)

的效果,总结形态开启与闭合在图像处理中的作用。

I=imread('circbw.tif');

imshow(I)

se=strel('rectangle',[4 3]);

I1=imopen(I,se); %开启操作

I2=imclose(I,se); %闭合操作

figure,imshow(I1)

figure,imshow(I2)

4.*高帽与低帽变换

A)读入图像‘pearlite.tif’,分别显示其高帽变换与低帽变换结果,并

与原图像比较。(设se=strel('disk',5);)。

I=imread('pearlite.tif');

subplot(221),imshow(I)

se=strel('disk',5);

J=imtophat(I,se);

subplot(222),imshow(J)

K=imbothat(I,se);

subplot(223),imshow(K)

L=imsubtract(imadd(J,I),K);

subplot(224),imshow(L)

B)要求显示在一个窗口中。

5.图像极值的处理方法

A)对于下图所示的图像矩阵A,利用函数imregionalmax寻找其局部极大

A=[10 10 10 10 10 10 10 10 10 10;

10 13 13 13 10 10 11 10 11 10;

10 13 13 13 10 10 10 11 10 10;

10 13 13 13 10 10 11 10 11 10;

10 10 10 10 10 10 10 10 10 10;

10 11 10 10 10 18 18 18 10 10;

10 10 10 11 10 18 18 18 10 10;

10 10 11 10 10 18 18 18 10 10;

10 11 10 11 10 10 10 10 10 10;

10 10 10 10 10 10 11 10 10 10];

B=imregionalmax(A)

B =

0 0 0 0 0 0 0 0 0 0

0 1 1 1 0 0 1 0 1 0

0 1 1 1 0 0 0 1 0 0

0 1 1 1 0 0 1 0 1 0

0 0 0 0 0 0 0 0 0 0

0 1 0 0 0 1 1 1 0 0

0 0 0 1 0 1 1 1 0 0

0 0 1 0 0 1 1 1 0 0

0 1 0 1 0 0 0 0 0 0

0 0 0 0 0 0 1 0 0 0

B)利用函数imextendedmax寻找像素值大于其邻域像素值2个单位的局部

极大值。

C=imextendedmax(A,2)

C =

0 0 0 0 0 0 0 0 0 0

0 1 1 1 0 0 0 0 0 0

0 1 1 1 0 0 0 0 0 0

0 1 1 1 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 1 1 1 0 0

0 0 0 0 0 1 1 1 0 0

0 0 0 0 0 1 1 1 0 0

0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0

6.*创建一幅图像,求其距离矩阵。

bw=zeros(5,5);

bw(2,2)=1;bw(4,4)=1;

D=bwdist(bw)

center1=-10;

center2=-center1;

dist=sqrt(2*(2*center1)^2);

radius=dist/2*1.4;

lims=[floor(center1-1.2*radius) ceil(center2+1.2*radius)];

[x,y]=meshgrid(lims(1):lims(2));

bw1=sqrt((x-center1).^2+(y-center2).^2)<=radius;

bw2=sqrt((x-center2).^2+(y-center2).^2)<=radius;

bw1=sqrt((x-center1).^2+(y-center1).^2)<=radius;

bw=bw1|bw2;

imshow(bw)

D=bwdist(bw);

figure,imshow(D,[ ])

D1=bwdist(~bw);

figure,imshow(D1,[ ])

D =

1.4142 1.0000 1.4142

2.2361

3.1623

1.0000 0 1.0000

2.0000 2.2361

1.4142 1.0000 1.4142 1.0000 1.4142

2.2361 2.0000 1.0000 0 1.0000

3.1623 2.2361 1.4142 1.0000 1.4142

7.*使用伪彩色显示标记矩阵。

BW=[0 0 0 0 0 0 0 0;

0 1 1 0 0 1 1 1;

0 1 1 0 0 0 1 1;

0 1 1 0 0 0 0 0;

0 0 0 1 1 0 0 0;

0 0 0 1 1 0 0 0;

0 0 0 1 1 0 0 0;

0 0 0 0 0 0 0 0]

X=bwlabel(BW,4)

RGB=label2rgb(X,@jet,'k');

imshow(RGB,'notruesize')

8.利用选择控制点实现图像匹配。

Matlab图像匹配的步骤:

将标准图像和待匹配图像读入Matlab;指定图像中的控制点对并保存;使用互相关性进一步协调控制点对(可选);制定所需变换类型并根据控制点对推断变换参数;变换未匹配的图像。

%读入待匹配图像和标准图像

unregistered = imread('westconcordaerial.png');

imshow(unregistered)

orthophoto = imread('westconcordorthophoto.png');

figure,imshow(orthophoto)

%选择图像中对应的控制点

cpselect(unregistered(:,:,1),orthophoto)

%保存控制点对

input_points

base_points

%使用相关性进一步协调控制点对

input_points_corr=cpcorr(input_points,base_points,unregistered( :,:,1),orthophoto);

input_points_corr

%根据控制点对推断空间变换参数

mytform=cp2tform(input_points,base_points,'projective');

%变换未匹配的图像

registered=imtransform(unregistered,mytform);

figure,imshow(registered)

要求做前5个,6-8为选择实验。

相关文档