Matlab图像处理实验指导书_第1页
Matlab图像处理实验指导书_第2页
Matlab图像处理实验指导书_第3页
Matlab图像处理实验指导书_第4页
Matlab图像处理实验指导书_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

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

文档简介

1、郑 州 大 学 Matlab应用图像处理 课程实 验 指 导 书电气工程学院·生物医学工程系2006年11月实验一 Matlab图像显示方法一、实验目的1. 了解Matlab的基本功能及操作方法2. 练习图像读写和显示函数的使用方法3. 掌握Matlab支持的五类图像的显示方法二、实验内容1. 图像的读写a) 图像读RGB = imread('ngc6543a.jpg');b) 图像写先从一个.mat 文件中载入一幅图像,然后利用图像写函数imwrite,创建一个.bmp文件,并将图像存入其中。load clownwhosimwrite(X,map,'clow

2、n.bmp')c) 图像文件格式转换bitmap = imread('clown.bmp','bmp');imwrite(bitmap,'clown.png','png');2. 图像显示a) 二进制图像的显示BW1=zeros(20,20);%创建仅包含0/1的双精度图像BW1(2:2:18,2:2:18)=1;imshow(BW1,'notruesize');whosBW2=uint8(BW1);figure,imshow(BW2,'notruesize')BW3=BW2=0; %逻辑标

3、志置为onfigure,imshow(BW3,'notruesize')whosBW=imread('circles.tif');imshow(BW);figure,imshow(BW);figure,imshow(BW,1 0 0;0 0 1);b) 灰度图像的显示I=imread('testpat1.tif');J=filter2(1 2;-1 -2,I);imshow(I)figure,imshow(J,)c) 索引图像的显示load clown %装载一幅图像imwrite(X,map,'clown.bmp'); %保存为

4、bmp文件imshow(X)imshow(X,map)d) RGB图像的显示I=imread('flowers.tif');imshow(I)RGB=imread('ngc6543a.jpg');figure,imshow(RGB)imshow(I(:,:,3)% 显示第3个颜色分量e) 多帧图像的显示mri=uint8(zeros(128,128,1,27); % 27帧文件mri.tif初始化 for frame=1:27 mri(:,:,:,frame),map=imread('mri.tif',frame); % 读入每一帧 endims

5、how(mri(:,:,:,3),map); % 显示第3帧figure,imshow(mri(:,:,:,6),map); % 显示第6帧figure,imshow(mri(:,:,:,10),map); % 显示第10帧figure,imshow(mri(:,:,:,20),map); % 显示第20帧f) 显示多幅图像X1,map1=imread('forest.tif');X2,map2=imread('trees.tif');subplot(1,2,1),imshow(X1,map1)subplot(1,2,2),imshow(X2,map2)subp

6、lot(1,2,1),subimage(X1,map1)subplot(1,2,2),subimage(X2,map2)三、思考题:1. 图像显示时,若不带参数notruesize,显示效果如何?2. 如何显示RGB图像的某一个颜色分量?3. 如何显示多帧图像的所有帧?如何根据多帧图像创建电影片段?实验二 图像运算一、实验目的1. 熟悉图像点运算和代数运算的实现方法2. 了解图像几何运算的简单应用3. 了解图像的邻域操作二、实验内容1. 图像点运算读入图像rice.tif,通过图像点运算改变对比度。rice=imread('rice.tif');subplot(131),ims

7、how(rice)I=double(rice); %转换为双精度类型J=I*0.43+60;rice2=uint8(J); %转换为uint8subplot(132),imshow(rice2)J=I*1.5-60;rice3=uint8(J); %转换为uint8subplot(133),imshow(rice3)2. 图像的代数运算a) 图像加法运算I=imread('rice.tif');imshow(I)J=imread('cameraman.tif');figure,imshow(J)K=imadd(I,J);figure,imshow(K)K2=im

