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

上传人:w****i 文档编号:92505829 上传时间:2019-07-10 格式:DOC 页数:22 大小:590.37KB
返回 下载 相关 举报
数字图像处理实验报告-基于Matlab资料_第1页
第1页 / 共22页
数字图像处理实验报告-基于Matlab资料_第2页
第2页 / 共22页
数字图像处理实验报告-基于Matlab资料_第3页
第3页 / 共22页
数字图像处理实验报告-基于Matlab资料_第4页
第4页 / 共22页
数字图像处理实验报告-基于Matlab资料_第5页
第5页 / 共22页
点击查看更多>>
资源描述

《数字图像处理实验报告-基于Matlab资料》由会员分享,可在线阅读,更多相关《数字图像处理实验报告-基于Matlab资料(22页珍藏版)》请在金锄头文库上搜索。

1、华东师范大学电子工程系2017.6实验1:图像灰度级修正【实验目的】掌握常用的图像灰度级修正方法(灰度变换法和直方图均衡化),加深对直方图的理解。观察图像的增强效果,对灰度级修正前后的图像加以比较。【实验内容】1)编程实现图像的灰度变换,改变图像的输入、输出映射参数范围(线性拉伸和反比);2)修改参数gamma值(大于、小于、等于1),观察处理结果;3)对图像直方图作均衡化处理,显示均衡前后的图像及其直方图。【实验代码】original=imread(lena.bmp);linstr=imadjust(original,0.3 0.7,0 1); %线性拉伸opposite=imadjust(

2、original,0 1,1 0); %反比above=imadjust(original,0 1,0 1,2); %gamma1equal=imadjust(original,0 1,0 1,1); %gamma=1below=imadjust(original,0 1,0 1,0.5); %gamma1);subplot(3,3,5);imshow(equal);title(gamma=1);subplot(3,3,6);imshow(below);title(gamma1时图像整体变暗,灰度级整体变小;gamma1时图像整体变亮,灰度级整体变小;而gamma=1时,图像维持不变。实验2:

3、图像的平滑滤波【实验目的】平滑的目的是减少噪声对图像的影响。掌握线性滤波和中值滤波两种最典型、最常用的图像平滑方法,对输出结果加以比较、加深理解。【实验内容】1)编写并调试窗口为33、55的平滑滤波函数;如1 1 1;1 1 1 ;1 1 1/9、1 2 1;2 4 2;1 2 1/16等)2)编写并调试窗口为33、55的中值滤波函数。3)比较均值滤波和中值滤波的优缺点,分析窗口尺寸对滤波结果的影响。附:可供参考的Matlab函数有imnoise、imfilter、medfilt2【实验代码】function fliterI = imread(lena.bmp); %原始图像读取J = imn

4、oise(I,salt & pepper,0.02); %含噪图像 加椒盐噪声subplot(2,3,1);imshow(J);title(含噪图像); Newbuf1=AverageFilter(J,256,256,3); %33标准平均,调用均值滤波函数subplot(2,3,2);imshow(Newbuf1);title(33标准平均); Newbuf2=AverageFilter(J,256,256,5); %55标准平均,调用均值滤波函数subplot(2,3,3);imshow(Newbuf2);title(55标准平均); W=1 2 1;2 4 2;1 2 1/16; %设置

5、加权平均掩膜Newbuf3=WeighFilter(J,W,256,256,3); %33加权平均,调用加权平均函数 subplot(2,3,4);imshow(Newbuf3);title(33加权平均); Newbuf4=MedianFilter(J,256,256,3); %33中值滤波,调用中值滤波函数subplot(2,3,5);imshow(Newbuf4);title(33中值滤波); Newbuf5=MedianFilter(J,256,256,5); %55中值滤波,调用中值滤波函数subplot(2,3,6);imshow(Newbuf5);title(55中值滤波); %

6、标准平均滤波函数function Newbuf=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

7、)/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)的像素值 for x=(m-1)/2+1:M+(m-1)/2 for y=(m-1)/2+1:N+(m-1)/2 for s=

8、-(m-1)/2:(m-1)/2 for t=-(m-1)/2:(m-1)/2 g(x,y)=g(x,y)+f(x+s,y+t)*1/(m*m); end end end endIm(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); %加权平均滤波函数function Newbuf=WeighFilter(Oldbuf,W,M,N,m)%Newbuf 滤波后图像矩阵%Oldbuf 含噪图像矩阵%W 掩模%M、N 含噪图像像素矩阵行、列%m 掩模

9、模板窗口大小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)=Ol

10、dbuf(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)的像素值 for x=(m-1)/2+1:M+(m-1)/2 for y=(m-1)/2+1:N+(m-1)/2 for s=-(m-1)/2:(m-1)/2 for t=-(m-1)/2:(m-1)/2 g(x,y)=g(x,y)+W(s+(m+1)/2,t+(m+1)/2)*f(x+s,y+t); end end end e

11、ndIm(1:M,1:N)=g(m-1)/2+1:M+(m-1)/2,(m-1)/2+1:N+(m-1)/2);Newbuf=uint8(Im); %中值滤波函数function Newbuf=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)

12、/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); for x=(m-1)/2+1:M+(m-1)/2 for y=(m-1)/2+1:N+(m-1)/2 j=1; for s=-(m-1)/2:(m-1)/2 for t=-(m-1)/2:(m-1)/2 a(j)=f(x+s,y+t); %将窗口里的二维元素变成一维元素 j=j+1; end end g(x,y)=SeekMid(a,m); end endIm(1:M,1:N)=g(m-1)/2+1:M+(m-1)/2,(m-1)/2+1:N+(m-1)/2);Newbuf=uint8(Im); %找出中值函数function mid=SeekM

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 其它相关文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号