数字图像实验报告.docx
《数字图像实验报告.docx》由会员分享,可在线阅读,更多相关《数字图像实验报告.docx(23页珍藏版)》请在冰豆网上搜索。
![数字图像实验报告.docx](https://file1.bdocx.com/fileroot1/2023-1/6/a2032cc3-6647-44c0-88e7-e94f470e1749/a2032cc3-6647-44c0-88e7-e94f470e17491.gif)
数字图像实验报告
湖南文理学院实验报告
数字图像处理
专业班级:
电信0801班
学生姓名:
陈琛
指导教师:
乔闹生
实验一邻域平均法实验
课程名称:
图像处理技术实验实验名称:
邻域平均法实验成绩:
学生姓名:
陈琛专业:
电子信息科学与技术
班级学号:
电信0803实验日期:
2011年5月11日
一、实验目的:
①掌握图像邻域的概念;
②掌握邻域平均法的原理、滤波过程;
③掌握在给定阈值时,邻域平均法的滤波过程(又叫做超限邻域平均法);
④熟悉Matlab编程。
二、实验内容:
①利用邻域平均法,对图像进行滤波;
②给定阈值时利用邻域平均法,对图像进行滤波。
三、实验原理:
邻域平均法的思想是用像素及其指定邻域内像素的平均值或加权平均值作为该像素的新值,以便去除突变的像素点,从而滤除一定的噪声。
邻域平均法的数学含义可用下式表示:
(1)
上式中:
是以
为中心的邻域像素值;
是对每个邻域像素的加权系数或模板系数;
是加权系数的个数或称为模板大小。
邻域平均法中常用的模板是:
(2)
为了解决邻域平均法造成的图像模糊问题,采用阈值法(又叫做超限邻域平均法,如果某个像素的灰度值大于其邻域像素的平均值,且达到一定水平,则判断该像素为噪声,继而用邻域像素的均值取代这一像素值;否则,认为该像素不是噪声点,不予取代),给定阈值
:
(3)
(3)式中,
是原始含噪声图像,
是由
(1)式计算的平均值,
滤波后的像素值。
四、实验步骤:
①Maltab读取实验图像;
②图像添加椒盐噪声,得到原始含噪声图像;
③编程实现邻域平均法滤波过程;
I=imread('eight.tif');
subplot(221),imshow(I)
title('原图像')
J=imnoise(I,'gaussian',0,0.005);
subplot(222),imshow(J)
title('添加高斯噪声图像')
K1=wiener2(J);
subplot(223),imshow(K1)
title('3×3窗的邻域维纳滤波图像')
K2=wiener2(J,[77]);
subplot(224),imshow(K2)
title('7×7窗邻域的维纳滤波后的图像')
④给定阈值时,编程实现邻域平均法滤波过程。
I=imread('eight.tif');
J=imnoise(I,'salt&pepper',0.02);
subplot(221),imshow(I)
title('原图像')
subplot(222),imshow(J)
title('添加椒盐噪声图像')
K1=filter2(fspecial('average',3),J)/255;
subplot(223),imshow(K1)
title('3×3窗的邻域平均滤波图像')
K2=filter2(fspecial('average',7),J)/255;
subplot(224),imshow(K2)
title('7×7窗的邻域平均滤波图像')
五、实验结果:
六、实验小结:
从实验结果可以看出,当所用平滑模板尺寸增大时,对噪声的消除效果也有所增强,但同时会带来图像的模糊,边缘细节逐步减少,且运算量增大。
在实际应用中,可以根据不同的应用场合选择合适的模板大小。
实验二中值滤波实验
课程名称:
图像处理技术实验实验名称:
中值滤波实验成绩:
学生姓名:
陈琛专业:
电子信息科学与技术
班级学号:
电信0803实验日期:
2011年5月18日
一、实验目的:
①掌握中值滤波的原理、滤波过程;
②掌握在给定阈值时,中值滤波的滤波过程(又叫做超限中值滤波);
③熟悉Matlab编程。
二、实验内容:
①利用中值滤波,对图像进行滤波;
②给定阈值时利用中值滤波,对图像进行滤波。
三、实验原理:
中值滤波就是用一个奇数点的移动窗口,将窗口中心点的值用窗口内各点的中值代替。
假设窗口内有五点,其值为80、90、200、110和120,那么此窗口内各点的中值即为110。
设有一个一维序列f1,f2,…,fn,取窗口长度(点数)为m(m为奇数),对其进行中值滤波,就是从输入序列中相继抽出m个数fi-v,…,fi-1,fi,fi+1,…,fi+v(其中fi为窗口中心点值,v=(m-1)/2),再将这m个点按其数值大小排序,取其序号为中心点的那个数作为滤波输出。
四、实验步骤:
①图像添加椒盐噪声,得到添加椒盐噪声图像;
②编程实现中值滤波法滤波过程;
③给定阈值时,编程实现中值滤波法滤波过程。
I=imread('eight.tif');
J=imnoise(I,'salt&pepper',0.02);
%图像添加椒盐噪声
K=medfilt2(J);
%缺省3×3邻域窗的中值滤波
subplot(121),imshow(J)
title('添加椒盐噪声图像')
subplot(122),imshow(K)
title('缺省3×3邻域窗的中值滤波图像')
五、实验结果(显示所图像,并标明是什么图像):
六、实验小结:
该算法基本上去除了噪声,细节也得到了较好保护,图像较清晰。
在以上几种滤波方法中,显示了优异滤波性能。
中值滤波算法将块均匀度作为确定噪声点的依据,根据窗口内噪声点个数,选择合适的滤波窗口,并在滤波时采用了改进的加权平均来计算中值。
这种方法在保护细节和去噪能力之间做了较好的折衷,比标准值滤波和标准中值滤具有更好的滤波能力。
实验三图像锐化实验
课程名称:
图像处理技术实验实验名称:
图像锐化实验成绩:
学生姓名:
陈琛专业:
电子信息科学与技术
班级学号:
电信0803实验日期:
2011年5月25日
一、实验目的:
①掌握图像锐化的概念;
②掌握Prewitt算子对图像进行锐化的原理、过程;
③熟悉Matlab编程。
二、实验内容:
①利用Prewitt算子对图像进行锐化处理;
②掌握Maltab中和图像锐化相关的函数。
三、实验原理:
图像边缘对图像识别和计算机分析十分有用。
边缘能够刻画出目标物体,使观察者能够一目了然;边缘也蕴涵了丰富的内在信息(方向、阶跃、形状等),是图像识别中抽取的重要特征。
从本质上讲,图像边缘是图像局部特征不连续性(灰度突变、颜色突变等)的反映,它标志着一个区域的终结和另一个区域的开始。
边缘提取首先检测出图像局部特性的不连续性,然后再将不连续性的边缘像素连成完备的边界。
边缘的特性是沿着边缘走向的像素变化缓慢,垂直于边缘方向的像素变化剧烈。
从这个意义上说,提取边缘的算法就是检验出符合边缘特性的边缘像素的数学算法。
灰度剖面线的一阶和二阶导数。
当沿着剖面线从左往右经过,在进入和离开斜面的变化点时,一阶导数为正;在灰度级不变的区域一阶导数为零。
在边缘与一边相关的阶跃点二阶导数为正;在边缘与亮色一边相关的阶跃点二阶导数为负;沿着斜坡和灰度为常数的区域为零。
由上面的特性可知,可用一阶导数的幅度值来检测边缘的存在。
幅度峰值一般对应边缘位置,可用二阶导数的过零点检测边缘位置;用二阶导数在过零点附近的符号确定边缘象素在图象边缘的暗区或明区。
根据上面的分析,我们能够利用一阶导数和二阶导数来进行边缘检测。
常用的边缘检测有:
Roberts算子、Sobel算子、Prewitt算子、LOG算子、Krisch算子等。
四、实验步骤:
I=imread('saturn.tif');
subplot(211);
imshow(I);
title('原图像');
H=fspecial('laplacian');
%应用Laplacian算子滤波锐化图像
laplacianH=filter2(H,I);
subplot(223);imshow(laplacianH);
title('laplacian算子锐化图像');
H=fspecial('prewitt');
%应用prewitt算子滤波锐化图像
prewittH=filter2(H,I);
subplot(224);imshow(prewittH);
title('prewitt算子锐化图像');
I=imread('saturn.tif');
J=imnoise(I,'salt&pepper',0.02);
%图像添加椒盐噪声
subplot(121),imshow(J)
title('含有噪声的原图像')
J=double(J);
f=fft2(J);
g=fftshift(f);
[M,N]=size(f);
n=3;d0=20;
n1=floor(M/2);n2=floor(N/2);
fori=1:
M
forj=1:
N
d=sqrt((i-n1)^2+(j-n2)^2);
h=1/(1+0.414*(d/d0)^(2*n));
g(i,j)=h*g(i,j);
end
end
g=ifftshift(g);
g=uint8(real(ifft2(g)));
subplot(122),imshow(g)
title('三阶Butterworth滤波图像')
clearall;
五、实验结果:
六、实验小结:
显示出灰度剖面线的一阶和二阶导数。
当沿着剖面线从左往右经过,在进入和离开斜面的变化点时,一阶导数为正;在灰度级不变的区域一阶导数为零。
在边缘与一边相关的阶跃点二阶导数为正;在边缘与亮色一边相关的阶跃点二阶导数为负;沿着斜坡和灰度为常数的区域为零。
由上面的特性可知,可用一阶导数的幅度值来检测边缘的存在。
幅度峰值一般对应边缘位置,可用二阶导数的过零点检测边缘位置;用二阶导数在过零点附近的符号确定边缘象素在图象边缘的暗区或明区。
根据上面的实验结果,自适应模板锐化的处理结果要好于Roberts算子和Sobel算子处理的结果。
但对于图像处理来说,没有那一个算法可以完全适用于所有情况,根据不同的情况,大部分算法的适用性都会受到很大的限制。
从得到的实验数据可知,自适应模板锐化的算法是有效的。
实验四图像边缘检测实验
课程名称:
图像处理技术实验实验名称:
图像边缘检测实验成绩:
学生姓名:
陈琛专业:
电子信息科学与技术
班级学号:
电信0803实验日期:
2011年5月22日
一、实验目的:
①掌握图像边缘的概念;
②掌握边缘检测Sobel算子实现灰度图像边缘检测的原理、过程;
③熟悉Matlab编程。
二、实验内容:
①利用Sobel算子对图像实现灰度图像边缘检测;
②掌握Maltab中和图像边缘检测相关的函数。
三、实验原理:
图象边缘检测基本原理
(1)图象边缘检测必须满足两个条件:
一能有效地抑制噪声;二必须尽量精确确定边缘的位置。
(2)根据对信噪比与定位乘积进行测度,得到最优化逼近算子。
这就是Canny边缘检测算子。
(3)类似与Marr(LoG)边缘检测方法,也属于先平滑后求导数的方法。
边缘检测技术对于处理数字图像非常重要,因为边缘是所要提取目标和背景的分界线,提取出边缘才能将目标和背景区分开来。
在图像中,边界表明一个特征区域的终结和另一个特征区域的开始,边界所分开区域的内部特征或属性是一致的,而不同的区域内部的特征或属性是不同的,边缘检测正是利用物体和背景在某种图像特性上的差异来实现的,这些差异包括灰度,颜色或者纹理特征。
边缘检测实际上就是检测图像特征发生变化的位置。
四、实验步骤:
①用高斯滤波器平滑图象;
②用一阶偏导的有限差分来计算梯度的幅值和方向;
③对梯度幅值进行非极大值抑制
将梯度角离散为圆周的四个扇区之一,以便3*3的窗口作抑制运算。
四个扇区的标号为0到3,对应3*3邻域的四种可能组合。
在每一点上,邻域的中心象素M[x,y]与沿着梯度线的两个象素相比。
如果M[x,y]的梯度值不比沿梯度线的两个相邻象素梯度值大,则令M[x,y]=0。
即:
④用双阈值算法检测和连接边缘。
I=imread('rice.tif');
BW1=edge(I,'roberts');
%以自动阈值选择法对图像进行Roberts算子检测
[BW1,thresh1]=edge(I,'roberts');
%返回当前Roberts算子检测的阈值
disp('RobertsËã×Ó×Ô¶¯Ñ¡ÔñµÄãÐֵΪ£º')
disp(thresh1)
subplot(121),imshow(BW1);
title('Roberts算子自动选择的阈值为:
')
BW1=edge(I,'roberts',0.05);
%以阈值为0.05对图像进行Roberts算子检测
subplot(122),imshow(BW1);
title('阈值为0.05的Roberts算子边缘检测')
BW2=edge(I,'sobel');
%以自动阈值选择法对图像进行Sobel算子检测
figure,subplot(131),imshow(BW2);
title('自动阈值的Sobel算子边缘检测')
[BW2,thresh2]=edge(I,'sobel');
%返回当前Sobel算子边缘检测的阈值
disp('Sobel算子自动选择的阈值为:
')
disp(thresh2)
BW2=edge(I,'sobel',0.05,'horizontal');
%以阈值为0.05水平方向对图像进行Sobel算子检测
subplot(132),imshow(BW2);
title('阈值0.05水平方向Sobel算子检测')
BW2=edge(I,'sobel',0.05,'vertical');
%以阈值为0.05垂直方向对图像进行Sobel算子检测
subplot(133),imshow(BW2);
title('ãÐÖµ0.05´¹Ö±·½ÏòSobelËã×Ó')
BW3=edge(I,'prewitt');
%以自动阈值选择法对图像进行Prewitt算子检测
figure,subplot(131),imshow(BW3);
title('自动阈值的Prewitt算子边缘检测')
[BW3,thresh3]=edge(I,'prewitt');
%返回当前Prewitt算子自动选择的阈值
disp('Prewitt算子自动选择的阈值为:
')
disp(thresh3)
BW3=edge(I,'prewitt',0.05,'horizontal');
%以阈值为0.05水平方向对图像进行prewitt算子检测
subplot(132),imshow(BW3);
title('阈值0.05水平方向prewitt算子边缘检测')
BW3=edge(I,'prewitt',0.05,'vertical');
%以阈值为0.05垂直方向对图像进行prewitt算子检测
subplot(133),imshow(BW3);
title('阈值0.05垂直方向prewitt算子边缘检测')
I=imread('rice.tif');
BW1=edge(I,'log');
%以自动阈值选择法对图像进行Log算子检测
[BW1,thresh1]=edge(I,'log');
%返回当前Log算子边缘检测的阈值
disp('Log算子自动检测的阈值为:
')
disp(thresh1)
subplot(121),imshow(BW1);
title('自动阈值的Log算子边缘检测')
BW1=edge(I,'log',0.005);
%以阈值为0.005对图像进行Log算子检测
subplot(122),imshow(BW1);
title('阈值为0.005的Log算子边缘检测')
h=fspecial('gaussian',5);
%设计高斯滤波器
[BW2,thresh2]=edge(I,'zerocross',[],h);
%返回当前零交叉检测边缘检测的阈值
disp('零交叉检测自动选择的阈值为:
')
disp(thresh2)
figure,subplot(121),imshow(BW2);
title('自动阈值的零交叉边缘检测')
BW2=edge(I,'zerocross',0.03,h);
%以阈值为0.03对图像进行零交叉检测
subplot(122),imshow(BW2);
title('阈值为0.03的零交叉检测')
I=imread('rice.tif');
BW=edge(I,'canny');
%以自动阈值选择法对图像进行Canny算子检测
[BW,thresh]=edge(I,'canny');
%返回当前Canny算子边缘检测的阈值
disp('Canny算子自动选择的阈值为')
disp(thresh)
subplot(121),imshow(BW);
title('自动阈值的Canny算子边缘检测')
BW=edge(I,'Canny',[0.20.5]);
%以阈值为[0.10.5]对图像进行Canny算子检测
subplot(122),imshow(BW);
title('阈值为[0.10.5]的Canny算子边缘检测')
五、实验结果:
六、实验小结:
以前利用最佳拟合曲面检测边缘时,在不同像素的各邻域内要做大量的重复性计算(如最小二乘拟合[3]等),且无法保证对整幅图像具有相同的凸凹性.目前公认最好的是Marr-Hildreth边缘检测算子(即LOG算子)和Canny算子,它们都是先用一个光滑函数(Gauss函数)与原图像作卷积,得到一个平滑结果,然后再进行边缘检测,这实际上是基于如下假设:
平滑后的曲面与原图像具有相同的凸凹性.在实际应用中,Gauss函数的方差σ2及开窗大小都直接影响到边缘检测效果.本文利用等距B样条函数,对整幅图像做了一张全息光滑曲面,它能很好地逼近原图像,且具有良好的保凸性,进一步利用B样条函数的局部支撑性质,严格地导出该曲面公式可以归于每点(x,y)的某变邻域Nk,l(x,y)内计算,因此,计算量极小.最后,在曲面S(x,y)上,再通过求|
S|的局部极大值点或求
2S的零交叉来检测边缘,|
S|及
2S的计算全部由解析公式给出,不需要差分近似,且当k=l=3时,|
S|和
2S在整数坐标点上的计算只依赖于Ω3(x)、Ω′3(x)及Ω″3(x)在3个整数点0、±1上的函数值,因此极易实现快速计算.对一个N×N图像,计算复杂度都是O(N2)量阶的.实验表明这是一类十分成功的边缘检测算法,光滑后的付作用并不影响后继的边缘检测及其图像分析.该算法简捷、可靠,可以在计算机视觉系统中作实时处理,如可以用作特征提取、图像分割及纹理分析等.
实验五直方图均衡化实验
课程名称:
图像处理技术实验实验名称:
直方图均衡化实验成绩:
学生姓名:
陈琛专业:
电子信息科学与技术
班级学号:
电信0803实验日期:
2011年5月29日
一、实验目的:
①掌握图像直方图的概念;
②掌握统计图像的直方图的方法;
③掌握根据直方图,对图像进行均衡化处理;
④计算均衡化后图像的峰值信噪比(PSNR);
⑤熟悉Matlab编程。
二、实验内容:
①获取图像的直方图;
②根据直方图,对图像进行均衡化处理;
③计算均衡化后图像的峰值信噪比(PSNR)。
三、实验原理:
灰度直方图是将数字图像中的所有像素,按照灰度值的大小,统计其所出现的频度。
通常,灰度直方图的横坐标表示灰度值,纵坐标为像素个数,也可以采用某一灰度值的像素数占全图像素数的百分比作为纵坐标。
直方图均衡方法的基本原理是:
对在图像中像素个数多的灰度值(即对画面起主要作用的灰度值)进行展宽,而对像素个数少的灰度值(即对画面不起主要作用的灰度值)进行归并。
从而达到清晰图像的目的。
四、实验步骤:
①图像的预处理,读入彩色图像将其灰度化
②绘制直方图
③直方图均衡化
④图像均衡化
I=imread('rice.tif');
subplot(221)
imshow(I)
title('原始图像')
subplot(223)
imcontour(I)
title('图像的轮廓线')
subplot(122),imhist(I,64)
title('图像的直方图')
I=imread('tire.tif');
J=histeq(I);
imshow(I)
title('原始图像')
figure,imshow(J)
title('直方图均衡化所得图像')
figure;subplot(121)
imhist(I,64)
title('原图像直方图')
subplot(122)
imhist(J,64)
title('均衡变换后的直方图')
I=imread('tire.tif');
hgram=50:
2:
250;
%¹æ¶¨»¯º¯Êý
J=histeq(I,hgram);
imshow(J)
title('直方图规定化所得图像')
figure,imhist(J,64)
title('直方图规定化变换后的直方图')
五、实验结果:
六、实验小结:
(1)由效果图的直方图可以观察到,灰度级减少,这是由均衡化过程中要进行近似舍入造成的。
可以采用局部自适应的直方图均衡化技术,也可以采用增加像素位数的方法来减少由于灰度级合并所造成的灰度层次的损失。
(2)经过变换后得到的新灰度直方图虽然不很平坦,但比原始图像的直方图平坦的多,而且动态范围也大大地扩展。
图像增强后,图像从整体上给人一种清晰的感觉。