当前位置:文档之家› 《数字图像处理》课内实验_new

《数字图像处理》课内实验_new

《数字图像处理》课内实验实验一 直方图均衡一、实验题目:直方图均衡二、实验目的:在学习图像直方图的概念、计算方法、性质和相关使用基础上,生成、绘制图像的直方图,并使用MATLAB 编程实现图像直方图均衡化程序。

三、实验内容:(1)计算并绘制图像直方图;(2)编程实现图像的直方图均衡化处理,显示均衡前后的直方图和图像;四、预备知识:(1)熟悉图像读写和显示; (2)理解图像直方图的概念及用途;(3)理解直方图均衡化的概念及使用背景;五、实验原理:在对图像进行处理之前,了解图像整体或局部的灰度分布情况非常必要。

对图像的灰度分布进行分析的重要手段就是建立图像的灰度直方图(Density Histogram ),利用图像灰度直方图,可以直观地看出图像中的像素亮度分布情况;通过直方图均衡化,可以对图像的质量进行调整。

(1)生成并绘制图像的直方图假设一幅数字图像的像素总数为N ,在范围[0,G]内共有L 个灰度级,其直方图定义为离散函数()k k n r h =,其中,r k 是区间[0,G]内的第K 级的亮度,n k 是灰度级为r k 的图像中的像素数。

对于uint 8类图像,G 的值为255;对于uint 16类图像,G 的值为65535;对于double 类图像,G 的值为1.0。

记住,MATLAB 中的索引不能为0,故r 1相当于灰度级0,r 2相当于灰度级1,如此等等,r L 相当于灰度级G 。

其中,uint 8类图像或uint 16类图像中G=L-1。

通常,会用到归一化直方图,即用所有元素h(r k )除以图像中的像素总数N 所得到的图形:P(r k )表示灰度级r k 出现的频数。

MATLAB 图像处理工具箱提供了imhist 函数来计算和显示图像的直方图,其调用格式为:imhist(I,b)[COUNTS,X] = imhist(I)其中I 为输入图像,b 为指定的灰度级数目,默认值为256。

[COUNTS,X]=imhist(…)返回直方图统计的数据和相应的灰度级向量X 。

使用表达式p= imhist(I,b)/N 就可简单地获得归一化直方图,这里N 为图像中的像素总数。

显示图像’lean.bmp ’的直方图及归一化直方图,如图1.2.1所示。

(a) 原图 (b) 直方图 (c) 归一化直方图图1.2.1 灰度图像的直方图及归一化直方图如果图像的灰度分别集中在较窄的区间,从而引起图像细节的模糊,为了增强图像,可通过改善各部分亮度的比例关系,即通过直方图的方法来实现。

这种方法是以概率论为基础的,常用的方法有直方图均衡化和直方图匹配(规定化)。

(2) 直方图均衡化直方图均衡化也叫做直方图均匀化,是将一已知灰度概率密度分布的图像,经过某种变换,变成一幅具有均匀灰度概率密度分布的新图像,此时图像的熵最大,图像所包含的信息量最大,且扩展了像元取值的动态范围,从而达到增强图像整体对比度的效果。

设一幅图像总像元数为N ,灰度级的个数为L ,第K 个灰度级r k 出现的频数为n k ,则第k 灰度级出现的概率为()()1,...,1,0,10-=≤≤=L k r Nn r p k kk r此时变换函数可表示为()()()1,...,1,0,100-=≤≤===∑∑==L k r Nn r p r T s k kj j k j j r k k()()Lk N nN r h r p k k k ,...,2,1,===根据原图像的直方图统计值就可算出均衡化后各像元的灰度值。

直方图上灰度分布较密的部分被拉伸;灰度分布较稀疏的部分被压缩,使图像对比度总体上得到增强。

MATL AB 图像处理工具箱提供了直方图均衡函数histeq 。

其调用格式为:J = histeq(I,n); [J,T] = histeq(I,…);其中,n 是均衡化后的灰度级数目,是一个可选参数,缺省值是64。

[J,T]=histeq(I,…)返回能从图像I 的灰度直方图变换成图像J 的直方图的变换函数T 。

显示图像’RSImg.gif ’的直方图均衡化前后的图像及对应的直方图,如图2-3所示。

(a)原图像 直方图均衡化后图像 (b)(c) 原图的直方图 (d) 均衡化后的直方图图1.2.3直方图均衡化前后的图像及其直方图经过均衡化后,原图中较暗区域中的一些细节更清晰。

六、实验步骤:(1)打开一幅灰度图像,利用MATLAB 工具箱所提供的函数计算并绘制图像的直方图和归一化直方图;(2)利用相应的MATLAB 函数对灰度图像进行直方图均衡化,显示均衡化后的图像及对应的直方图,分析均衡化后图像有何变化,均衡化后的直方图有何特点;七、思考题(1) 灰度直方图可以反映一幅图像的哪些特征? (2) 均衡化后的直方图有何特点?八、实验程序代码:(1)生成并绘制灰度图像的直方图及归一化直方图clear all ;I=imread('lena_gray_256.tif '); %打开一幅灰度图像 [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)直方图均衡化clear all;Im=imread('region.jpg');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 理想滤波器转移函数:低通:⎩⎨⎧=01),(v u H 00),(),(D v u D D v u D >≤, 高通:⎩⎨⎧=01),(v u H 0),(),(D v u D D v u D ≤> (1.6.1)0D 是非负数,22(,)D u v u v =+(,)u v 到频率平面原点的距离。

阶数为n ,截断频率为0D 的2-D 巴特沃斯滤波器转移函数:201(,)1[(,)/]nH u v D u v D =+低通:高通: []nv u D D v u H 20),(/11),(+=(1.6.2) 六、 实验步骤:(1) 读入图像;(2) 实现图像的理想低通和高通滤波; (3) 实现图像的巴特沃斯低通和高通滤波。

七、 思考题目:分析为什么图像通过低通滤波器后变得模糊?为什么通过高通滤波器后得到锐化结果?八、 实验程序代码:图像频域滤波可用fft2函数把图像变换到频域,在频域按公式(1.6.1)、(1.6.2)分别实现频域的理想高低通滤波和频域的巴特沃斯高低通滤波,最后用ifft2反变换到时域得到最后结果。

二维频谱的显示可用函数mesh 完成。

用巴特沃斯滤波器对图像进行低通和高通滤波的例子见图1.6.1。

图1.6.1 图像频率滤波完整的代码:%%%%理想低通和高通clc;clear;data4=imread('lena.gif');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); %对该图进行低通滤波for k=1:1:nfor l=1:1:mif (k^2+l^2)>=190^2 %选取D=190result(k,l)=0;else result(k,l)=i(k,l);endendendsubplot(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); %对原图进行高通滤波for k=1:1:nfor l=1:1:mif (k^2+l^2)<=190^2 %选取D=190result(k,l)=0;else result(k,l)=i(k,l);endendendz=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('lena.gif');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);for i=1:Mfor j=1:Nd=sqrt((i-m)^2+(j-n)^2);h=1/(1+0.414*(d/d0)^(2*nn)); % 计算低通滤波器传递函数 result(i,j)=h*g(i,j);endendsubplot(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);for i=1:Mfor j=1:Nd=sqrt((i-m)^2+(j-n)^2);if (d==0)h=0;elseh=1/(1+0.414*(d0/d)^(2*nn));% 计算传递函数 endresult(i,j)=h*g(i,j);endendsubplot(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变换提取直线;启发学生依据边缘特征进行图像分析和识别,提高学生图像处理和分析能力和实际动手能力。

相关主题