8、add(I,J,'uint16');figure,imshow(K2,)RGB=imread('flowers.tif');RGB2=imadd(RGB,50);imshow(RGB)figure,imshow(RGB2)RGB3=imadd(RGB,100);figure,imshow(RGB3)b) 图像减法运算I=imread('rice.tif');imshow(I)background = imopen(I,strel('disk',15); %估计背景图像figure, imshow(background);I2=im

9、subtract(I,background); %从原始图像中减去背景图像figure, imshow(I2)c) 图像乘法运算I=imread('moon.tif');J=immultiply(I,1.2);K=immultiply(I,0.5);imshow(I)figure,imshow(J)figure,imshow(K)d) *图像除法运算3. 图像的几何运算a) 改变图像的大小读入图像ic.tif,改变图像大小,分别将原图像放大1.5倍和缩小0.5倍。I=imread('ic.tif');J=imresize(I,1.25);K=imresize(I

10、,0.8);imshow(I)figure,imshow(J)figure,imshow(K)Y=imresize(I,100,150);figure,imshow(Y)b) 旋转一幅图像将上述图像顺时针和逆时针旋转任意角度,观察显示效果。I=imread('ic.tif');J=imrotate(I,30,'bilinear');J1=imrotate(I,30,'bilinear','crop');imshow(I)figure,imshow(J)figure,imshow(J1)J2=imrotate(I,-15,'

11、bilinear');figure,imshow(J2)c) 图像剪切通过交互式操作,从一幅图像中剪切一个矩形区域。I=imread('ic.tif');imshow(I);I1=imcrop;figure,imshow(I1)I2=imcrop(I,30 60 120 160);figure,imshow(I2)4. *图像的邻域操作读入图像tire.tif,分别使用函数nlfilter和blkproc对图像进行滑动邻域操作和分离邻域操作。I=imread('tire.tif');f=inline('max(x(:)'); %构造复合函

12、数I2=nlfilter(I,3 3,f); %滑动邻域操作imshow(I)figure,imshow(I2)I=imread('tire.tif');f=inline('uint8(round(mean2(x)*ones(size(x)'); %构造复合函数I2=blkproc(I,8 8,f); %滑动邻域操作imshow(I)figure,imshow(I2)实验三 图像变换与滤波器设计一、实验目的1. 了解傅立叶变换、离散余弦变换及Radon变换在图像处理中的应用2. 了解Matlab线性滤波器的设计方法二、实验内容1. 傅立叶变换a) 绘制一个二值图

13、像矩阵,并将其傅立叶函数可视化。f=zeros(30,30);f(5:24,13:17)=1;imshow(f,'notruesize')F=fft2(f);F2=log(abs(F);figure,imshow(F2,-1 5,'notruesize');colormap(jet); F=fft2(f,256,256); %零填充为256×256矩阵figure,imshow(log(abs(F),-1 5,'notruesize');colormap(jet); F2=fftshift(F); %将图像频谱中心由矩阵原点移至矩阵中心

14、figure,imshow(log(abs(F2),-1 5,'notruesize');colormap(jet);b) 利用傅立叶变换分析两幅图像的相关性,定位图像特征。读入图像text.tif,抽取其中的字母a。bw=imread('text.tif');a=bw(59:71,81:91);imshow(bw);figure,imshow(a);C=real(ifft2(fft2(bw).*fft2(rot90(a,2),256,256);%求相关性figure,imshow(C,);thresh=max(C(:);figure,imshow(C>t

15、hresh-10)figure,imshow(C>thresh-15)2. 离散余弦变换(DCT)a) 使用dct2对图像autumn.tif进行DCT变换。RGB=imread('autumn.tif');imshow(RGB)I=rgb2gray(RGB); %转换为灰度图像figure,imshow(I)J=dct2(I);figure,imshow(log(abs(J),),colormap(jet(64);colorbar;b) 将上述DCT变换结果中绝对值小于10的系数舍弃,使用idct2重构图像并与原图像比较。RGB=imread('autumn.t

16、if');I=rgb2gray(RGB); %转换为灰度图像J=dct2(I);figure,imshow(I)K=idct2(J);figure,imshow(K,0 255)J(abs(J)<10)=0; %舍弃系数K2=idct2(J);figure,imshow(K2,0 255)c) 利用DCT变换进行图像压缩。I=imread('cameraman.tif');I=im2double(I);T=dctmtx(8);B=blkproc(I,8,8,'P1*x*P2',T,T');mask=1 1 1 1 0 0 0 0 1 1 1

17、 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0;B2=blkproc(B,8 8,'P1.*x',mask);I2=blkproc(B2,8 8,'P1*x*P2',T',T);imshow(I)figure,imshow(I2)3. Radon变换使用Radon逆变换重建图像。P=phantom(256); %创建256灰度级大脑图imshow(P)theta1=0:10:170;R1,x

18、p=radon(P,theta1); %18个投影theta2=0:5:175; R2,xp=radon(P,theta2); %36个投影theta3=0:2:178; R3,xp=radon(P,theta3); %90个投影figure,imagesc(theta3,xp,R3);colormap(hot);colorbar% 使用逆变换重构图像I1=iradon(R1,10); %用R1重构图像I2=iradon(R2,5); %用R2重构图像I3=iradon(R3,2); %用R3重构图像figure,imshow(I1)figure,imshow(I2)figure,imshow

19、(I3)4. *Matlab线形滤波器设计采用频率变换方式,通过一维最优波纹FIR滤波器创建二维FIR滤波器(p96)。b=remez(10,0 0.4 0.6 1,1 1 0 0);%阶次,频率向量,对应的理想幅频响应h=ftrans2(b);H,w=freqz(b,1,64,'whole');colormap(jet(64)plot(w/pi-1,fftshift(abs(H);%使x轴取值0处对应曲线中心figure,freqz2(h,32 32)实验四 形态学操作与空间变换一、实验目的1. 了解膨胀和腐蚀的Matlab实现方法2. 掌握图像膨胀、腐蚀、开启、闭合等形态学

20、操作函数的使用方法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等),重新进行膨胀操作。c) 对图像text.tif进行上

21、述操作,观察不同结构元素膨胀的效果。BW3=imread('text.tif');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.t

22、if进行腐蚀操作。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=imerod

23、e(BW1,se); %先腐蚀,删除较细的直线figure,imshow(BW2)BW3=imdilate(BW2,se); %再膨胀,恢复矩形的大小figure,imshow(BW3)方法二:使用形态开启函数(imopen)。BW1=imread('circbw.tif');imshow(BW1)se=strel('rectangle',40 30); BW2=imopen(BW1,se); %开启操作figure,imshow(BW2)b) 改变结构元素的大小,重新进行开启操作,观察处理结果。se=strel(rectangle,20 10); se=str

24、el(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

25、=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寻找其局部

26、极大值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 1

27、0 11 10 10 10;B=imregionalmax(A)b) 利用函数imextendedmax寻找像素值大于其邻域像素值2个单位的局部极大值。C=imextendedmax(A,2)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=meshgri

28、d(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, )7. *使用伪彩色显示标记矩阵。BW=0 0 0 0 0 0 0 0; 0 1 1 0 0 1 1 1;

29、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 0X=bwlabel(BW,4)RGB=label2rgb(X,jet,'k');imshow(RGB,'notruesize')8. 利用选择控制点实现图像匹配。Matlab图像匹配的步骤:将标准图像和待匹配图像读入Matlab;指定图像中的控制点对并保存;使用互相关性进一步协调控制点对(可选);制定所需变换类型并根据控制点对推断变换参数;变换未匹配的图像。%读入待

30、匹配图像和标准图像unregistered = imread('westconcordaerial.png');imshow(unregistered)orthophoto = imread('westconcordorthophoto.png');figure,imshow(orthophoto)%选择图像中对应的控制点cpselect(unregistered(:,:,1),orthophoto)%保存控制点对input_pointsbase_points%使用相关性进一步协调控制点对input_points_corr=cpcorr(input_points

31、,base_points,unregistered(:,:,1),orthophoto);input_points_corr %根据控制点对推断空间变换参数mytform=cp2tform(input_points,base_points,'projective');%变换未匹配的图像registered=imtransform(unregistered,mytform);figure,imshow(registered)实验五 图像增强与复原一、实验目的:1. 了解灰度变换增强和空域滤波增强的Matlab实现方法2. 掌握直方图灰度变换方法3. 掌握噪声模拟和图像滤波函数的使

32、用方法4. 了解图像复原的Matlab实现方法二、实验内容1. 灰度变换增强a) 线段上像素灰度分布读入灰度图像debye1.tif,采用交互式操作,用improfile绘制一条线段的灰度值。imshow('debye1.tif')improfile读入RGB图像flowers.tif,显示所选线段上红、绿、蓝颜色分量的分布imshow('flowers.tif')improfileb) 直方图变换i. 直方图显示读入图像rice.tif,在一个窗口中显示灰度级n=64,128和256的图像直方图。I=imread('rice.tif');ims

33、how(I)figure,imhist(I,64)figure,imhist(I,128)ii. 直方图灰度调节利用函数imadjust调解图像灰度范围,观察变换后的图像及其直方图的变化。I=imread('rice.tif');imshow(I)figure,imhist(I)J=imadjust(I,0.15 0.9,0 1);figure,imhist(J)figure,imshow(J)I=imread('cameraman.tif');imshow(I)figure,imhist(I)J=imadjust(I,0 0.2,0.5 1);figure,i

34、mhist(J)figure,imshow(J)iii. 直方图均衡化分别对图像pout.tif和tire.tif进行直方图均衡化处理,比较处理前后图像及直方图分布的变化。I=imread('pout.tif');imshow(I)figure,imhist(I)J=histeq(I);figure,imhist(J)figure,imshow(J)I=imread('tire.tif');imshow(I)figure,imhist(I)J=histeq(I);figure,imshow(J)figure,imhist(J)2. 空域滤波增强A) 噪声模拟利用

35、函数imnoise给图像eight.tif分别添加高斯(gaussian)噪声和椒盐(salt & pepper)噪声。I=imread('eight.tif');imshow(I)I1=imnoise(I,'gaussian',0,0.01);figure,imshow(I1)I2=imnoise(I,'salt & pepper');figure,imshow(I2)B) 空域滤波<i> 对上述噪声图像进行均值滤波和中值滤波,比较滤波效果。I=imread('eight.tif');J=imnois

36、e(I,'salt & pepper',0.02);imshow(J)K1=medfilt2(J,3 3); % 3*3中值滤波figure,imshow(K1)K2=filter2(fspecial('average',5),J)/255;figure,imshow(K2)<ii> 总结均值滤波和中值滤波的特点及使用场合。均值滤波器是一种最常用的线性低通平滑滤波器。可抑制图像中的噪声,但同时也使图像变得模糊中值滤波器是一种最常用的非线性平滑滤波器。可消除图像中孤立的噪声点,又可产生较少的模糊<iii> *对图像'satu

37、rn.tif'采用'laplacian'高通滤波器进行锐化滤波。I=imread('saturn.tif');imshow(I)h=fspecial('laplacian'); I2=filter2(h,I);figure,imshow(I2)3. 图像复原A) 模糊与噪声<i> 对图像flowers.tif分别采用运动PSF和均值滤波PSF进行模糊。I=imread('flowers.tif');I=I(10+1:256,222+1:256,:); %剪切图像imshow(I)len=30; %运动位移 th

38、eta=10; %运动角度PSF=fspecial('motion',len,theta);blurred=imfilter(I,PSP,'circular','conv');figure,imshow(blurred)I=imread('flowers.tif');imshow(I) H=fspecial('motion',50,45); %运动PSPmotionblur=imfilter(I,H);figure,imshow(motionblur)H=fspecial(disk,10); %均值滤波PSPave

39、rageblur=imfilter(I,H);figure,imshow(averageblur)<ii> 在上述模糊图像上再添加噪声J=imnoise(motionblur,'salt & pepper');figure,imshow(J)B) 维纳滤波复原<i> 使用维纳滤波复原函数deconvwnr复原无噪声模糊图像。len=30; theta=10; PSF=fspecial('motion',len,theta);blurred=imfilter(I,PSF,'circular','conv

40、9;);figure,imshow(blurred)wnr1=deconvwnr(blurred,PSF); %真实PSFfigure,imshow(wnr1)%非真实PSF wnr2=deconvwnr(blurred,fspecial('motion',2*len,theta); figure,imshow(wnr2)%非真实PSF wnr3=deconvwnr(blurred,fspecial('motion',len,2*theta); figure,imshow(wnr3)<ii> *使用维纳滤波复原函数deconvwnr复原模糊噪声图像。

41、PSF=fspecial('motion',len,theta);blurred=imfilter(I,PSF,'circular','conv');noise=0.1*randn(size(I);BlurredNoisy=imadd(blurred,im2uint8(noise);figure,imshow(BlurredNoisy)wnr4=deconvwnr(BlurredNoisy,PSF);figure,imshow(wnr4) <iii> *设置信噪比和相关函数的维纳滤波复原(p179图9.12)。NSR=sum(nois

42、e(:).2)/sum(im2double(I(:).2); %计算信噪比wnr5=deconvwnr(BlurredNoisy,PSF,NSR);figure,imshow(wnr5) %设置信噪比的复原结果NP=abs(fftn(noise).2; %噪声能量谱密度NCORR=fftshift(real(ifftn(NP); %噪声自相关函数IP=abs(fftn(im2double(I).2; %图像能量谱密度ICORR=fftshift(real(ifftn(IP); %图像自相关函数wnr6=deconvwnr(BlurredNoisy,PSF,NCORR,ICORR);figure

43、,imshow(wnr6) %设置自相关函数的复原结果 实验六 图像分析与理解及图像压缩一、实验目的1. 了解DCT变换在图像压缩中的应用2. 掌握边缘检测的Matlab实现方法3. 了解用四叉数分解函数进行区域分割的方法4. 了解Matlab区域操作函数的使用方法5. 了解图像分析和理解的基本方法二、实验内容1. 图像分析与理解A) 边缘检测<i> 使用edge函数对图像rice.tif进行边缘检测。I=imread('rice.tif'); imshow(I)bw1=edge(I,'roberts');bw2=edge(I,'sobel&

44、#39;);bw3=edge(I,'prewitt');bw4=edge(I,'canny');bw5=edge(I,'log');figure,imshow(bw1)figure,imshow(bw2)figure,imshow(bw3)figure,imshow(bw4)figure,imshow(bw5)<ii> 要求同时比较'roberts','sobel','prewitt','canny','log'算子的检测效果。edge函数提供的最有效的边

45、缘检测方法是canny方法。优点:使用两种不同的阈值分别检测强、弱边缘,并且仅当弱边缘与强边缘相连时,才将弱边缘包含在输出图像中。该方法不易受噪声干扰,能够在噪声和边缘间取得较好的平衡,检测到真正的弱边缘。B) 区域操作使用区域选择函数roicolor, 区域滤波函数roifilt2和区域填充函数roifilld对图像pout.tif或eight.tif进行区域操作。I=imread('pout.tif');imshow(I)BW=roipoly;figure,imshow(BW)h=fspecial('unsharp');I2=roifilt2(h,I,BW)

46、;figure,imshow(I2)I3=roifill;figure,imshow(I3);I=imread('eight.tif'); imshow(I)c=222 272 300 270 221 194;r=21 21 75 121 121 75;BW=roipoly(I,c,r);figure,imshow(BW)H=fspecial('unsharp');J1=roifilt2(H,I,BW);figure,imshow(J1)J2=roifill(I,c,r);figure,imshow(J2)C) *区域分割使用函数qtdecomp对图像alumg

47、rns.tif进行四叉树分解。I=imread('alumgrns.tif');I=I(1+1:256,1+1:256);imshow(I)S=qtdecomp(I,0.2);figure,imshow(S)S=qtdecomp(I,0.1);figure,imshow(S)D) 图像分析与理解*用分水岭分割函数watershed对图像afmsurf.tif进行分割,测试互相接触的对象。afm=imread('afmsurf.tif');subplot(231),imshow(afm),title('Original Image');se=str

48、el('disk',15);Itop=imtophat(afm,se); % 高帽变换subplot(232),imshow(Itop, ),title('Tophat Image');Ibot=imbothat(afm,se); % 低帽变换subplot(233),imshow(Ibot, ),title('Bottomhat Image');Ienhance=imsubtract(imadd(Itop,afm),Ibot);subplot(234),imshow(Ienhance),title('Original+Tophat-Bo

49、ttomhat');Iec=imcomplement(Ienhance);Iemin=imextendedmin(Iec,22); % 搜索谷值Iimpose=imimposemin(Iec,Iemin); % 置谷值为0subplot(235),imshow(Iimpose),title('Complement of Enhanced Image');wat=watershed(Iimpose); % 分水岭分割subplot(236),imshow(wat),title('Watershed Segmented Image');rgb=label2r

50、gb(wat);subplot(236),imshow(rgb),title('Color Segmented Image');2. 图像压缩A) DCT变换在图像压缩中的应用执行Matlab自带的演示程序dctdemo,比较DCT变换矩阵舍弃系数对重构图像的影响dctdemoB) *小波变换在图像压缩中的应用Matlab基于腐蚀和膨胀的边缘检测文/天神 一.课题背景:形态学运算只针对二值图像(二进制图像),并依据数学形态学(MathermaticalMorphogy)集合论方法发展起来的图像处理方法,起源于岩相对岩石结构的定量描述工作,在数字图像处理和机器视觉领域中得到了广泛

51、的应用,形成了一种独特的数字图像分析方法和理论。数学形态学是图像处理和模式识领域的新方法,其基本思想是:用具有一定形态的结构元素去量度和提取图像中的对应形状,以达到图像分析和识别的目的。优势有以下几点:有效滤除噪声,保留图像中原有信息,算法易于用并行处理方法有效实现(包括硬件实现),基于数学形态学的边缘信息提取处理优于基于微分运算的边缘提取算法,提取的边缘比较平滑,提取的图像骨架也比较连续,断点少。 二、课题相关原理:形态学基本运算:特殊领域运算形式结构元素(StructureElement),在每个像素位置上与二值图像对应的区域进行特定的逻辑运算。运算结果是输出图像的相应像素。运算效果取决于

52、结构元素大小内容以及逻辑运算性质。常见形态学运算有腐蚀(Erosion)和膨胀(Dilation)两种。集合论是数学形态学的基础。有集合、元素、子集、并集、补集、位移、映像(镜像对称)、差集等集合的基本概念。对象和结构元素的3种关系:对象X(Object)、结构元素B(StructureElement)B include in X 包含于 、Bhit X 击中(不全包含) 、B miss X 击不中(不包含)平移、对称集:Bx=Uyx+y B=Uy-y腐蚀:一种消除边界点,使边界向内部收缩的过程。利用它可以消除小而且无意义的物体。B对X腐蚀所产生的二值图像E是满足以下条件的点(x,y)的集合:

53、如果B的原点平移到点(x,y),那么B将完全包含于X中。膨胀:将与物体接触的所有背景点合并到该物体中,使边界向外部扩张的过程。利用它可以填补物体中的空洞。B对X膨胀所产生的二值图像D是满足以下条件的点(x,y)的集合:如果B的原点平移到点(x,y),那么它与X的交集非空。腐蚀和膨胀运算中存在对偶原理:XB,它是所有满足以下条件的点X的集合:在B中存在一点y,而且在X中存在一点x,使得x=x+y。基本运算:1.开运算(先腐蚀后膨胀的过程):利用它可以消除小物体,在纤细点处分离物体,平滑较大物体边界,但同时并不明显改变原来物体的面积。OPEN(X,B)2.闭运算(先膨胀后腐蚀的过程):利用它可以填

54、充物体内细小空洞,连接临近物体、平滑其边界,但同时并不明显改变原来物体的面积。CLOSE(X,B)通常由于噪声的影响,图像在阈值化后所得到的边界通常都很不平滑,物体区域具有一些噪声孔,而背景区域上散布着一些小的噪声物体,连续的开和闭运算可以有效的改善这种情况,而有时,我们需要经过多次腐蚀之,后再加上相同次数的膨胀,才能产生比较好的处理效果。另外两种是 3.击中,击不中变换HMT(模板严格匹配) 以及4.边缘和骨架(Boundary and Skeleton) 三、腐蚀和膨胀的Matlab实现:腐蚀:删除对象边界某些像素。膨胀:给图像中的对象边界添加像素。在操作中,输出图像中所有给定像素的状态都是通过对输入图像的相应像素及邻域使用一定的规则进行确定。在膨胀操作时,输出像素值是输入图像相应像素邻域内所有像素的最大值。在二进制图像中,如果任何像素值为1,那么对应的输出像素值为1;而在腐蚀操作中,输出像素值是输入图像相应像素邻域内所有像素的最小值。在二进制图像中,如果任何一个像素值为0,那么对应的输出像素值为0。结构元素的原点定义在对输入图像感兴趣的位置。对于图像边缘的像素,由结构元素定义的邻域将会有一部分位于图像边界之外。为了有效处理边界像素,进行形态学运算的函数通常都会给出超出图像、未指定数值的像素指定一个数值,这样就类似于函数给图像填充了额外的

温馨提示

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

评论

0/150

提交评论