《数字视频图像处理与通信》
实
指导书
安阳工学院
电子信息与电气工程学院
验
目录
概述 ............................................................... 1 第一章 基于MATLAB的图像信息处理算法实验 ............................ 2
实验一 数字图像基本操作 ........................................ 2 实验二 空间域图像增强 ......................................... 5 实验三 数字图像的空间域滤波 .................................... 9 实验四 数字图像的频域滤波 ..................................... 18 第二章 基于DM6437的图象处理算法实验 ............................... 25
实验一 静态图像采集 ........................................... 25 实验二 图像灰度变换 ........................................... 26 实验三 图像黑白变换 ........................................... 29 实验四 图像反色 ............................................... 31 实验报告格式 ...................................................... 34 参考文献 .......................................................... 35
I
概 述
图像信息处理是电子信息工程专业的一门专业课程。通过实验,使学生巩固并加深理解课堂所学基本理论知识,熟悉数字图像处理基本概念,掌握数字图像处理的基本技巧和基本编程方法。
1. 实验内容及安排
学生在学习完信号与系统、数字信号处理、MATLAB语言等前期课程基础上,将课堂老师介绍的基本概念和方法通过设计实验来加深理解,实验安排涵盖了图像变换、图像增强、图像分析等内容。学生实验前应了解开发环境、开发工具熟悉等基本技能,通过实验逐步掌握使用相应开发工具进行数字图像处理的经验和技巧,锻炼提高分析问题、解决问题能力。
2. 实验方式与基本要求 实验方式:
(1)由指导老师讲解实验的基本要求、完成的任务操作要领及注意事项。 (2)实验每两人一组,由学生独立操作完成实验。 (3)学生在完成预习报告后才能进入实验室进行实验。 基本要求:
(1)学会用相关的开发工具编写数字图像处理程序,在规定的时间内完成实验内容。
(2)实验前先预习实验内容,编制好相应的程序及准备需要改变的参数,能预计出可能出现的结果。
(3)观察实验过程,分析比较实验结果,与所学的理论知识相对照。 (4)撰写规范的实验报告。封面应有题目、班级、姓名、学号与实验日期、地点;正文应包括设计目标、设计原理、设计方案及关键函数理解;要求附上实验结果,图表翔实、表述清晰,并对实验结果进行讨论及说明。
3. 考核方式与评分办法
采用实验预习、操作与实验报告综合评分。 (1)学生每次做完实验要进行登记。
1
(2)实验的结果符合实验的教学要求,且得到指导教师认可签字后,学生方可离开实验室。
(3)指导教师对每份实验报告进行批改、评分将成绩登录在册。指导教师根据学生实验过程、操作情况、实验结果、实验报告质量、创新性和工作态度等给出考核成绩,成绩评定60分以下者需重新做实验。
第一章 基于MATLAB的图像信息处理算法实验
实验一 数字图像基本操作
一、实验目的
1、 2、 3、
掌握读、写图像的基本方法。
掌握MATLAB语言中图像数据与信息的读取方法。 理解图像灰度变换处理在图像增强的作用。
二、实验条件
1、PC机 2、MATLAB7.0 三、实验原理
1. 灰度变换
灰度变换是图像增强的一种重要手段,它常用于改变图象的灰度范围及分布,是图象数字化及图象显示的重要工具。
1) 图像反转
灰度级范围为[0, L-1]的图像反转可由下式获得
sL1r
2) 对数运算:有时原图的动态范围太大,超出某些显示设备的允许动态范围,如直接使用原图,则一部分细节可能丢失。解决的方法是对原图进行灰度压缩,如对数变换:s = clog(1 + r),c为常数,r≥ 0
3) 幂次变换:scr,c0,0
4) 对比拉伸:在实际应用中,为了突出图像中感兴趣的研究对象,常常要求局部扩展拉伸某一范围的灰度值,或对不同范围的灰度值进行不同的拉伸处理,即分段线
2
性拉伸:
其对应的数学表达式为:
四、实验内容与要求
复制若干图形文件(如forest.tif和b747.jpg)至MATLAB目录下work文件夹中。
1. 熟悉MATLAB语言中对图像数据读取,显示等基本函数
特别需要熟悉下列命令:熟悉imread()函数、imwrite()函数、size()函数、Subplot()函数、Figure()函数。
1) 将MATLAB目录下work文件夹中的forest.tif图像文件读出.用到imread,imfinfo等文件,观察一下图像数据,了解一下数字图像在MATLAB中的处理就是处理一个矩阵。将这个图像显示出来(用imshow)。尝试修改map颜色矩阵的值,再将图像显示出来,观察图像颜色的变化。
2) 将MATLAB目录下work文件夹中的b747.jpg图像文件读出,用rgb2gray()将其转化为灰度图像,记为变量B。
2. 图像灰度变换处理在图像增强的作用
1) 读入不同情况的图像,请自己编程和调用Matlab函数用常用灰度变换函数对输入图像进行灰度变换,比较相应的处理效果。
2) 对B进行如图所示的分段线形变换处理,试比较与直方图均衡化处理的异同。
3
图1.1 分段线性变换函数
五、实验步骤
1. 熟悉MATLAB语言中对图像数据读取,显示等基本函数 1) 文件读取与信息显示: load trees;
[X,map]=imread('forest.tif'); subimage(X,map); I=imread('forest.tif'); imshow(I);
imfinfo('forest.tif');
2) map颜色矩阵的修改 [X,map]=imread('forest.tif'); map1=map+map; subimage(X,map1);
3) 灰度图像的转化 RGB=imread('b747.jpg'); B=rgb2gray(RGB);
figure(1);imshow(RGB);title('原图'); figure(2);imshow(B);title('灰度图'); 2. 图像灰度变换处理在图像增强中的作用 RGB=imread('b747.jpg');
4
B=rgb2gray(RGB);
figure(1);imshow(RGB);title('原图'); figure(2);imshow(B);title('灰度图');
% J = imadjust(I,[low_in; high_in],[low_out; high_out])
% 将low_in至high_in之间的值映射到low_out至high_out之间,low_in以下及high_in以上归零。
g1=imadjust(B,[0 1],[1 0]); % imcomplement:对图像进行求反运算 g2=imcomplement(B);
g3=im2uint8(mat2gray(log(1+double(B)))); figure(3);imshow(g1);title('灰度调整图'); figure(4);imshow(g2);title('反色图'); figure(5);imshow(g3);title('对数变换图');
3. 绘制图像灰度直方图的方法,对图像进行均衡化处理 1) 对B进行如图所示的分段线形变换处理 x1=0:0.01:0.125; x2=0.125:0.01:0.75; x3=0.75:0.01:1; y1=2*x1;
y2=0.25+0.6*(x2-0.125); y3=0.625+1.5*(x3-0.75); x=[x1,x2,x3]; y=[y1,y2,y3]; plot(x,y)
title('分段线性曲线'); 六、实验结果分析与讨论
实验二 空间域图像增强
一、实验目的
5
熟悉数字图像增强的一般方法,包括: 1.掌握空域变换增强的原理、方法 2.掌握直方图变换的原理、方法 二、实验条件
1、PC机 2、MATLAB7.0 三、实验原理
1、增强图象对比度实际上拉伸图像中一些灰度细节,相对抑制不感兴趣的部分。这可以通过分段线性变换得到。
(1)分段线性变换数学表达式
c'a'ca(f(i,j)a)a';af(i,j)c d'c'f'(i,j)(f(i,j)c)c';cf(i,j)d dcb'd'(f(i,j)d)d';df(i,j)b bd(2)分段线性变换函数实现算法程序如下:
r1=(g1-g0)/(f1-f0); % b1=g0-r1*f0;
r2=(g2-g1)/(f2-f1);% b2=g1-r2*f1; b3=g2-r3*f2; for i=1:m for j=1:n f=X2(i,j); g(i,j)=0;
if (f>=0)&(f<=f1); %找出灰度级范围在0~f1的元素 g(i,j)=r1*f+b1; %灰度级在0~f1的进行灰度变换
else if (f>=f1)&(f<=f2) %找出灰度级范围在f1~f2的元素 g(i,j)=r2*f+b2; %灰度级在f1~f2的进行灰度变换
else if (f>=f2)&(f<=f3) %找出灰度级范围在f2~f3的元素 g(i,j)=r3*f+b3; %灰度级在f2~f3的进行灰度变换
6
end end end
2、利用分段线性函数进行图像增强 (1)、图像变换公式即: (2)、增强对比度参考程序: X1=imread('pout.tif');
figure(1),imshow(X1);title('原图') f0=0;g0=0; f1=70;g1=30; f2=180;g2=230;
f3=255;g3=255;%绘制变换曲线
figure(2),plot([f0,f1,f2,f3],[g0,g1,g2,g3]) axis tight,xlabel('f'),ylabel('g') title('intensity transformation')
r1=(g1-g0)/(f1-f0);%求0~70灰度级范围内的压缩比 b1=g0-r1*f0;
r2=(g2-g1)/(f2-f1);%求70~180灰度级范围内的压缩比 b2=g1-r2*f1;
r3=(g3-g2)/(f3-f2);%求180~255灰度级范围内的压缩比 b3=g2-r3*f2;
[m,n]=size(X1); %求矩阵的行数m,列数n X2=double(X1); %将数据类型转换为双精度型 %变换矩阵中的每个元素 for i=1:m for j=1:n f=X2(i,j); g(i,j)=0;
if (f>=0)&(f<=f1); %找出灰度级范围在0~70的元素 g(i,j)=r1*f+b1; %灰度级在0~30的进行灰度变换
7
r1(f(i,j)b1;0f(i,j)f1g(i,j)r2(f(i,j)c)b2;f1f(i,j)f2r3(f(i,j)d)b3;f2f(i,j)f3
elseif (f>=f1)&(f<=f2) %找出灰度级范围在70~180的元素 g(i,j)=r2*f+b2; %灰度级在70~180的进行灰度变换
elseif (f>=f2)&(f<=f3) %找出灰度级范围在180~255的元素 g(i,j)=r3*f+b3; %灰度级在180~255的进行灰度变换 end end end figure(3),
imshow(mat2gray(g));
title('对比度增强图') %函数mat2gray( )将数据矩阵转换成灰度图像 3、直方图均衡化
(1)熟悉下列matlab函数
直方图均衡的MTLAB函数:J=histeq (I,n)
%函数完成直方图均衡,其中I是原始图像矩阵,J是变换后所得的图像矩阵;用户可以指定均衡化后的灰度级数n,默认值为64。
imhist(I,n)
%显示直方图,其中I是原始图像矩阵,灰度级数n,默认值为256。 (2)参考程序:
I = imread('tire.tif'); J = histeq(I);
figure(1),imshow(I),title('原图')
figure(2), imshow(J);title('原图直方图均衡化') figure(3),imhist(I,64),title('原图直方图显示')
figure(4),imhist(J,64),title('直方图均衡化后直方图显示') 4、直方图规定化
(1)直方图均衡的MTLAB函数: J = histeq(I,hgram);
%函数完成直方图规定化,其中I是原始图像矩阵,J是变换后所得的图像矩阵;hgram是由用户指定的矢量。hgram中的各元素的值域为[0,1]、[0,255]、[0,65535]。
(2)参考程序
8
I=imread('circuit.tif'); [M,N]=size(I); for i=1:8:257 counts(i)=i; end
Q=imread('circuit.tif'); N=histeq(Q,counts); figure
subplot(1,2,1);imshow(N); subplot(1,2,2);imhist(N); axis([0 260 0 5000]) 四、实验内容与要求
练习图像增强的Matlab命令:histeq,histem
一幅256X256的灰度图像如图(a),将0~60灰度级压缩到0~30范围内,压缩比1/2;60~180的灰度级扩大到30~240,比率为190/120;将180~255灰度级压缩到240~255范围内,压缩比为15/75。效果图如图(b)。
2. 熟悉命令histeq,将原图(a)做直方图均衡和直方图均衡处理,比较图像增强的效果,并用命令histem绘制增强后图像的直方图 五、实验结果分析与讨论
实验三 数字图像的空间域滤波
一、实验目的
9
1. 掌握图像滤波的基本定义及目的。 2. 理解空间域滤波的基本原理及方法。 3. 掌握进行图像的空域滤波的方法。 二、实验条件 1、PC机 2、MATLAB7.0 三、实验原理与算法分析
1. 空间域增强
空间域滤波是在图像空间中借助模板对图像进行领域操作,处理图像每一个像素的取值都是根据模板对输入像素相应领域内的像素值进行计算得到的。空域滤波基本上是让图像在频域空间内某个范围的分量受到抑制,同时保证其他分量不变,从而改变输出图像的频率分布,达到增强图像的目的。
空域滤波一般分为线性滤波和非线性滤波两类。线性滤波器的设计常基于对傅立叶变换的分析,非线性空域滤波器则一般直接对领域进行操作。各种空域滤波器根据功能主要分为平滑滤波器和锐化滤波器。平滑可用低通来实现,平滑的目的可分为两类:一类是模糊,目的是在提取较大的目标前去除太小的细节或将目标内的小肩端连接起来;另一类是消除噪声。锐化可用高通滤波来实现,锐化的目的是为了增强被模糊的细节。结合这两种分类方法,
可将空间滤波增强分为四类:
线性平滑滤波器(低通)非线性平滑滤波器(低通) 线性锐化滤波器(高通)非线性锐化滤波器(高通) 空间滤波器都是基于模板卷积,其主要工作步骤是:
1) 将模板在图中移动,并将模板中心与图中某个像素位置重合; 2) 将模板上的系数与模板下对应的像素相乘; 3) 将所有乘积相加;
4) 将和(模板的输出响应)赋给图中对应模板中心位置的像素。 2. 平滑滤波器 1) 线性平滑滤波器
线性低通平滑滤波器也称为均值滤波器,这种滤波器的所有系数都是正数,对3×3的模板来说,最简单的是取所有系数为1,为了保持输出图像任然在原来图像的灰
10
度值范围内,模板与象素邻域的乘积都要除以9。
MATLAB 提供了fspecial 函数生成滤波时所用的模板,并提供filter2 函数用指定的滤波器模板对图像进行运算。函数fspecial 的语法格式为:
h=fspecial(type);
h=fspecial(type,parameters);
其中参数type 指定滤波器的种类,parameters 是与滤波器种类有关的具体参数。
表2.1 MATLAB中预定义的滤波器种类
MATLAB 提供了一个函数imnoise 来给图像增添噪声,其语法格式为: J=imnoise(I,type);
J=imnoise(I,type,parameters);
参数type 指定噪声的种类,parameters 是与噪声种类有关的具体参数。参数的种类见表2.2。
11
表2.2 噪声种类及参数说明 2) 非线性平滑滤波器
中值滤波器是一种常用的非线性平滑滤波器,其滤波原理与均值滤波器方法类似,但计算的非加权求和,而是把领域中的图像的象素按灰度级进行排序,然后选择改组的中间值作为输出象素值。
MATLAB 提供了medfilt2 函数来实现中值滤波,其语法格式为: B=medfilt2(A,[m n]); B=medfilt2(A);
其中,A 是原图象,B 是中值滤波后输出的图像。[m n]指定滤波模板的大小,默认模板为3×3。
3. 锐化滤波器
图像平滑往往使图像中的边界、轮廓变得模糊,为了减少这类不利效果的影响,需要利用图像锐化技术,使图像的边缘变得清晰。
1) 线性锐化滤波器
线性高通滤波器是最常用的线性锐化滤波器。这种滤波器的中心系数都是正的,而周围的系数都是负的,所有的系数之和为0。
对3×3 的模板来说,典型的系数取值为: [-1 -1 -1; -1 8 -1; -1 -1 -1]
事实上这是拉普拉斯算子。语句h=-fspecial(‘laplacian’,0.5)得到的拉普拉斯算子为:
h =-0.3333 -0.3333 -0.3333 -0.3333 2.6667 -0.3333 -0.3333 -0.3333 -0.3333 2) 非线性锐化滤波
邻域平均可以模糊图像,因为平均对应积分,所以利用微分可以锐化图像。图像处理中最常用的微分方法是利用梯度。常用的空域非线性锐化滤波微分算子有sobel 算子、prewitt 算子、log 算子等。 四、实验内容与要求
12
1. 平滑空间滤波:
1) 读出eight.tif这幅图像,给这幅图像分别加入椒盐噪声和高斯噪声后并与前一张图显示在同一图像窗口中。
2) 对加入噪声图像选用不同的平滑(低通)模板做运算,对比不同模板所形成的效果,要求在同一窗口中显示。
3) 使用函数imfilter时,分别采用不同的填充方法(或边界选项,如零填充、’replicate’、’symmetric’、’circular’)进行低通滤波,显示处理后的图像。
4) 运用for循环,将加有椒盐噪声的图像进行10次,20次均值滤波,查看其特点,显示均值处理后的图像(提示:利用fspecial函数的’average’类型生成均值滤波器)。
5) 对加入椒盐噪声的图像分别采用均值滤波法,和中值滤波法对有噪声的图像做处理,要求在同一窗口中显示结果。
6) 自己设计平滑空间滤波器,并将其对噪声图像进行处理,显示处理后的图像。 2. 锐化空间滤波
1) 读出moon.tif这幅图像,采用3×3的拉普拉斯算子w = [ 1, 1, 1; 1 – 8 1; 1, 1, 1]对其进行滤波。
2) 编写函数w = genlaplacian(n),自动产生任一奇数尺寸n的拉普拉斯算子,如5×5的拉普拉斯算子
w = [ 1 1 1 1 1
1 1 1 1 1
1 1 -24 1 1 1 1 1 1 1 1 1 1 1 1]
3) 分别采用5×5,9×9,15×15和25×25大小的拉普拉斯算子对
blurry_moon.tif进行锐化滤波,并利用式g(x,y)f(x,y)2f(x,y)完成图像的锐化增强,观察其有何不同,要求在同一窗口中显示。
4) 采用不同的梯度算子对blurry_moon.tif进行锐化滤波,并比较其效果。 5) 自己设计锐化空间滤波器,并将其对噪声图像进行处理,显示处理后的图像; 五、参考程序
13
1. 平滑空间滤波:
1) 椒盐噪声和高斯噪声的加入 I=imread('football.jpg');
figure;imshow(I);title('原图像'); I1=imnoise(I,'salt & pepper',0.02);
figure;imshow(abs(I1));title('加入椒盐噪声后的图像'); I2=imnoise(I,'gaussian',0,0.005);
figure;imshow(I2);title('加入高斯噪声后的图像'); 2) 不同的平滑(低通)模板的处理 I=imread('eight.tif');
figure(1),imshow(I);title('原图') Hs = fspecial('sobel');
Sobel = imfilter(I,Hs,'replicate'); Hl = fspecial('laplacian',0.4); lap = imfilter(I,Hl,'replicate');
figure(2),imshow(Sobel);title('Sobel滤波') figure(3),imshow(lap);title('lap滤波') 3) 均值、中值滤波
%(1)对噪声污染的图像做均值滤波:
%---------对椒盐噪声做均值滤波 ---------% II1=rgb2gray(I1); a=1/9.*[1 1 1 1 1 1 1 1 1]; b=conv2(a,II1);
figure;imshow(b,[0 255]);title('对椒盐噪声的均值滤波模板a'); a1=1/13.*[0 0 1 0 0 0 1 1 1 0 1 1 1 1 1 0 1 1 1 0
14
0 0 1 0 0]; b1=conv2(a1,II1);
figure;imshow(b1,[0 255]);title('对椒盐噪声的均值滤波模板a1'); a2=1/34.*[1 1 1 1 1 1 2 2 2 1 1 2 2 2 1 1 2 2 2 1 1 1 1 1 1]; b2=conv2(a2,II1);
figure;imshow(b2,[0 255]);title('对椒盐噪声的均值滤波模板a2'); a3=1/16.*[1 2 1 2 4 2 1 2 1]; b3=conv2(a3,II1);
figure;imshow(b3,[0 255]);title('对椒盐噪声的均值滤波模板a3'); %---------对高斯噪声做均值滤波---------% II2=rgb2gray(I2); a=1/9.*[1 1 1 1 1 1 1 1 1]; b=conv2(a,II2);
figure;imshow(b,[0 255]);title('对高斯噪声的均值滤波模板a'); a1=1/13.*[0 0 1 0 0 0 1 1 1 0 1 1 1 1 1 0 1 1 1 0 0 0 1 0 0]; b1=conv2(a1,II2);
figure;imshow(b1,[0 255]);title('对高斯噪声的均值滤波模板a1'); a2=1/34.*[1 1 1 1 1
15
1 2 2 2 1 1 2 2 2 1 1 2 2 2 1 1 1 1 1 1]; b2=conv2(a2,II2);
figure;imshow(b2,[0 255]);title('对高斯噪声的均值滤波模板a2'); a3=1/16.*[1 2 1 2 4 2 1 2 1]; b3=conv2(a3,II2);
figure;imshow(b3,[0 255]);title('对高斯噪声的均值滤波模板a3');
%对噪声污染的图像做中值滤波:
%---------对椒盐噪声做中值滤波---------% c=medfilt2(II1,[3 3]);
figure;imshow(c);title('3×3(对椒盐噪声图像)'); c1=medfilt2(II1,[5 5]);
figure;imshow(c1);title('5×5(对椒盐噪声图像)'); c2=medfilt2(II1,[7 7]);
figure;imshow(c2);title('7×7(对椒盐噪声图像)'); %---------对高斯噪声做中值滤波---------% c=medfilt2(II2,[3 3]);
figure;imshow(c);title('3×3(对高斯噪声图像)'); c1=medfilt2(II2,[5 5]);
figure;imshow(c1);title('5×5(对高斯噪声图像)'); c2=medfilt2(II2,[7 7]);
figure;imshow(c2);title('7×7(对高斯噪声图像)'); 2. 空间锐化滤波: 1) 3×3的拉普拉斯算子滤波 I=imread('moon.tif');
16
T=double(I);
subplot(1,2,1),imshow(T,[]);title('Original Image'); w =[1,1,1; 1,-8,1; 1,1,1];
K=conv2(T,w,'same');
subplot(1,2,2),imshow(K,[]);title('拉普拉斯滤波'); 2) 不同尺寸梯度算子的锐化滤波 [I,map]=imread('moon.tif'); I=double(I);
[Gx,Gy]=gradient(I); % gradient calculation G=sqrt(Gx.*Gx+Gy.*Gy); % matrix J1=G; figure(1); % gradient1 imshow(J1,map);
J2=I; % gradient2 K=find(G>=7); J2(K)=G(K);figure; imshow(J2,map);
J3=I; % gradient3 K=find(G>=7); J3(K)=255;figure; imshow(J3,map);
J4=I; % gradient4 K=find(G<=7); J4(K)=255;figure; imshow(J4,map);
J5=I; % gradient5 K=find(G<=7); J5(K)=0; Q=find(G>=7);
17
J5(Q)=255;figure; imshow(J5,map);
3) 自行设计锐化空间滤波器domain=[8 8 0 8 8; 8 8 0 8 8; 0 0 0 0 0; 8 8 0 8 8; 8 8 0 8 8]; K1= ordfilt2(J,5,domain);
实验四 数字图像的频域滤波
一、实验目的
1. 掌握图像滤波的基本定义及目的。 2. 掌握傅立叶变换及逆变换的基本原理方法。 3. 理解频域滤波的基本原理及方法。 4. 掌握进行图像的频域滤波的方法。 二、实验条件
1. PC机 2. MATLAB7.0 三、实验原理
1. 频域增强
频域增强是利用图像变换方法将原来的图像空间中的图像以某种形式转换到其他空间中,然后利用该空间的特有性质方便地进行图像处理,最后再转换回原来的图像空间中,从而得到处理后的图像。
频域增强的主要步骤是:
1) 选择变换方法,将输入图像变换到频域空间。
2) 在频域空间中,根据处理目的设计一个转移函数,并进行处理。 3) 将所得结果用反变换得到增强的图像。 常用的频域增强方法有低通滤波和高通滤波。 2. 低通滤波
图像的能量大部分集中在幅度谱的低频和中频部分,而图像的边缘和噪声对应于
18
高频部分。因此能降低高频成分幅度的滤波器就能减弱噪声的影响。由卷积定理,在频域实现低通滤波的数学表达式:
G(u,v) =H(u,v)F(u,v) 1) 理想低通滤波器(ILPF)
2) 巴特沃斯低通滤波器(BLPF)
3) 指数型低通滤波器(ELPF)
3. 高通滤波
由于图像中的细节部分与其高频分量相对应,所以高通滤波可以对图像进行锐化处理。高通滤波与低通滤波相反,它是高频分量顺利通过,使低频分量受到削弱。高通滤波器和低通滤波器相似,其转移函数分别为:
1) 理想高通滤波器(IHPF)
2) 巴特沃斯高通滤波器(BLPF)
3) 指数型高通滤波器(ELPF)
图像经过高通滤波处理后,会丢失许多低频信息,所以图像的平滑区基本上会消失。所以,可以采用高频加强滤波来弥补。高频加强滤波就是在设计滤波传递函数时,加上一个大于0小于1的常数c,即:H′(u,v) =H(u,v)+c
19
四、实验内容与要求
1. 傅立叶变换
1) 读出woman.tif这幅图像,对其进行快速傅立叶变换,分别显示其幅度图像和相位图像。仅对相位部分进行傅立叶反变换后查看结果图像。
2) 仅对幅度部分进行傅立叶反变换后查看结果图像。将图像的傅立叶变换F置为其共轭后进行反变换,比较新生成图像与原始图像的差异。
2. 平滑频域滤波
1) 设计理想低通滤波器、巴特沃斯低通滤波器和高斯低通滤波器,截至频率自选,分别给出各种滤波器的透视图。
2) 读出test_pattern.tif这幅图像,分别采用理想低通滤波器、巴特沃斯低通滤波器和高斯低通滤波器对其进行滤波(截至频率自选),再做反变换,观察不同的截止频率下采用不同低通滤波器得到的图像与原图像的区别,特别注意振铃效应。(提示:1)在频率域滤波同样要注意到填充问题;2)注意到(-1)x+y;
3. 锐化频域滤波
1) 设计理想高通滤波器、巴特沃斯高通滤波器和高斯高通滤波器,截至频率自选,分别给出各种滤波器的透视图。
2) 读出test_pattern.tif这幅图像,分别采用理想高通滤波器、巴特沃斯高通滤波器和高斯高通滤波器对其进行滤波(截至频率自选),再做反变换,观察不同的截止频率下采用不同高通滤波器得到的图像与原图像的区别。 五、参考程序
1. 傅立叶变换
1) 图像的快速傅立叶变换,分别显示其幅度图像和相位图像。 F=imread('cameraman.tif'); F1=fft2(F);
F2=log(1+abs(F1)); %amplitude spectrum F3=fftshift(F1);
F4=angle(F1); %phase spectrum figure(1),imshow(F),title('原图'); figure(2),imshow(F3),title('幅度谱');
figure(3),imshow(log(1+abs(F3)),[]),title('转换坐标原点的幅度谱');
20
figure(4),imshow(F4),title('相位谱'); 2) 相位部分进行傅立叶反变换。 F=imread('cameraman.tif'); F1=fft2(F); i=sqrt(-1);
f2=ifft2(exp(i*angle(F1))); figure(1),imshow(F),title('原图');
figure(2),imshow(real(f2),[]);title('相位谱重建图'); 相位谱决定了图像信号中各频率分量的位置。 3) 幅度部分进行傅立叶反变换。 F=imread('cameraman.tif'); F1=fft2(F); f1=ifft2(abs(F1));
figure(1),imshow(F),title('原图');
figure(2),imshow(log(1+abs(f1)),[]);;title('幅度谱重建图'); 2. 平滑频域滤波
指数低通滤波器、巴特沃斯低通滤波器的设计与滤波 1) 指数低通滤波器 clc; clear all;
I=imread('cameraman.tif');
subplot(1,2,1),imshow(I); title('原图');
f=double(I); % 数据类型转换,MATLAB不支持图像的无符号整型的计算 g=fft2(f); % 傅立叶变换 g=fftshift(g); % 转换数据矩阵 [M,N]=size(g);
nn=1; % 一阶指数低通滤波器 d0=50; %截止频率 m=fix(M/2); n=fix(N/2); for i=1:M
21
for j=1:N
d=sqrt((i-m)^2+(j-n)^2); h=exp(-(d/d0)^n) result(i,j)=h*g(i,j); end end
result=ifftshift(result); J1=ifft2(result); J2=uint8(real(J1));
subplot(1,2,2),imshow(J2); title('指数低通滤波后图形'); %显示滤波处理后的图像
2) 巴特沃斯低通滤波器(二阶) clc; clear all;
I=imread('cameraman.tif');
subplot(1,2,1),imshow(I); title('原图' )
f=double(I); % 数据类型转换,MATLAB不支持图像的无符号整型的计算 g=fft2(f); % 傅立叶变换 g=fftshift(g); % 转换数据矩阵 [M,N]=size(g);
nn=1; % 二阶巴特沃斯(Butterworth)低通滤波器 d0=50; %截止频率 m=fix(M/2); n=fix(N/2); for i=1:M for j=1:N
d=sqrt((i-m)^2+(j-n)^2);
h=1/(1+0.414*(d/d0)^(2*nn)); % 计算低通滤波器传递函数 result(i,j)=h*g(i,j); end
22
end
result=ifftshift(result); J1=ifft2(result); J2=uint8(real(J1)); subplot(1,2,2),imshow(J2);
title('巴特沃斯低通滤波后图像' ) % 显示滤波处理后的图像 3. 锐化频域滤波
理想高通滤波器、巴特沃斯高通滤波器和高斯高通滤波器的设计与滤波 1) 理想高通滤波器 clear
I=imread('cameraman.tif'); f=double(I); g=fft2(f); g=fftshift(g); [M,N]=size(g);
d0=80; %d0=15,25,80 m=fix(M/2); n=fix(N/2); for i=1:M for j=1:N
d=sqrt((i-m)^2+(j-n)^2); if(d>=d0) h=1; else h=0; end
result(i,j)=h*g(i,j); end end
result=ifftshift(result); J1=ifft2(result); J2=uint8(real(J1));
23
subplot(121),imshow(I); title('原图');
subplot(1,2,2),imshow(J2); title('理想高通滤波后图像' ) 2) 巴特沃斯高通滤波器 clear
I=imread('cameraman.tif'); g=fft2(I); g=fftshift(g); [M,N]=size(g);
nn=2; % 2-grade nutterworth highpass filter d0=80; m=fix(M/2); n=fix(N/2); for i=1:M for j=1:N
d=sqrt((i-m)^2+(j-n)^2); if (d==0) h=0; else
h=1/(1+0.414*(d0/d)^(2*nn));%transform fuction calculation
end result(i,j)=h*g(i,j); end end
result=ifftshift(result); J1=ifft2(result); J2=uint8(real(J1)); subplot(121),imshow(I); title('原图');
24
subplot(1,2,2),imshow(J2); title('巴特沃斯高通滤波后图像' )
第二章 基于DM6437的图象处理算法实验
1、如无特殊说明,本章实验程序位于文件夹“video_Algorithm”下。要深刻理解数字图象处理算法,可以参考图书:
1) Visual C++数字图象实用工程案例精选,徐慧 等编著,人民邮电出版社,2004
年3月第一版
2) Visual C++/Matlab图象处理与识别实用案例精选,胡小峰 赵辉编著,人民
邮电出版社,2004年9月第一版
2、TI公司提供了高效的算法库,用户可以自行去官方网站下载,编号为:spruf30。 3、本板卡的图象数据在DDR内存中的格式:Cb-Y-Cr-Y,比如一个内存数据为0x12345678,那么0x78=Cb,0x56=Y0,0x34=Cr,0x12=Y1,诸如类推。
4、如果Flash有程序,请把SW2的AEW2拨到OFF状态,这样上电后DSP就不会运行。
实验一 静态图像采集
一、实验目的
1、 2、 3、
熟悉DM6437外设寄存器的操作
熟悉DM6437视频输入、输出端的操作及编程 熟悉静态图象采集
二、实验设备
计算机、CCS3.3、DSP仿真器、EL_DM6437实验平台 三、实验原理
1. DM6437集成了视频输入模块,可以直接与数字视频信号连接,本版卡虽然加了解
码芯片TVP5146,但是也把这些信号引脚引出来,方便用户连接数字视频; 2. 输出DAC,这样就不必要再加一颗视频编码IC,从而降低成本,利于设计和制造; 3. 视频输入、输出模块需要用到DDR2内存作为缓冲,如果DDR2内存不好用,那么
会输出错乱的图象,所以运行图象相关程序前必须初始化DDR控制器。 四、实验内容与要求
1、 2、
连接好电脑和仿真器、EL_DM6437和仿真器;
用视频线一头连接板卡的P3或者P5,另一头连接显示器的AV输入,并
25
调到AV模式;
注:如果带转接头的话,AV输入应该是黄色端子。 3、 4、 5、
用视频线连接摄像头输出和板卡的P9插座,注意摄像头输出制式为PAL; 给EL_DM6437和摄像头上电,打开CCS并连接;
打开video_acqui文件夹的工程video_acqui.pjt,此工程功能为:初始
化视频输入、输出模块寄存器,把摄像头捕捉到的影像输出到显示器,仅捕捉一幅图象;
6、 7、 8、
下载程序out文件,如果没有就先编译一下Project-》Build(把摄像头对准需要捕捉的图象场地; 点击运行
,稍等片刻后程序自动停止,如果成功,显示:
);
这时用户可以发现显示屏显示出摄像头所指影像。 9、
本实验结束!
实验二 图像灰度变换
26
一、实验目的
1、 2、 3、
熟悉DM6437外设寄存器的操作
熟悉DM6437视频输入、输出端的操作及编程 熟悉灰度变换算法
二、实验设备
计算机、CCS3.3、DSP仿真器、EL_DM6437实验平台 三、实验原理
对人眼敏感的是Y值,UV色度值其次,所以把UV变成0x80,图象即为灰度; 四、实验内容与要求
1、 2、
连接好电脑和仿真器、EL_DM6437和仿真器;
用视频线一头连接板卡的P3或者P5,另一头连接显示器的AV输入,并
调到AV模式;
注:如果带转接头的话,AV输入应该是黄色端子。 3、 4、 5、
用视频线连接摄像头输出和板卡的P9插座,注意摄像头输出制式为PAL; 给EL_DM6437和摄像头上电,打开CCS并连接;
打开Color2gray文件夹的工程Color2gray.pjt,此工程功能为:把摄像
头捕捉到的一幅图象输出到显示器,并将之变成灰度;
6、 7、 8、
下载程序out文件,如果没有就先编译一下Project-》Build(把摄像头对准需要捕捉的图象场地;
设置第一个断点,在video_test.c的453行处:
);
9、 图象:
点击运行
,稍等片刻后程序停止在断点,此时可以从显示器看到彩色
27
10、 继续点击运行
,如果成功,显示出灰度图象:
并显示:
这时用户可以发现显示屏显示出摄像头所指影像已变灰度。 11、 本实验结束!
28
实验三 图像黑白变换
一、实验目的
1、 2、 3、
熟悉DM6437外设寄存器的操作
熟悉DM6437视频输入、输出端的操作及编程 熟悉黑白变换算法
二、实验设备
计算机、CCS3.3、DSP仿真器、EL_DM6437实验平台 三、实验原理
图象变成灰度,然后对Y进行二值化处理即可; 四、实验内容与要求
1、 2、
连接好电脑和仿真器、EL_DM6437和仿真器;
用视频线一头连接板卡的P3或者P5,另一头连接显示器的AV输入,并
调到AV模式;
注:如果带转接头的话,AV输入应该是黄色端子。 3、 4、 5、
用视频线连接摄像头输出和板卡的P9插座,注意摄像头输出制式为PAL; 给EL_DM6437和摄像头上电,打开CCS并连接;
打开Color2blackwhite文件夹的工程Color2blackwhite.pjt,此工程功
能为:把摄像头捕捉到的一幅图象输出到显示器,并将之变成黑白;
6、 7、 8、
下载程序out文件,如果没有就先编译一下Project-》Build(把摄像头对准需要捕捉的图象场地;
设置第一个断点,在video_test.c的441行处:
);
9、 图象:
点击运行
,稍等片刻后程序停止在断点,此时可以从显示器看到彩色
29
10、 继续点击运行
,如果成功,显示出黑白图象:
并显示:
这时用户可以发现显示屏显示出摄像头所指影像已变黑白。 11、 本实验结束!
30
实验四 图像反色
一、实验目的
1、 2、 3、
熟悉DM6437外设寄存器的操作
熟悉DM6437视频输入、输出端的操作及编程 熟悉反色变换算法
二、实验条件
计算机、CCS3.3、DSP仿真器、EL_DM6437实验平台 三、实验原理
对Y值进行取反即可实现本算法; 四、实验内容与要求
1、 2、
连接好电脑和仿真器、EL_DM6437和仿真器;
用视频线一头连接板卡的P3或者P5,另一头连接显示器的AV输入,并
调到AV模式;
注:如果带转接头的话,AV输入应该是黄色端子。 3、 4、 5、
用视频线连接摄像头输出和板卡的P9插座,注意摄像头输出制式为PAL; 给EL_DM6437和摄像头上电,打开CCS并连接;
打开ColorInverse文件夹的工程ColorInverse.pjt,此工程功能为:把
摄像头捕捉到的一幅图象输出到显示器,并将之变成灰度的反色;
6、 7、 8、
下载程序out文件,如果没有就先编译一下Project-》Build(把摄像头对准需要捕捉的图象场地;
设置第一个断点,在video_test.c的438行处:
);
9、 图象:
点击运行
,稍等片刻后程序停止在断点,此时可以从显示器看到彩色
31
10、 继续点击运行
,如果成功,显示出灰度反色图象:
并显示:
32
这时用户可以发现显示屏显示出摄像头所指影像已被反色。 11、 本实验结束!
33
实验报告格式
实 验 报 告
1.实验目的
2.实验环境(软件、硬件及条件)
3.实验方法(关键函数解释或者流程图,不用写程序)
4.实验结果
5.实验结果分析和结论
34
参考文献
[1] R.C. Gonzalez & R.E Woods. Digital Image Processing(2E). Prentice Hall PTR,2002中译本:阮秋琦等译. 数字图像处理(第二版). 北京:电子工业出版社,2005.3
[2] 冈萨雷斯. 数字图像处理(MATLAB版). 北京:电子工业出版社,2005.9 [3] K.R. Castleman. 数字图像处理. 朱志刚等译. 北京:电子工业出版社,1998.9
[4] 章毓晋. 图象工程(上册)—图象处理和分析. 北京:清华大学出版社,2003.7
[5] 何斌. Visual C++数字图像处理(第二版). 北京:人民邮电出版社,2002.1
35
因篇幅问题不能全部显示,请点此查看更多更全内容