数字图像处理实验报告-基于Matlab

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

华东师范大学电子工程系2017.6实验1:图像灰度级修正【实验目的】掌握常用的图像灰度级修正方法(灰度变换法和直方图均衡化),加深对直方图的理解。观察图像的增强效果,对灰度级修正前后的图像加以比较。【实验内容】1)编程实现图像的灰度变换,改变图像的输入、输出映射参数范围(线性拉伸和反比);2)修改参数gamma值(大于、小于、等于1),观察处理结果;3)对图像直方图作均衡化处理,显示均衡前后的图像及其直方图。【实验代码】original=imread('lena.bmp');linstr=imadjust(original,[0.30.7],[01]);%线性拉伸opposite=imadjust(original,[01],[10]);%反比above=imadjust(original,[01],[01],2);%gamma1equal=imadjust(original,[01],[01],1);%gamma=1below=imadjust(original,[01],[01],0.5);%gamma1subplot(3,3,1);imshow(original);title('原图像');subplot(3,3,2);imshow(linstr);title('线性拉伸');subplot(3,3,3);imshow(opposite);title('反比');subplot(3,3,4);imshow(above);title('gamma1');subplot(3,3,5);imshow(equal);title('gamma=1');subplot(3,3,6);imshow(below);title('gamma1');subplot(3,3,7);imhist(original);title('原图像直方图');histequal=histeq(original);%对图像均衡化subplot(3,3,8);imshow(histequal);title('均衡后的图像');subplot(3,3,9);imhist(histequal);title('均衡图像的直方图');axis([025602000]);【输出图像】【实验思考】根据以下图片以及实验结果可知gamma1时图像整体变暗,灰度级整体变小;gamma1时图像整体变亮,灰度级整体变小;而gamma=1时,图像维持不变。实验2:图像的平滑滤波【实验目的】平滑的目的是减少噪声对图像的影响。掌握线性滤波和中值滤波两种最典型、最常用的图像平滑方法,对输出结果加以比较、加深理解。【实验内容】1)编写并调试窗口为3×3、5×5的平滑滤波函数;如[111;111;111]/9、[121;242;121]/16等)2)编写并调试窗口为3×3、5×5的中值滤波函数。3)比较均值滤波和中值滤波的优缺点,分析窗口尺寸对滤波结果的影响。附:可供参考的Matlab函数有imnoise、imfilter、medfilt2【实验代码】functionfliterI=imread('lena.bmp');%原始图像读取J=imnoise(I,'salt&pepper',0.02);%含噪图像加椒盐噪声subplot(2,3,1);imshow(J);title('含噪图像');Newbuf1=AverageFilter(J,256,256,3);%3×3标准平均,调用均值滤波函数subplot(2,3,2);imshow(Newbuf1);title('3×3标准平均');Newbuf2=AverageFilter(J,256,256,5);%5×5标准平均,调用均值滤波函数subplot(2,3,3);imshow(Newbuf2);title('5×5标准平均');W=[121;242;121]/16;%设置加权平均掩膜Newbuf3=WeighFilter(J,W,256,256,3);%3×3加权平均,调用加权平均函数subplot(2,3,4);imshow(Newbuf3);title('3×3加权平均');Newbuf4=MedianFilter(J,256,256,3);%3×3中值滤波,调用中值滤波函数subplot(2,3,5);imshow(Newbuf4);title('3×3中值滤波');Newbuf5=MedianFilter(J,256,256,5);%5×5中值滤波,调用中值滤波函数subplot(2,3,6);imshow(Newbuf5);title('5×5中值滤波');%标准平均滤波函数functionNewbuf=AverageFilter(Oldbuf,M,N,m)%Newbuf滤波后图像矩阵%Oldbuf含噪图像矩阵%M、N含噪图像像素矩阵行、列%m均值滤波窗口大小f=zeros(M+m-1,N+m-1);%将原图像像素复制到f矩阵上,空出(m-1)/2大小的边界f((m-1)/2+1:M+(m-1)/2,(m-1)/2+1:N+(m-1)/2)=Oldbuf(1:M,1:N);%将与边界相邻的(m-1)/2行(或列)的像素值复制到边界,以填充边界f((m-1)/2+1:M+(m-1)/2,1:(m-1)/2)=Oldbuf(:,1:(m-1)/2);f((m-1)/2+1:M+(m-1)/2,N+(m-1)/2:N+m-1)=Oldbuf(:,N-(m-1)/2:N);f(1:(m-1)/2,(m-1)/2+1:N+(m-1)/2)=Oldbuf(1:(m-1)/2,:);f(M+(m-1)/2:M+m-1,(m-1)/2+1:N+(m-1)/2)=Oldbuf(M-(m-1)/2:M,:);g=zeros(M+m-1,N+m-1);Im=zeros(M,N);%根据公式计算出处理后g(x,y)的像素值forx=(m-1)/2+1:M+(m-1)/2fory=(m-1)/2+1:N+(m-1)/2fors=-(m-1)/2:(m-1)/2fort=-(m-1)/2:(m-1)/2g(x,y)=g(x,y)+f(x+s,y+t)*1/(m*m);endendendendIm(1:M,1:N)=g((m-1)/2+1:M+(m-1)/2,(m-1)/2+1:N+(m-1)/2);%将double型转换为uint8型才可以用imshow正常显示Newbuf=uint8(Im);%加权平均滤波函数functionNewbuf=WeighFilter(Oldbuf,W,M,N,m)%Newbuf滤波后图像矩阵%Oldbuf含噪图像矩阵%W掩模%M、N含噪图像像素矩阵行、列%m掩模模板窗口大小f=zeros(M+m-1,N+m-1);%将原图像像素复制到f矩阵上,空出(m-1)/2大小的边界f((m-1)/2+1:M+(m-1)/2,(m-1)/2+1:N+(m-1)/2)=Oldbuf(1:M,1:N);%将与边界相邻的(m-1)/2行(或列)的像素值复制到边界,以填充边界f((m-1)/2+1:M+(m-1)/2,1:(m-1)/2)=Oldbuf(:,1:(m-1)/2);f((m-1)/2+1:M+(m-1)/2,N+(m-1)/2:N+m-1)=Oldbuf(:,N-(m-1)/2:N);f(1:(m-1)/2,(m-1)/2+1:N+(m-1)/2)=Oldbuf(1:(m-1)/2,:);f(M+(m-1)/2:M+m-1,(m-1)/2+1:N+(m-1)/2)=Oldbuf(M-(m-1)/2:M,:);g=zeros(M+m-1,N+m-1);Im=zeros(M,N);%根据公式计算出处理后g(x,y)的像素值forx=(m-1)/2+1:M+(m-1)/2fory=(m-1)/2+1:N+(m-1)/2fors=-(m-1)/2:(m-1)/2fort=-(m-1)/2:(m-1)/2g(x,y)=g(x,y)+W(s+(m+1)/2,t+(m+1)/2)*f(x+s,y+t);endendendendIm(1:M,1:N)=g((m-1)/2+1:M+(m-1)/2,(m-1)/2+1:N+(m-1)/2);Newbuf=uint8(Im);%中值滤波函数functionNewbuf=MedianFilter(Oldbuf,M,N,m)%Newbuf滤波后图像矩阵%Oldbuf含噪图像矩阵%M、N含噪图像矩阵像素行、列%m中值滤波窗口大小f=zeros(M+m-1,N+m-1);%将原图像像素复制到f矩阵上,空出(m-1)/2大小的边界f((m-1)/2+1:M+(m-1)/2,(m-1)/2+1:N+(m-1)/2)=Oldbuf(1:M,1:N);%将与边界相邻的(m-1)/2行(或列)的像素值复制到边界,以填充边界f((m-1)/2+1:M+(m-1)/2,1:(m-1)/2)=Oldbuf(:,1:(m-1)/2);f((m-1)/2+1:M+(m-1)/2,N+(m-1)/2:N+m-1)=Oldbuf(:,N-(m-1)/2:N);f(1:(m-1)/2,(m-1)/2+1:N+(m-1)/2)=Oldbuf(1:(m-1)/2,:);f(M+(m-1)/2:M+m-1,(m-1)/2+1:N+(m-1)/2)=Oldbuf(M-(m-1)/2:M,:);g=zeros(M+m-1,N+m-1);Im=zeros(M,N);forx=(m-1)/2+1:M+(m-1)/2fory=(m-1)/2+1:N+(m-1)/2j=1;fors=-(m-1)/2:(m-1)/2fort=-(m-1)/2:(m-1)/2a(j)=f(x+s,y+t);%将窗口里的二维元素变成一维元素j=j+1;endendg(x,y)=SeekMid(a,m);endendIm(1:M,1:N)=g((m-1)/2+1:M+(m-1)/2,(m-1)/2+1:N+(m-1)/2);Newbuf=uint8(Im);%找出中值函数functionmid=SeekMid(winbuf,m)%mid排序后的中值%winbuf待排序窗口%m窗口大小%采用冒泡排序方法将窗口像素值从小到大排列,返回中间像素值fori=1:m*m-1fork=1:m*m-iifwinbuf(k)winbuf(k+1)temp=winbuf(k);winbuf(k)=winbuf(k+1);winbuf(k+1)=temp;endendendmid=winbuf((m*m+1)/2);【输出图像】【实验思考】1.比较均值滤波和中值滤波的优缺点均值滤波可以减小图像灰度级的“sharp”变化,可以降低噪声,但是降噪的同时也使边缘部分变得模糊,还可以平滑伪轮廓,去除图像中的不相关的小于掩模尺寸的细节。中值滤波器的主要功能是使具有不同灰度的点看起来更接近它的相邻点,去除那些相对于其邻域像素更亮或更暗、且区域小于n2/2的孤立像素集。中值滤波对降低某些类型的随机噪声性能优异,模糊程度低。在处理椒盐噪声时,均值滤波使图像变得模糊,并且噪声去除性能很差,而中值滤波的效果却很好。显然,中值滤波比均值滤波更适合去除椒盐噪声。2.分析窗口尺寸对滤波结果的影响窗口尺寸越大,图像越模糊,图像边缘和与掩膜大小接近的细节受到的影响也越大实验3:图像的锐化处理【实验目的】锐化的目的是加强图像的边界和细节,熟悉Robert、Sobel和Laplace算子进行检测,使图像特征(如边缘、轮廓等)进一步增强并突出。【实验内容】1)编写Robert算子滤波函数;2)编写Sobel算子滤波函数;3)编写Laplace算子滤波函数;4)编写限幅和标定函数,给出增强后的图像。【实验代码】functionEX3I=imread('rice.bmp');subplot(2,4,1);imshow(I);title('原始图像');rob=RobertFilter(I);subplo

1 / 22
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功