实验一:灰度变换与图像增强一、实验目的:1.掌握对图像进行灰度线性变换的基本方法;2.掌握通过直方均衡化对图像进行增强的基本方法。二、实验原理:1.假定原图像f(x,y)的灰度范围为[a,b],希望变换后的图像g(x,y)的灰度范围扩展至[c,d],其数学表达式为cayxfabcdyxg]),([),(2.如果一副图像的像素占有很多的灰度级而且分布均匀,那么这样的图像往往有高对比度和多变的灰度色调。直方图均衡化就是一种能仅靠输入图像直方图信息自动达到这种效果的变换函数。它的基本思想是对图像中像素个数多的灰度级进行展宽,而对图像中像素个数少的灰度进行压缩,从而扩展像原取值的动态范围,提高了对比度和灰度色调的变化,使图像更加清晰。三、实验过程与结果:1.灰度变换:原图像原图像的直方图灰度变换后图像灰度变换后图像的直方图2.图像增强:直方图均衡化前后的图像均衡化前后的直方图四、流程图:1.灰度变换:figure,imhist(I);J1=imadjust(I,[0.2,0.8],[]);figure,imshow(J1);开始2.图像增强:显示原图像的直方图输入图像灰度变换输出灰度变换后的图像与直方图结束开始输入图像五、源程序1.灰度变换:clearallI=imread('Fig10.29(a).jpg');imshow(I);五、源程序2.灰度变换:clearallI=imread('Fig10.29(a).jpg');imshow(I);figure,imhist(J1);r用histeq函数完成直方图均衡化显示直方图均衡化前后的图像输出均衡化前后的直方图结束3.图像增强:clearallA=imread('Fig10.29(a).jpg');I=histeq(A);figure(1);subplot(1,2,1),imshow(A);subplot(1,2,2),imshow(I);figure(2),subplot(1,2,1),imhist(A);subplot(1,2,2),imhist(I);实验二:同态滤波一、实验目的:利用MATLAB实现图像滤波,边界检测,从空间域与频域上加深对图像滤波的理解。二、实验原理:同态滤波的基本原理是先对待增强的图像取对数,然后进行Fourier变换,在频域中进行适当的滤波,最后通过反Fourier变换得到增强的图像。其原理框图如下图所示。),(yxf),(yxgInDFTH(u,v)exp三、实验过程与结果:四、流程图五、源程序:I=imread('Fig10.29(a).jpg');figure(1),subplot(1,2,1),imshow(I);title('原始图像');I=im2double(I);%求对数lni=log(I+0.000001);Fi=fftshift(fft2(lni));[M,N]=size(Fi);%确定傅里叶变换的原点xo=floor(M/2);yo=floor(N/2);%同态滤波参数设置;求H(u,v)Hh=2;H1=0.5;c=1.50;D0=80;fori=1:Mforj=1:ND=(i-xo)^2+(j-yo)^2h(i,j)=(Hh-H1)*(1-exp(-c*(D/D0^2)))+H1;endend%滤波矩阵点乘Gi=h.*Fi;%傅里叶逆变换flno=ifftshift(Gi);go=real(ifft2(flno));%求指数go=exp(go);gxy=im2uint8(go);figure(1),subplot(1,2,2),imshow(gxy);title('同态滤波结果');figure(2);mesh(h);colormap(jet);title('同态滤波器特性曲线');实验三:图像分割一、实验目的:1、熟悉matlab图像处理工具箱及图像边缘检测函数的使用;2、掌握用阈值法进行图像分割的基本方法。二、实验原理:处理图像边缘点时模板会超出图像范围,此时有两种解决方法:①不处理图像最边缘的点,只处理模板不会超出图像范围的点。所得结果图的大小小于原图像。②为了输出结果和原图像大小一致,应先将原图像扩展后再进行处理,即生成一个比原图像大一些的矩阵,将原图像置于矩阵的中心位置。扩展方法可选择直接加零或对称扩展。具体扩展大小跟模板大小有关。三、实验过程与结果:四、流程图:五、源程序:clearall;clc;%读取图像I=imread('Fig10.29(a).jpg');%创建变量[a,b]=size(I);J=zeros(a,b);%设定迭代阈值T0=1;%初始化T1=mean(I(:));r1=find(IT1);r2=find(I=T1);开始设定迭代阈值输入图像用迭代法求解图像分割阈值输出分割后图像结束T2=(mean(I(r1))+mean(I(r2)))/2;%迭代求解图像分割阈值whileabs(T2-T1)=T0T1=T2;r1=find(IT1);r2=find(I=T1);T2=(mean(I(r1))+mean(I(r2)))/2;endT2=ceil(T2);%输出二值图像fori=1:a*bJ(i)=255*(I(i)T2)+0*(I(i)=T2);end%显示图像figure(1);imshow(I);title('原始图像');figure(2);imhist(I);title('灰度直方图');holdon;plot([T2,T2],[0,6000],'r');%画分割线str1=num2str(T2);text(T2+5,2000,'分割阈值');%标注分割阈值text(T2+5,1800,str1);holdoff;figure(3);imshow(J);title('迭代法分割输出');实验四:形态学图像处理一、实验目的:1、了解膨胀和腐蚀的MATLAB实现方法;2、掌握图像膨胀、腐蚀、开启、闭合等形态学操作函数的使用方法;3、了解二进制图像的形态学应用。二、实验原理:(1)形态学操作:形态学操作就是基于形状的一系列图像处理操作,通过将结构元素作用于输入图像来产生输出图像。基本的形态学操作有腐蚀与膨胀,他们的应运广泛:消除噪声,分割独立的图像元素,以及连接相邻的元素;寻找图像中明显的极大值区域或极小值区域。(2)膨胀:此操作将图像A与任意形状的内核(B),通常为正方形或圆形,进行卷积;内核有一个可定义的锚点,通常定义为内核中心点;进行膨胀操作时,将内核B画过图像,将内核B覆盖区域的最大像素值提取,并代替锚点位置的像素。显然这一最大化操作会导致图像中的亮区开始“扩展”。(3)腐蚀:它在形态学操作家族里是膨胀操作的孪生姐妹。它提取的是内核覆盖下的像素最小值;进行腐蚀操作时,将内核B画过图像,将内核B覆盖区域的最小像素值提取,并代替锚点位置像素,腐蚀操作的结果是图片亮区变细,黑色区域变大。三、实验过程与结果:四、流程图:五、源程序:I=imread('Fig10.29(a).jpg');figure(1),subplot(2,3,1),imshow(I);title('原始图像');开始选取结构元素输入图像用imerode函数对图像进行腐蚀运算输出腐蚀、膨胀、开运算、闭运算后的图像结束用imdilate函数对图像进行膨胀运算用imerode函数对膨胀后的图像进行开运算用imdilate函数对腐蚀后的图像进行开运算%选取结构元素se=strel('square',3);%腐蚀运算及显示腐蚀后图像i1=imerode(I,se);figure(1),subplot(2,3,2),imshow(i1);title('腐蚀后图像');%膨胀运算及显示膨胀后的图像i2=imdilate(I,se);figure(1),subplot(2,3,3),imshow(i2);title('膨胀后图像');%开运算及开运算后图像i3=imdilate(i1,se);figure(1),subplot(2,3,4),imshow(i3);title('开运算图像');%闭运算及闭运算后图像i4=imerode(i2,se);figure(1),subplot(2,3,5),imshow(i4);title('闭运算图像');