数字图像处置课内实验new.docx
- 文档编号:28282516
- 上传时间:2023-07-10
- 格式:DOCX
- 页数:25
- 大小:268.26KB
数字图像处置课内实验new.docx
《数字图像处置课内实验new.docx》由会员分享,可在线阅读,更多相关《数字图像处置课内实验new.docx(25页珍藏版)》请在冰豆网上搜索。
数字图像处置课内实验new
《数字图像处置》课内实验
实验一直方图均衡
一、实验题目:
直方图均衡
二、实验目的:
在学习图像直方图的概念、计算方式、性质和相关应用基础上,生成、绘制图像的直方图,并应用MATLAB编程实现图像直方图均衡化程序。
三、实验内容:
(1)计算并绘制图像直方图;
(2)编程实现图像的直方图均衡化处置,显示均衡前后的直方图和图像;
四、预备知识:
(1)熟悉图像读写和显示;
(2)明白得图像直方图的概念及用途;
(3)明白得直方图均衡化的概念及应用背景;
五、实验原理:
在对图像进行处置之前,了解图像整体或局部的灰度散布情形超级必要。
对图像的灰度散布进行分析的重要手腕确实是成立图像的灰度直方图(DensityHistogram),利用图像灰度直方图,能够直观地看出图像中的像素亮度散布情形;通过直方图均衡化,能够对图像的质量进行调整。
(1)生成并绘制图像的直方图
假设一幅数字图像的像素总数为N,在范围[0,G]内共有L个灰度级,其直方图概念为离散函数
,其中,rk是区间[0,G]内的第K级的亮度,nk是灰度级为rk的图像中的像素数。
关于uint8类图像,G的值为255;关于uint16类图像,G的值为65535;关于double类图像,G的值为。
记住,MATLAB中的索引不能为0,故r1相当于灰度级0,r2相当于灰度级1,如此等等,rL相当于灰度级G。
其中,uint8类图像或uint16类图像中G=L-1。
通常,会用到归一化直方图,即用所有元素h(rk)除以图像中的像素总数N所取得的图形:
P(rk)表示灰度级rk显现的频数。
MATLAB图像处置工具箱提供了imhist函数来计算和显示图像的直方图,其挪用格式为:
imhist(I,b)
[COUNTS,X]=imhist(I)
其中I为输入图像,b为指定的灰度级数量,默许值为256。
[COUNTS,X]=imhist(…)返回直方图统计的数据和相应的灰度级向量X。
利用表达式p=imhist(I,b)/N就可简单地取得归一化直方图,那个地址N为图像中的像素总数。
显示图像’’的直方图及归一化直方图,如图1.2.1所示。
(a)原图(b)直方图(c)归一化直方图
图1.2.1灰度图像的直方图及归一化直方图
若是图像的灰度别离集中在较窄的区间,从而引发图像细节的模糊,为了增强图像,可通过改善各部份亮度的比例关系,即通过直方图的方式来实现。
这种方式是以概率论为基础的,经常使用的方式有直方图均衡化和直方图匹配(规定化)。
(2)直方图均衡化
直方图均衡化也叫做直方图均匀化,是将一已知灰度概率密度散布的图像,通过某种变换,变成一幅具有均匀灰度概率密度散布的新图像,现在图像的熵最大,图像所包括的信息量最大,且扩展了像元取值的动态范围,从而达到增强图像整体对照度的成效。
设一幅图像总像元数为N,灰度级的个数为L,第K个灰度级rk显现的频数为nk,那么第k灰度级显现的概率为
现在变换函数可表示为
依照原图像的直方图统计值就可算出均衡化后各像元的灰度值。
直方图上灰度散布较密的部份被拉伸;灰度散布较稀疏的部份被紧缩,使图像对照度整体上取得增强。
MATLAB图像处置工具箱提供了直方图均衡函数histeq。
其挪用格式为:
J=histeq(I,n);
[J,T]=histeq(I,…);
其中,n是均衡化后的灰度级数量,是一个可选参数,缺省值是64。
[J,T]=histeq(I,…)返回能从图像I的灰度直方图变换成图像J的直方图的变换函数T。
显示图像’’的直方图均衡化前后的图像及对应的直方图,如图2-3所示。
(a)原图像(b)直方图均衡化后图像
(c)原图的直方图(d)均衡化后的直方图
图1.2.3直方图均衡化前后的图像及其直方图
通过均衡化后,原图中较暗区域中的一些细节更清楚。
六、实验步骤:
(1)打开一幅灰度图像,利用MATLAB工具箱所提供的函数计算并绘制图像的直方图和归一化直方图;
(2)利用相应的MATLAB函数对灰度图像进行直方图均衡化,显示均衡化后的图像及对应的直方图,分析均衡化后图像有何转变,均衡化后的直方图有何特点;
七、试探题
(1)灰度直方图能够反映一幅图像的哪些特点?
(2)均衡化后的直方图有何特点?
八、实验程序代码:
(1)生成并绘制灰度图像的直方图及归一化直方图
clearall;
I=imread('');%打开一幅灰度图像
[m,n]=size(I);
p=m*n;
J=imhist(I)./p;%计算图像的归一化直方图
subplot(1,3,1),imshow(I);
subplot(1,3,2),imhist(I,64);
subplot(1,3,3),plot(J);
(2)直方图均衡化
clearall;
Im=imread('');
J=histeq(Im);%均衡化
subplot(2,2,1);
imshow(Im);
title('原图');%显示原图
subplot(2,2,2);
imhist(Im);
title('原图直方图');%显示原图的直方图
subplot(2,2,3);
imshow(J);
title('均衡化结果');%显示均衡化后的图像
subplot(2,2,4);
imhist(J);
title('均衡化结果的直方图');%显示均衡化后的直方图
实验二频域图像增强
一、实验题目:
频域图像增强
二、实验目的:
把握基于频域的图像增强方式。
三、实验内容:
(1)编程实现图像的理想低通和高通滤波;
(2)编程实现图像的巴特沃斯低通和高通滤波。
四、预备知识:
(1)熟悉MATLAB图像输入输出操作;
(2)熟悉图像的频域变换处置;
(3)熟悉二维频谱的显示方式。
五、实验原理:
图像增强是对图像进行加工,以取得视觉成效更好或更有效的新图像。
图像增强在处置方式上可分为基于空域的图像增强和基于频域的图像增强。
频域图像增强的步骤:
第一将图像变换到频域,然后在频域进行需要的滤波,即和滤波器转移函数相乘,最后反变换回时域取得增强的图像。
经常使用的频域增强方式有低通滤波、高通滤波、带通和带阻滤波和同态滤波。
2-D理想滤波器转移函数:
低通:
高通:
(1.6.1)
是非负数,
是从点
到频率平面原点的距离。
阶数为n,截断频率为
的2-D巴特沃斯滤波器转移函数:
六、高通:
实验步骤:
(1)读入图像;
(2)实现图像的理想低通和高通滤波;
(3)实现图像的巴特沃斯低通和高通滤波。
七、试探题目:
分析什么缘故图像通太低通滤波器后变得模糊?
什么缘故通太高通滤波器后取得锐化结果?
八、实验程序代码:
图像频域滤波可用fft2函数把图像变换到频域,在频域按公式(1.6.1)、()别离实现频域的理想高低通滤波和频域的巴特沃斯高低通滤波,最后用ifft2反变换到时域取得最后结果。
二维频谱的显示可用函数mesh完成。
用巴特沃斯滤波器对图像进行低通和高通滤波的例子见图。
图图像频率滤波
完整的代码:
%%%%理想低通和高通
clc;
clear;
data4=imread('');
subplot(3,2,1);
imshow(data4);
title('原图');
i=fft2(data4);
subplot(3,2,2);
i=fftshift(i);
z=log(abs(i));
x=0:
1:
255;
y=0:
1:
255;
[x,y]=meshgrid(x,y);
mesh(z);%以三维坐标显示该图像频谱图
title('原图频谱');
[n,m]=size(i);%对该图进行低通滤波
fork=1:
1:
n
forl=1:
1:
m
if(k^2+l^2)>=190^2%选取D=190
result(k,l)=0;
elseresult(k,l)=i(k,l);
end
end
end
subplot(3,2,4);
z=log(abs(result));%三维方式显示低通滤波后的频谱图
x=0:
1:
255;
y=0:
1:
255;
[x,y]=meshgrid(x,y);
mesh(z);
title('理想低通滤波后的频谱');
subplot(3,2,3);%新建图像显示窗口
result=fftshift(result);%滤波后的数据去中心化
b=ifft2(result);%逆傅里叶变换
imshow(uint8(abs(b)));
title('理想低通滤波后的图像');
subplot(3,2,6);%新建图像显示窗口
%[n,m]=size(c);%对原图进行高通滤波
fork=1:
1:
n
forl=1:
1:
m
if(k^2+l^2)<=190^2%选取D=190
result(k,l)=0;
elseresult(k,l)=i(k,l);
end
end
end
z=log(abs(result));
x=0:
1:
255;%三维方式显示高通滤波前的频谱图
y=0:
1:
255;
[x,y]=meshgrid(x,y);
mesh(z);
title('理想高通滤波后的频谱');
subplot(3,2,5);
result=fftshift(result);%滤波后的数据去中心化
d=ifft2(result);%逆傅里叶变换
imshow(uint8(abs(d)));
title('理想高通滤波后的图像');
%频域增强(巴特沃斯原型)
%二阶巴特沃斯(Butterworth)低通滤波器
%clc;
%clear;
Figure;
J1=imread('');
subplot(3,2,1);
imshow(J1);
title('原图');
f=double(J1);
g=fft2(f);%傅立叶变换
g=fftshift(g);%转换数据矩阵
subplot(3,2,2);
x=0:
1:
255;
y=0:
1:
255;
[x,y]=meshgrid(x,y);
z=log(abs(g));%取幅度
mesh(z);%以三维坐标显示该图像频谱图
title('原图频谱');
[M,N]=size(g);
nn=2;%二阶巴特沃斯(Butterworth)低通滤波器
d0=20;
m=fix(M/2);n=fix(N/2);
fori=1:
M
forj=1:
N
d=sqrt((i-m)^2+(j-n)^2);
h=1/(1+*(d/d0)^(2*nn));%计算低通滤波器传递函数
result(i,j)=h*g(i,j);
end
end
subplot(3,2,4);
x=0:
1:
255;
y=0:
1:
255;
[x,y]=meshgrid(x,y);
z=log(abs(result));%取幅度
mesh(z);%以三维坐标显示该图像频谱图
title('低通滤波后的频谱');
result=ifftshift(result);
J2=ifft2(result);
J3=uint8(abs(J2));
subplot(3,2,3);
imshow(J3);
title('低通滤波后的图像');
%利用二阶巴特沃斯(Butterworth)高通滤波器
nn=2;%二阶巴特沃斯(Butterworth)高通滤波器
d0=5;
m=fix(M/2);
n=fix(N/2);
fori=1:
M
forj=1:
N
d=sqrt((i-m)^2+(j-n)^2);
if(d==0)
h=0;
else
h=1/(1+*(d0/d)^(2*nn));%计算传递函数
end
result(i,j)=h*g(i,j);
end
end
subplot(3,2,6);
x=0:
1:
255;
y=0:
1:
255;
[x,y]=meshgrid(x,y);
z=log(abs(result));%取幅度
mesh(z);%以三维坐标显示该图像频谱图
title('高通滤波后的频谱');
result=ifftshift(result);
J2=ifft2(result);
J3=uint8(abs(J2));
subplot(3,2,5);
imshow(J3);
title('高通滤波后的图像');
实验三图像边缘检测与连接
一、实验题目:
图像边缘检测与连接
二、实验目的:
把握图像边缘检测的要紧原理和经常使用方式;依据边缘检测理论,实现灰度图像一阶和二阶边缘检测方式;编程实现Hough变换提取直线;启发学生依据边缘特点进行图像分析与识别,提高学生图像处置与分析能力和实际动手能力。
三、实验内容:
(1)编程实现一阶差分边缘检测算法,包括Robert梯度算子、Prewitt算子、Sobel算子等;
(2)编程实现二阶差分拉普拉斯边缘检测算法和LoG检测法和Canny检测法;
(3)分析与比较各类边缘检测算法的性能;
(4)编程实现Hough变换提取直线
(5)分析Hough变换检测性能;
四、预备知识:
(1)熟悉图像读写和显示;
(2)熟悉图像分割理论;
(3)熟悉Hough变换的大体原理;
(4)熟悉Hough变换提取直线的方式;
五、实验原理:
一、边缘检测
图像边缘是图像的重要特点,是图像中特性(如像素灰度、纹理等)散布的不持续处,图像周围特性有阶跃转变或屋脊状转变的那些像素集合。
图像的边缘部份集中了图像的大部份信息,一幅图像的边缘结构与特点往往是决定图像特质的重要部份。
图像边缘的另一个概念是指其周围像素灰度转变不持续的那些像素的集合。
边缘普遍存在于物体与背景之间、物体与物体之间,因此,边缘是图像分割、图像明白得及图像识别的重要特点。
图像边缘检测要紧用于增强图像中的轮廓边缘、细节和灰度跳变部份,形成完整的物体边界,达到将物体从图像中分离出来或将表示同一物体表面的区域检测出来的目的。
目前为止最通用的方式是检测亮度值的不持续性,用一阶和二阶导数检测的。
(1)微分法
微分法的目的是利用微分运算求信号的转变率,增强高频分量的作用,从而使轮廓清楚。
遵循如下两个大体准那么之一:
找到亮度的一阶导数在幅度上比指定的阈值大的地址;找到亮度的二阶导数有零交叉的地址。
(2)差分边缘检测方式
利用像素灰度的一阶导数算子在灰度迅速转变处取得高值来进行奇异点的检测。
它在某一点的值就代表该点的边缘强度,通过对这些值设置阈值来进一步取得边缘图像。
差分边缘检测方式是最原始、最大体的方式。
但要求差分方向与边缘方向垂直,这就需要对图像的不同方向(一样为垂直方向、水平方向和对角线方向)都进行差分运算,增加了实际运算的繁琐性,目前很少采纳。
(3)Roberts边缘检测算子
Roberts边缘检测算子依照任意一对相互垂直方向上的差分可用来计算梯度的原理,采纳对角线方向相邻两像素之差,即:
然后依照式(1.7.2)计算出Roberts的梯度幅度值:
它们的卷积算子为:
Roberts检测器较为简单,但具有一些功能上的限制,例如,它是非对称的,而且不能检测诸如45°倍数的边缘。
但是,它仍是常经常使用于硬件实现中,因为它既简单又快速。
(4)Sobel边缘检测算子
对数字图像的每一个像素,考察它上下左右邻点灰度的加权差,与之接近的邻点的权大。
据此,概念Sobel算子如下:
卷积算子为:
Sobel算子很容易在空间上实现,边缘检测成效较好,且受噪声的阻碍也较小。
邻域增大抗噪性会更好,但计算量也会增大,得出的边缘也会相应变粗。
Sobel算子会检测出许多伪边缘,边缘定位精度不够高,在精度要求不高时是一种较经常使用的边缘检测方式。
(5)Prewitt边缘检测算子
Prewitt边缘检测算子模板如下:
图像中的每一个像素都用这两个核作卷积,一个查对垂直边缘阻碍最大,另一个查对水平边缘阻碍最大。
两个卷积的绝对值的最大值作为该点的输出值。
不能简单的将小于0的值处置为0,如此会丢失信息。
它比Sobel检测器在计算上要简单一些,但比较容易产生一些噪声。
(6)拉普拉斯边缘检测算子
拉普拉斯边缘检测算子是一种二阶微分算子,与其它边缘检测方式的不同的地方在于,该方式是一种各向同性的检测方式,即其边缘的增强程度与边缘的方向无关,从而能够知足不同走向的边缘锐化的要求。
概念如下:
几种经常使用的实现Laplace运算的检测模板如下:
拉普拉斯算子自身很少被直接用作边缘检测,因为二阶导数对噪声具有无法同意的灵敏性,它的幅度会产生双边缘,而且它不能检测边缘的方向。
但是,当与其它边缘检测技术组合利历时,拉普拉斯算子是一种有效的补充方式。
例如,尽管它的双边缘使得它不适合直接用于边缘检测,但该性质可用于边缘定位。
(7)LaplacianofaGaussian(LoG)检测器
高斯函数
其中,r2=x2+y2,σ是标准误差。
这是一个滑腻函数,假设和一幅图像卷积,那么会使图像变模糊。
模糊程度由σ的值决定。
该函数的拉普拉斯算子为:
求二阶导数是线性运算,因此用
对图像进行卷积与先用滑腻函数对图像卷积再计算结果的拉普拉斯算子是一样的。
这是LoG检测器最关键的概念,用
对图像卷积会产生两个成效:
是图像变滑腻(从而减少噪声);计算拉普拉斯算子,以便产生双边缘图像。
然后,定位边缘确实是找到两个边缘之间的零交叉。
(8)Canny边缘检测器
Canny检测器的成效较好,更适合用于检测真正的弱边缘。
Canny算子给出了一个好的边缘检测算子的3个指标:
低失误率,即真正的边缘点尽可能提取,非边缘点尽可能不提取;高位置精度,检测的边缘应尽可能接近真实边缘;对每一个边缘点有唯一的响应,即取得单像素宽度的边缘。
(9)各类算子的MATLAB实现及成效比较
在MATLAB中能够由edge函数实现各算子对边缘的检测,其挪用格式为:
BW=edge(I,’METHOD’)—自动选择阈值用指定的算子进行边缘检测;
BW=edge(I,’METHOD’,THRESH)—依照给定的阈值THRESH用指定的算子进行边缘检测,忽略所有小于阈值的边缘。
当THRESH为空时,自动选择阈值;
[BW,THRESH]=edge(I,’METHOD’,…)—返回edge利用的阈值,以确信哪个梯度值足够大到能够称为边缘点。
其中,I为输入图像。
返回图像BW为与I同大的二值图像,1表示边缘,0表示非边缘。
I是unit8型、unit16型,或是double型,BW是unit8型。
METHOD:
利用检测算子的类型,常常利用的有:
sobel:
缺省值,用导数的sobel近似值检测边缘,那些梯度最大的点返回边缘。
roberts:
用导数的roberts近似值检测边缘,那些梯度最大的点返回边缘。
prewitt:
用导数的prewitt近似值检测边缘,那些梯度最大的点返回边缘。
LoG:
用LoG算子检测边缘。
Canny:
用Canny算子检测边缘。
THRESH:
指定的阈值,所有不强于thresh的边缘都被忽略。
利用几种典型边缘检测算子取得的边缘图像如图1.7.2所示。
(a)原图像(b)Sobel检测的边缘
(c)Roberts检测的边缘(d)Prewitt检测的边缘
(e)LoG检测的边缘(f)Canny检测的边缘
图1.7.2利用几种典型边缘检测算子取得的边缘图
由图可见,Canny算子的检测结果明显优于其它几个检测算子,除检测到要求的特点外,还产生了最清楚的映射。
二、边缘连接
Hough变换是图像处置中从图像中识别几何形状的大体方式之一。
Hough变换的大体原理在于利用点与线的对偶性,将原始图像空间的给定的曲线通过曲线表达形式变成参数空间的一个点。
如此就把原始图像中给定曲线的检测问题转化为寻觅参数空间中的峰值问题。
也即把检测整体特性转化为检测局部特性。
比如直线、椭圆、圆、弧线等。
Hough变换检测直线的原理
Hough变换的核心是两个坐标系的变换。
总所周知,一个点或一个线段在不同坐标系下的表现形式是不同的。
图像空间中一个像素的位置坐标对应Hough空间(Hough变换以后的空间,极坐标空间较经常使用)中的一条曲线,即直角坐标系中的点(x,y)与极坐标系中的正弦曲线相对应。
若是图像空间中n个像素共一直线,那么它们Hough空间中的n条正弦曲线有一个公共交点如图5-1所示。
把一幅图像中的所有有效像素(如二值化后的黑色像素)均对应到Hough空间,在Hough空间通过某交点的正弦曲线越多,此点所对应的图像空间的直线存在的可能性越大。
将有较多正弦曲线通过的交点称做爱好点(PointofIntereste,POI),Hough空间的爱好点越多说明图像空间的直线越多。
在Hough空间中对通过爱好点的正弦曲线数进行简单的累加统计操作来完成直线检测任务。
(a)图像空间的点(b)参数空间的正弦曲线
图2.5.1Hough变换检测直线
图2.5.1(a)中ρ为从原点到直线的垂直距离,θ为从x轴算起的角度,这条直线在ρ-θ平面中为一点,见图。
Hough变换检测直线的算法步骤如下:
①图像预处置,一样Hough变换只适应于黑白图像,即Hough变换之前应第一进行图像边缘提取;
②初始化一个ρ、θ平面的数组。
一样ρ方向上的量化数量为对角线方向像素数,θ方向上的量化间距为2°;
③顺序搜索图像的所有黑点,对每一个黑点,按式计算ρ、θ取不同值,别离将对应的数组元素加1;
④求出数组中的最大值并记录对应的ρ、θ;
⑤绘出ρ、θ对应的直线。
Hough变换的大体策略是:
由图像空间中的边缘数据点去计算参数空间中的参考点的可能轨迹,并在一个累加器中给计算出的参考点计数,最后选出峰值。
在matlab中,利用hough函数计算二值图像的标准Hough变换。
挪用格式为:
[H,THETA,RHO]=HOUGH(BW);
[H,THETA,RHO]=HOUGH(BW,PARAM1,VAL1,PARAM2,VAL2);
其中BW是作过边缘提取的二值图像,H是Hough变换后取得的矩阵,THETA、RHO别离对应Hough变换矩阵的每一列和每一行的θ值和ρ值。
PARAM1即为'ThetaResolution',它概念了Hough变换矩阵沿着theta轴的距离,缺省值为1;
PARAM2即为'RhoResolution',它概念了Hough变换矩阵沿着rho轴的距离,缺省值为1。
利用Hough变换进行线检测和链接的第一步是峰值检测。
因为数字图像的空间中的量化、Hough变换的参数空间中的量化和典型图像的边缘都不是很直那个事实,Hough变换的峰值一样都位于多个Hough变换单元中。
在matlab中,函数houghpeaks可用于在Hough变换中找到一组成心义的明显峰值。
挪用格式为:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数字图像 处置 实验 new