资源描述:
《实验二实验报告new》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、实验二静态图像增强与平滑一、实验目的1.了解图像的基本特性,学习对图像进行基本的处理并评价处理结果;2.学习一般的图像增强方法,并实际体会图象增强的效果;3.掌握常用图象增强方法的编程实现;4.学会使用Matlab软件中基本的图像处理函数;二、实验设备联想图像处理工作站三、实验内容及要求1.自己编写M-function实现灰度图像的直方图增强算法,要求该程序能对256级灰度图像进行直方图均匀化处理,显示处理前、后图像及其直方图;2.自己编写M-function实现中值滤波算法,并对含噪图像进行测试,显示原图像、加噪声图像和处理后的图像。3.调用Matlab自带的图像处理函数,用不同的图象增强
2、方法对图像进行处理,对结果进行比较。4.结合以上实验内容,使用ICETECK-DM642-IDK-M实验系统进行相应的动态视频图像增强处理,观察结果。四、实验原理1.直方图(1)灰度直方图灰度直方图表示数字图像中每一灰度级出现的频数(该灰度级的像素数与图像的总像素数之比)。公式为:,式中:为第k级灰度值,为出现的次数,N为总像素数。算法:设灰度级为L,图像为M×Na、定义直方图存放数组pBuffer[L];b、初始化数组pBuffer[K]=0;k=0,1,…,L-1c、统计pBuffer[img(x,y)]++;x=0,1,…,M;y=0,1,…,Nd、(可选)归一化pBuffer[img
3、(x,y)]=M*N(2)直方图均衡化的基本思想直方图均衡化的基本思想是把原始图像的直方图变换成均匀分布的形式,这样就增加了象素灰度值的动态范围,从而达到了增强图像整体对比度的效果。1.中值滤波中值滤波是一种非线性空间滤波。原理:利用一个含有奇数个像素的滑动窗口,将窗口中心像素点的灰度值用窗口内各点灰度的中值代替。(1)一维信号的中值滤波设一给定序列f1,f2,……,fn,用长度为m的窗口对该序开进行中值滤波,方法是从中抽取m个值,……,,v=(m-1/2)为窗口的中心值。则中值滤波的输出为:,i∈Z,v=(m-1)/2如:输入:22621244424输出:22222244444(2)二维信
4、号的中值滤波中值滤波窗口长度为5。推广至二维离散数字图像,可得到二维中值滤波数学表达式:A为滤波窗口(i,j)∈A。(3)中值滤波的特点a.对某些信号中值滤波具有不变性;b.中值滤波输出噪声功率与输入噪声的密度分布有关。这里注意:边界的处理方法。五、实验步骤1.学习MatLab的基本操作;2.根据实验内容(2,3,4)的要求在MATLAB软件中编写相应程序;1)直方图均衡2)中值滤波算法3)调用Matlab已有的图像处理函数,对图像进行增强处理a.调用绘制直方图函数hist(),直方图均衡函数histeq(),中值滤波函数medfilt2(),并与自己编写的函数运行结果进行比较;b.运用其他
5、图像增强方法,对图像进行处理,并对结果进行分析比较。3.调试运行程序,并记录结果。4.结合以上实验内容,使用ICETECK-DM642-IDK-M实验系统进行相应的动态视频图像增强处理,观察结果。5.完成实验报告。六、实验结果及对应代码1、直方图(1)、灰度直方图a、实验结果:b、实验代码:clearall;closeallI=imread('cameraman.tif');J=imadjust(I,[00.2],[0.51]);imshow(I)figure,imshow(J)[X,map]=imread('forest.tif');figure,imshow(X,map)I2=ind2g
6、ray(X,map);J2=imadjust(I2,[],[],0.5);figure,imshow(I2)figure,imshow(J2)J3=imadjust(I2,[],[],1.5);figure,imshow(J3);(2)直方图均衡化a、实验结果:b、实验代码:clearall;closeall;I=imread('cameraman.tif');imshow(I);figure,imhist(I);[I2,T]=histeq(I);figure,imshow(I2);figure,imshow(I2);figure,imhist(I2);figure,plot((0:255)
7、/255,T);imwrite(I2,'d:/5/cameraman2.bmp');imfinfo('d:/5/cameraman2.bmp');2、中值滤波a、实验结果b、实验代码:function[Y]=medianforfun(X,a,b)k=floor(a*b/2)+1;%k为矩阵数值中间位置的数[M,N]=size(X);uint8Y=zeros(M,N);funBox=zeros(a,b);tem