您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > 数字图像处理实验-完整代码(原创精心整理)
实验一图象灰度变换(2学时)一、实验目的:理解数字图象处理的基本过程,掌握常用图象灰度变换算法,观察图像图象灰度变换的结果,加深对数字图象基本概念的理解。二、实验内容:1、灰度线性变换变换函数为:s=ar+b设计程序,实现(a1,b=0)、(0a1,b=0)、(a=1,b0)和(a=1,b0)等情况下的灰度变换处理,并比较处理前后的图象效果。2、图象二值化设计程序,实现图象的二值化。并给出三种门限下的处理结果。3、负象变换设计程序,实现图象的反转操作(负象变换),并比较处理前后的图象结果。4、灰度非线性变换(选做内容)设计程序,实现图象的指数变换和对数变换。三、实验步骤:1、获取实验用图像:使用imread函数将图像读入Matlab,用size函数(或imfinfo函数)获取图象大小。2、产生灰度变换函数:s=ar+b用imshow函数分别观察在(a1,b=0)、(0a1,b=0)、(a=1,b0)和(a=1,b0)四情况下处理前后的结果。适当选择参数,使处理结果达到较好的效果。记录下所对应的参数。3、用imwrite函数保存处理图象结果。4、设计门限化方法实现图象的二值化的变换函数,并进行程序设计实现。分别选择三个门限值,观察处理结果。5、设计实现反转操作的变换函数,并进行程序设计实现。观察处理结果。6、分别设计实现图象的指数变换和对数变换的变换函数,参数自己选定,并比较处理前后的图象结果。(选做内容)四、实验报告要求:画出算法的规范化程序设计流程图。用plot等函数生成各类灰度变换函数曲线,用imshow函数显示处理前后图象。在实验报告中提交原图像和各种变换函数的曲线,以及按各种变换函数处理后的图像,并进行实验结果分析。选做内容可不写入报告中。实验一代码R=imread('实验1原图.jpg');[m,n]=size(R)figure,imshow(R);title('原图1');S1=R*3;figure,imshow(S1);title('a=3,b=0');imwrite(S1,'1.21.jpg');N=im2double(R);S2=N*0.5;figure,imshow(S2);title('a=0.5,b=0');imwrite(S2,'1.22.jpg');S3=R+10;figure,imshow(S3);title('a=1,b=10');imwrite(S3,'1.23.jpg');S4=N+0.5;figure,imshow(S4);title('a=1,b=0.5');imwrite(S4,'1.24.jpg');X1=R64;figure,imshow(X1);title('门限值为64');imwrite(X1,'1.41.jpg');X2=R128;figure,imshow(X2);title('门限值为128');imwrite(X2,'1.42.jpg');X3=R192;figure,imshow(X3);title('门限值为192');imwrite(X3,'1.43.jpg');Y=255-R;figure,imshow(Y);title('反转后的图像');imwrite(Y,'1.51.jpg');Z1=N.^0.6;figure,imshow(Z1);title('指数变换后的图像');imwrite(Z1,'1.61.jpg');Z2=log(N+1)%Z3=im2uint8(Z2)figure,imshow(Z3);figure,imshow(Z2,[]);title('对数变换后的图像');imwrite(Z2,'1.62.jpg');实验二图象直方图及均衡(2学时)一、实验目的:理解图象灰度直方图的概念,掌握图象直方图的计算方法;掌握直方图均衡化图象增强技术,理解均衡化的处理过程。二、实验内容:1、图象直方图设计程序,计算图象直方图。2、直方图均衡化设计程序,实现图象直方图均衡化处理,并比较处理前后图象。三、实验步骤:1、获取实验用图像:使用imread函数将图像读入Matlab用size函数(或imfinfo函数)获取图象大小。2、计算图象的灰度直方图,并用plot等函数生成灰度直方图。3、设计直方图均衡化算法,并进行程序设计实现。4、根据直方图均衡化的灰度变换函数实现图象灰度的映射变换,获得均衡化的图象结果。5、计算均衡化图象的灰度直方图,并用plot等函数生成灰度直方图。6、用imwrite函数保存处理图象结果。四、实验报告要求:画出直方图均衡化算法的规范化程序设计流程图。用imshow函数显示处理前后图象,用plot等函数生成原始图象和处理图象的灰度直方图,并进行实验结果分析。实验二代码X=imread('实验2原图.jpg');[m,n]=size(X)h=zeros(256);fori=1:256t=(X==(i-1));h(i)=sum(t(:));enda=0:255;figure,imshow(X);title('原图2');figure,bar(a,h);title('原图直方图');num=numel(X);c=cumsum(h);Y=round(c/num*256);W=zeros(m,n);fori=1:256W1=Y(i)*(X==i-1);W=W1+W;W=round(W);endfori=1:256t=(W==(i-1));h(i)=sum(t(:));endW=uint8(W);figure,imshow(W);title('均衡化后的图');figure,bar(a,h);title('均衡化后的直方图');imwrite(W,'2.6.jpg');实验三图像中值滤波(2学时)一、实验目的:进一步加深理解和掌握中值滤波的原理和具体算法。能解释用大小和形状不同的滑动窗口进行中值滤波后图像所呈现的一些特征。二、实验内容:1、矩形邻域中值滤波设计程序,实现3×3邻域中值滤波。比较处理前后图像效果。2、十字形中值滤波(选做)设计程序,实现5×5十字形中值滤波。比较处理前后图像效果。三、实验原理:对于给定的n个数值{a1,a2,…an},将它们按大小有序排列。当n为奇数时,位于中间位置的那个数值称为这n个数值的中值。记作med[a1,a2,…an]设x为M×N待处理图像,经窗口为Wn的中值滤波后,被处理像点(i,j)的输出为:)],([),(),(jixmedjiyjiWn=式中Wn(i,j)表示点(i,j)的邻域,它含有n个像素。四、实验步骤:1)读入图像;2)创建合适的滑动窗口;3)将该窗口内的图像灰度值重新排序;4)将排序后位于中间的数值作为中值;5)用中值取代被处理像素的原灰度值;6)滑动窗口到下一个位置,重复3)~5)。五、实验报告要求:按统一规定的实验报告格式提交报告。画出算法的规范化程序设计流程图。应包含程序清单,处理前后的图像特征比较及编程的心得体会(指编程过程中的难点及如何克服它的)。实验三代码1.将下列函数保存成文件mymidfilt.mfunctionB=mymidfilt(file_name,block_size)A=imread(file_name);[m,n]=size(A);k=floor(block_size/2);A2=zeros(m+2*k,n+2*k);A2(k+1:m+k,k+1:n+k)=A;%fourcornersA2(1:k,1:k)=A(1,1);%Upperleftcorner.A2(1:k,n+k+1:n+2*k)=A(1,n);%Upperrightcorner.A2(m+k+1:m+2*k,1:k)=A(m,1);%Lowerleftcorner.A2(m+k+1:m+2*k,n+k+1:n+2*k)=A(m,n);%Lowerrightcorner.%foursidesfori=1:kA2(i,k+1:n+k)=A(1,1:n);%Upper.A2(m+k+i,k+1:n+k)=A(m,1:n);%Lower.A2(k+1:m+k,i)=A(1:m,1);%Left.A2(k+1:m+k,n+k+i)=A(1:m,n);%Right.end;B=zeros(m,n);pixel_block=zeros(1,block_size^2);fori=1:mforj=1:nk=floor(block_size/2);pixel_block=reshape(A2(i:i+2*k,j:j+2*k),1,block_size^2);sorted_block=sort(pixel_block);median_position=ceil(block_size^2/2);block_median=sorted_block(median_position);B(i,j)=block_median;end;end;B=uint8(B);2.调用函数mymidfiltR=imread('实验3原图.jpg');figure,imshow(R);title('原图3');X=mymidfilt('实验3原图.jpg',5);figure,imshow(X);title('中值滤波后的图像');imwrite(X,'3.1.jpg');实验三选作部分代码A=imread('实验3原图.jpg');A=im2double(A);[m,n]=size(A);block_size=5;k=floor(block_size/2);A2=zeros(m+2*k,n+2*k);A2(k+1:m+k,k+1:n+k)=A(1:m,1:n);%fourcornersA2(1:k,1:k)=A(1,1);%Upperleftcorner.A2(1:k,n+k+1:n+2*k)=A(1,n);%Upperrightcorner.A2(m+k+1:m+2*k,1:k)=A(m,1);%Lowerleftcorner.A2(m+k+1:m+2*k,n+k+1:n+2*k)=A(m,n);%Lowerrightcorner.%foursidesfori=1:kA2(i,k+1:n+k)=A(1,1:n);%Upper.A2(m+k+i,k+1:n+k)=A(m,1:n);%Lower.A2(k+1:m+k,i)=A(1:m,1);%Left.A2(k+1:m+k,n+k+i)=A(1:m,n);%Right.end;B=zeros(m,n);B0=zeros(1,9);B1=zeros(1,block_size^2);fori=1:mforj=1:nk=floor(block_size/2);B1=reshape(A2(i:i+2*k,j:j+2*k),1,block_size^2);B0=[B1(3)B1(8)B1(11)B1(12)B1(13)B1(14)B1(15)B1(18)B1(23)];B0=sort(B0);block_median=B0(5);B(i,j)=block_median;end;end;figure,imshow(B);title('5X5十字变换后图像');imwrite(B,'3.2.jpg');实验四图像空域锐化增强(2学时)一、实验目的进一步加深理解和掌握图像锐化的的概念,掌握常用空域锐化增强技术。观察和理解图像锐化处理对加强图像中的目标边缘和图像细节的作用。理解图象锐化增强的处理过程和特点。二、实验内容1、一阶微分锐化增强设计程序,分别实现Roberts、Sobel、Priwitt算子的锐化处理。观察处理前后图象效果,分析实验结果和算法特点。2、拉普拉斯锐化增强设计程序,实现拉普拉斯图像和原始图像叠加的增强处理,即观察处理前后图像效果,分析实验结果和算法特点。三、实验原理:图像锐化技术的基本方法是对图像进行微商处理,并且将运算结果与原图像叠加。图像的梯度模值反映了图像灰度变化的速率,它包含了边缘及细节信息。我们可以梯度模值的计算作为算子,这个算子称为梯度算
本文标题:数字图像处理实验-完整代码(原创精心整理)
链接地址:https://www.777doc.com/doc-7170983 .html