第一篇:光学图像处理实验报告
光学图像处理实验报告
直方图均衡化的研究
一、摘要
直方图均衡化就是把一已知灰度概率分布的图像经过一种变换,使之演变成一幅具有均匀灰度概率分布的新图像。它是以累积分布函数变换法为基础的直方图修正法。分析和总结灰度直方图的均衡化算法并通过VC++实验验证该方法能有效达到图像增强的目的。对于较为暗淡的图像,采用直方图均衡化能够增强其整体对比度,获的较为理想的观察效果。
二、关键字
灰度统计
直方图
均衡化
三、实验原理
1、直方图的理论基础:
(1)直方图概念:灰度直方图表示图像中每种灰度出现的频率。(2)直方图的作用: 反映一幅图像的灰度分布特性
n(3)直方图的计算:
p(rk)k0rk1k0,1,2,,l1 n式中:nk为图像中出现rk级灰度的像素数,n是图像像素总数,而nk/n即为频数。
2、设计目的: 产生一幅灰度级分布具有均匀概率密度的图像,扩展像素取值的动态范围,达到了图象增强的目的。
3、直方图均衡化的效果 :
1)变换后直方图趋向平坦,灰级减少,灰度合并。
2)原始象含有象素数多的几个灰级间隔被拉大了,压缩的只是象素数少的几个灰度级,实际视觉能够接收的信息量大大地增强了,增加了图象的反差。同时,也增加了图象的可视粒度。
4、离散情况下的直方图均衡化的算法:
A、列出原始图像的灰度级 fj,j0,1,,L1
B、统计各灰度级的像素数目 nj,j0,1,,L1
C、计算原始图像直方图各灰度级的频数 Pf(fj)nj/n,j0,1,,L1
kD、计算累积分布函数 C(f)j0Pf(fj),j0,1,,k,L1
F、应用以下公式计算映射后的输出图像的灰度级,P为输出图像灰度级的个数,其中INT为取整符号:
giINT[(gmaxgmin)C(f)gmin0.5] G、用的映射关系修改原始图像的灰度级,从而获得直方图近似为均匀分布的输出图像。
四、实验内容及源程序
1、灰度分布密度的统计 程序代码如下:
/*********************************************** *函数名称:ZhiFangTu(float *tongji)*函数类型:void *变量说明:tongji,灰度分布密度统计 *功能:对图像进行灰度直方图统计
***********************************************/ void CAAAView::OnZhifangtu(float *tongji){ // TODO: Add your command handler code here
int huidu[256];//灰度计数
CAAADoc* pDoc = GetDocument();
LPSTR lpDIB;LPSTR
lpDIBBits;
lpDIB =(LPSTR)::GlobalLock((HGLOBAL)pDoc->GetHDIB());
lpDIBBits = ::FindDIBBits(lpDIB);//原图数据区指针
int iH,iW;memset(huidu,0,sizeof(huidu));//变量初始化
iH = ::DIBHeight(lpDIB);//宽
iW = ::DIBWidth(lpDIB);//长
LPBYTE temp1=new BYTE[iH*iW];//新图像缓冲区
memcpy(temp1,lpDIBBits,iH*iW);//复制原图像到缓冲区
for(int i=0;i { for(int j=0;j { unsigned char temp; temp=temp1[iW*i+j];//灰度统计计数 huidu[temp]++;} } for(i=0;i<256;i++)//统计灰度分布密度 tongji[i]=huidu[i]/(iH*iW*1.0f);} 2、直方图分布的均衡化 (1)统计直方图数组,用一个数组p记录pi;(2)i从1开始,令sisi1pi; (3)一个数组L记录新的s的索引值,即令Lisi*(2561); (4)依次循环每个像素,取原图的像素值作为数组L的下标值,取该下标值对应的数组值作为均衡化之后的像素值。程序代码如下: /*********************************************** *函数名称:zhifangtujunheng *函数类型:void *变量说明:无 *功能:对图像进行灰度分布均衡化处理 ***********************************************/ void CAAAView::OnZhifangtujunheng(){ // TODO: Add your command handler code here CAAADoc* pDoc = GetDocument(); LPSTR lpDIB;LPSTR lpDIBBits; lpDIB =(LPSTR)::GlobalLock((HGLOBAL)pDoc->GetHDIB()); lpDIBBits = ::FindDIBBits(lpDIB);//原图数据区指针 float Hdmd[256];//灰度密度 float temp[256];//中间变量 int a[256];long i,j;memset(temp,0,sizeof(temp));//初始化 OnZhifangtu(Hdmd);//获取图像的灰度密度分布 for(i=0;i<256;i++)//进行均衡化处理 { if(i==0) { temp[0]=Hdmd[0]; } else { temp[i]=temp[i-1]+Hdmd[i]; } a[i]=(int)(255.0f*temp[i]+0.5f);} long iH,iW; iH = ::DIBHeight(lpDIB);//宽 iW = ::DIBWidth(lpDIB);//长 for(i=0;i { for(j=0;j { unsigned char temp1;//将转换后的灰度分布写入dib图像 temp1=*(lpDIBBits+i*iW+j); *(lpDIBBits+i*iW+j)=a[temp1];} } pDoc->UpdateAllViews(NULL);::GlobalUnlock((HGLOBAL)pDoc->GetHDIB());EndWaitCursor();} 五、实验结果的分析与比较 a原图如下所示: b均衡后的结果如下: 结论:图像直方图趋于平坦化,且灰度间隔被拉大,从而有利于图像的分析和识别。对于较为暗淡的图像,采用直方图均衡化能够增强其整体对比度,获的较为理想的观察效果。 六、参考文献 VC++图像处理程序设计(第二版)(杨淑莹等 编著) JIANGSU UNIVERSITY OF TECHNOLOGY 数字信号处理实验报告 学院名称: 电气信息工程学院 专 业: 班 级: 姓 名: 学 号: 指导老师: 张维玺(教授) 2013年12月20日 实验一 离散时间信号的产生 一、实验目的 数字信号处理系统中的信号都是以离散时间形态存在的,所以对离散时间信号的研究是数字信号的基本所在。而要研究离散时间信号,首先需要产生出各种离散时间信号。使用MATLAB软件可以很方便地产生各种常见的离散时间信号,而且它还具有强大绘图功能,便于用户直观地处理输出结果。 通过本实验,学生将学习如何用MATLAB产生一些常见的离散时间信号,实现信号的卷积运算,并通过MATLAB中的绘图工具对产生的信号进行观察,加深对常用离散信号和信号卷积和运算的理解。 二、实验原理 离散时间信号是指在离散时刻才有定义的信号,简称离散信号,或者序列。离散序列通常用x(n)来表示,自变量必须是整数。常见的离散信号如下:(1)单位冲激序列δ(n) 如果δ(n)在时间轴上延迟了k个单位,得到δ(n-k),即长度为N的单位冲激序列δ(n)可以通过下面的MATLAB命令获得。 n=-(N-1):N-1 x=[zeros(1,N-1)1 zeros(1,N-1)]; stem(n,x)延迟K个采样点的长度为N的单位冲激序列δ(n-k)(k n=0:N-1 y=[zeros(1,M)1 zeros(1,N-M-1)]; stem(n,y) (2)单位阶跃序列u(n) 如果u(n)在时间轴上延迟了k个单位,得到u(n-k),即长度为N的单位阶跃序列u(n)可以通过下面的MATLAB命令获得。 n=-(N-1):N-1 x=[zeros(1,N-1)ones(1,N)]; stem(n,x)延迟的单位阶跃序列可以使用类似于单位冲激序列的方法获得。(3)矩形序列 矩形序列有一个重要的参数,就是序列的宽度N。矩形序列与u(n)之间的关系为矩形序列等= u(n)— u(n-N)。 因此,用MATLAB表示矩形序列可利用上面的单位阶跃序列组合而成。(4)正弦序列x(n) 这里,正弦序列的参数都是实数。与连续的正弦信号不同,正弦序列的自变量n必须为整数。可以证明,只有当2π/w为有理数时,正弦序列具有周期性。 长度为N的正弦序列x(n)可以通过下面的MATLAB命令获得。n=0:N-1 x=A*cos(2*pi*f*n/Fs+phase)(5)单边实指数序列x(n) 长度为N的实指数序列x(n)可以通过下面的MATLAB命令实现。n=0:N-1 x=a.^n stem(n,x)单边指数序列n的取值范围为n>=0。当|a|>1时,单边指数序列发散;当|a|<1时,单边指数序列收敛。当a>0时,该序列均取正值;当a<0时,序列在正负摆动。 (6)负指数序列x(n) 当a=0时,得到虚指数序列x(n)。 与连续负指数信号一样,我们将负指数序列实部和虚部的波形分开讨论,得到如下结论: 1)当a>0时,负指数序列x(n)的实部和虚部分别是按指数规律增长的正弦振荡序列; 2)当a<0时,负指数序列x(n)的实部和虚部分别是按指数规律衰减的正弦振荡序列; 3)当a=0时,负指数序列x(n)即为虚指数序列,其实部和虚部分别是等幅的正弦振荡序列; 长度为N的实指数序列x(n)可以通过下面的MATLAB命令实现。n=0:N-1 x=exp((a.+j*w)*n)stem(n,real(x))或 stem(n,imag(x)) 三、实验内容及分析 1n01、编制程序产生单位冲激序列n“并绘出其图及n”学号后两位0n0形。程序:(1)N=4; n=-(N-1):N-1; x=[zeros(1,N-1)1 zeros(1,N-1)];stem(n,x); title('单位冲激序列'); grid on; (2)N=6; M=1;%学号01 n=-(N-1):N-1; y=[zeros(1,N-M+1)1 zeros(1,N-M-1)];stem(n,y); title('单位冲激序列');grid on; 分析:在上图的基础上向右平移了1个单位。 1n02、编制程序产生单位阶跃序列un、un“学号后两位”及 0n0unun“学号后两位”,并绘出其图形。程序: 4 (1)N=5; n=-(N-1):N-1; x=[zeros(1,N-1)ones(1,N)];stem(n,x); title('单位阶跃序列');grid on; (2)N=6; M=1;%学号01 n=-(N-1):N-1; x=[zeros(1,N-M+1)ones(1,N-M)];stem(n,x); title('单位阶跃序列');grid on; 分析:在上图的基础上平移了1个单位.(3)N=6; M=1;%学号01 n=-(N-1):N-1; x=[zeros(1,N-1)ones(1,N)];y=[zeros(1,N-M+1)ones(1,N-M)];z=x-y;stem(n,z); title('单位阶跃序列');grid on; 2 3、编制程序产生正弦序列xncos2n、xncosn及 学号后两位xnsin2n并绘出其图形。 程序:(1)N=5; A=1; w=2*pi;phi=0;n=0:0.05:N-1;x=A*cos(w*n+phi);stem(n,x);title('余弦信号');grid on; 分析:该序列具有周期性,且输出为余弦信号.(2)N=5; A=1; w=2*pi/1;%学号01 phi=0;n=0:0.05:N-1;x=A*cos(w*n+phi);stem(n,x);title('余弦信号');grid on; ; 分析:该序列具有周期性,且输出为余弦信号.(3)N=5; A=1; w=2*pi;phi=0; n=0:0.05:N-1;x=A*sin(w*n+phi);stem(n,x);title('正弦信号');grid on; 分析:该序列具有周期性,且输出为正弦信号.4、编制程序产生复正弦序列xne(2j学号后两位)n,并绘出其图形。N=3; n=0:0.2:N-1; w=1;%学号01 x=exp((2+j*w)*n);subplot(2,1,1) stem(n,real(x)),title('实部');grid on;subplot(2,1,2) stem(n,imag(x)),title('虚部');grid on; 5、编制程序产生指数序列xnan,并绘出其图形。其中a=学号后两位、a=1/“学号后两位”。 (1)N=10; n=0:N-1; a=1;%学号01 x=a.^n;stem(n,x);title('指数序列');grid on; (2)N=10; n=0:N-1; a=1;%学号01 x=a.^(-n);stem(n,x);title('指数序列');grid on; 实验三 离散时间信号的频域分析 一、实验目的 信号的频域分析是信号处理中一种有效的工具。在离散信号的频域分析中,通常将信号表示成单位采样序列的线性组合,而在频域中,将信号表示成复变量或的线性组合。通过这样的表示,可以将时域的离散序列映射到频域以便于进一步的处理。 在本实验中,将学习利用MATLAB计算离散时间信号的DTFT和DFT,并加深对其相互关系的理解。 二、实验原理 (1)DTFT和DFT的定义及其相互关系。 (2)使用到的MATLAB命令有基于DTFT离散时间信号分析函数以及求解序列的DFT函数。 三、实验内容及分析 (1)编程计算并画出下面DTFT的实部、虚部、幅度和相位谱。 X(e)jw0.05180.1553e11.2828ex(n)cosjwjw0.1553ej2w1.0388ej2w0.0518ej3w0.3418ej3w (2)计算32点序列 5n16,0≦n≦31的32点和64点DFT,分别绘出幅度谱图形,并绘出该序列的DTFT图形。 3-1 clear; x=[0.0518,-0.1553,0.1553,0.0518];y=[1,1.2828,1.0388,0.3418];w=[0:500]*pi/500 H=freqz(x,y,w); magX=abs(H);angX=angle(H);realX=real(H);imagX=imag(H);subplot(221);plot(w/pi,magX);grid; xlabel('frequency in pi unit');ylabel('magnitude');title('幅度 part');axis([0 0.9 0 1.1]); subplot(223);plot(w/pi,angX);grid; xlabel('frequency in pi unit');ylabel('radians');title('相位 part');axis([0 1-3.2 3.2]); subplot(222);plot(w/pi,realX);grid; xlabel('frequency in pi unit');ylabel('real part');title('实部 part');axis([0 1-1 1]); subplot(224);plot(w/pi,imagX);grid; xlabel('frequency in pi unit');ylabel('imaginary');title('虚部 part');axis([0 1-1 1.1]); 3-2 N=32;n=0:N-1; xn=cos(5*pi*n/16);k=0:1:N-1;Xk=fft(xn,N);subplot(2,1,1);stem(n,xn);subplot(2,1,2);stem(k,abs(Xk));title('32点');figure N=64;n=0:N-1; xn=cos(5*pi*n/16);k=0:1:N-1;Xk=fft(xn,N);subplot(2,1,1);stem(n,xn);subplot(2,1,2);stem(k,abs(Xk));title('64点'); (1) (2) 实验四 离散时间LTI系统的Z域分析 一、实验目的 本实验通过使用MATLAB函数对离散时间系统的一些特性进行仿真分析,以加深对离散时间系统的零极点、稳定性,频率响应等概念的理解。学会运用MATLAB分析离散时间系统的系统函数的零极点;学会运用MATLAB分析系统函数的零极点分布与其时域特性的关系;学会运用MATLAB进行离散时间系统的频率特性分析。 二、实验原理 离散时间系统的系统函数定义为系统零状态响应的Z变化与激励的Z变化之比。 在MATLAB中系统函数的零极点可通过函数roots得到,也可借助函数tf2zp得到,tf2zp的语句格式为 [Z,P,K]=tf2zp(B,A)其中,B与A分别表示H(z)的分子与分母多项式的系数向量。它的作用是将H(z)的有理分式表示式转换为零极点增益形式。 若要获得系统函数H(z)的零极点分布图,可直接应用zplane函数,其语句格式为 Zplane(B,A) 其中,B与A分别表示H(z)的分子和分母多项式的系数向量。它的作用是在z平面上画出单位圆、零点与极点。 离散系统中z变化建立了时域函数h(n)与z域函数H(z)之间的对应关系。因此,z变化的函数H(z)从形式可以反映h(n)的部分内在性质。可根据系统的传递函数H(z)求单位冲激响应h(n)的函数impz、filter等。 利用系统的频率响应,可以分析系统对各种频率成分的响应特性,并推出系统的特性(高通、低通、带通、带阻等)。 MATLAB提供了求离散时间系统频响特性的函数freqz,调用freqz的格式主要有两种。一种形式为 [H,w]= reqz(B,A,N)其中,B与A分别表示H(z)分子和分母多项式的系数向量;N为正整数,默认值为512;返回值w包含[0,π]范围内的N个频率等分点;返回值H则是离散时间系统频率响应在0~π范围内N个频率处的值。另一种形式为 [H,w]= freqz(B,A,N,‘whole’) 与第一种方式不同之处在于角频率的范围由[0,π]扩展到[0,2π]。 三、实验内容与结果分析 已知LTI离散时间系统,要求由键盘实现系统参数输入,并绘出幅频和相频响应曲线和零极点分布图,进而分析系统的滤波特性和稳定性。 (一)程序 b=[0.0528,0.797,0.1295,0.1295,0.797,0.0528]; a=[1,-1.8107,2.4947,-1.8801,0.9537,-0.2336];w=[0:20:500]*pi/500; x1=0.0528+0.797*exp(-1*j*w)+0.1295*exp(-2*j*w)+0.1295*exp(-3*j*w)+0.797*exp(-4*j*w)+0.0528*exp(-5*j*w); x2=1-1.8107*exp(-1*j*w)+2.4947*exp(-2*j*w)+1.8801*exp(-3*j*w)+0.9537*exp(-4*j*w)+0.2336*exp(-5*j*w);x22=x2+(x2==0)*eps;x=x1./x22;magx=abs(x); angx=angle(x).*180/pi; subplot(2,2,3);zplane(b,a);title('零极点图');subplot(2,2,2);stem(w/pi,magx);title('幅度部分');ylabel('振幅');subplot(2,2,4);stem(w/pi,angx); xlabel('以pi为单位的频率');title('相位部分');ylabel('相位'); (二)波形图 图4-1 幅频、相频响应曲线、零极点分布图 实验六 IIR数字滤波器的设计 一、实验目的 从理论上讲,任何的线性是不变(LTI)离散时间系统都可以看做一个数字滤波器,因此设计数字滤波器实际就是设计离散时间系统。数字滤波器你包括IIR(无限冲激响应)和FIR(有限冲激响应)型,在设计时通常采用不同的方法。 本实验通过使用MATLAB函数对数字滤波器进行设计和和实现,要求掌握IIR数字巴特沃斯滤波器、数字切比雪夫滤波器的设计原理、设计方法和设计步骤;能根据给定的滤波器指标进行滤波器设计;同时也加深学生对数字滤波器的常用指标和设计过程的理解。 二、实验原理 在IIR滤波器的设计中,常用的方法是:先根据设计要求寻找一个合适的模拟原型滤波器,然后根据一定的准则将此模拟原型滤波器转换为数字滤波器。 IIR滤波器的阶数就等于所选的模拟原型滤波器的阶数,所以其阶数确定主要是在模拟原型滤波器中进行的。 IIR数字滤波器的设计方法如下:(1)冲激响应不变法。(2)双线性变化法。 一般来说,在要求时域冲激响应能模仿模拟滤波器的场合,一般使用冲激响应不变法。冲激响应不变法一个重要特点是频率坐标的变化是线性的,因此如果模拟滤波器的频率响应带限于折叠频率的话,则通过变换后滤波器的频率响应可不失真地反映原响应与频率的关系。 与冲激响应不变法比较,双线性变化的主要优点是靠频率的非线性关系得到s平面与z平面的单值一一对应关系,整个值对应于单位圆一周。所以从模拟传递函数可直接通过代数置换得到数字滤波器的传递函数。 MATLAB提供了一组标准的数字滤波器设计函数,大大简化了滤波器的设计工程。 (1)butter。 (2)cheby1、cheby2。 三、实验内容及分析 利用MATLAB编程方法或利用MATLAB中fdatool工具设计不同功能的IIR数字滤波器。 1、基于chebyshev I型模拟滤波器原型使用冲激不变转换方法设计数字滤波器,要求参数为通带截止频率p0.4;通带最大衰减Ap1dB;阻带截止频率s0.4;阻带最小衰减As35dB。 程序: wp=0.2*pi; %通带边界频率 ws=0.4*pi; %阻带截止频率 rp=1; %通带最大衰减 rs=35; %阻带最小衰减 Fs=1000; %¼ÙÉè³éÑùÂö³å1000hz [N,Wn]=cheb1ord(wp,ws,rp,rs,'s'); [Z,P,K]=cheby1(N,rp,Wn,'s');[H,W]=zp2tf(Z,P,K); figure(1);freqs(H,W);[P,Q]=freqs(H,W);figure(2);plot(Q*Fs/(2*pi),abs(P));grid on; xlabel('频率/Hz');ylabel('幅度'); 2、基于Butterworth型模拟滤波器原型使用双线性变换方法设计数字滤波器的,要求参数为截止频率p0.4;通带最大衰减Ap1dB;阻带截止频率s0.25;阻带最小衰减AS40dB。程序: wp=0.4*pi;ws=0.25*pi;rp=1;rs=40;fs=500;ts=1/fs;wp1=wp*ts;ws1=ws*ts; wp2=2*fs*tan(wp1/2);ws2=2*fs*tan(ws1/2); [N,Wn]=buttord(wp2,ws2,rp,rs,'s');[Z,P,K]=buttap(N);[Bap,Aap]=zp2tf(Z,P,K);[b,a]=lp2lp(Bap,Aap,Wn);[bz,az]=bilinear(b,a,fs);[H,W]=freqz(bz,az);subplot(2,1,1);plot(W/pi,abs(H));grid on;xlabel('频率')ylabel('幅度')subplot(2,1,2); plot(W/pi,20*log10(abs(H)));grid on;xlabel('频率');ylabel('幅度(dB)'); 实验七 FIR数字滤波器的设计 一、实验目的 掌握用窗函数设计FIR数字滤波的原理及其设计步骤;熟悉线性相位数字滤波器的特性。学习编写数字滤波器的设计程序的方法,并能进行正确编程;根据给定的滤波器指标,给出设计步骤。 二、实验原理 如果系统的冲激响应h(n)为已知,则系统的输入输出关系为 y(n)=x(n)*h(n) 对于低通滤波器,只要设计出低通滤波器的冲激响应函数,就可以由式得到系统的输出了。 但是将h(n)作为滤波器的脉冲响应有两个问题:一是它是无限长的;二是它是非因果的。对此,采取两项措施:一是将h(n)截短;二是将其右移。 设计时,要根据阻带的最小衰减和过渡带宽度来选择恰当的窗函数类型和窗口长度N。常用的窗函数有矩形窗、海明窗和布莱克曼窗等。 窗函数设计FIR滤波器步骤如下: (1)给定理想频率响应的幅频特性和相频特性; (2)求理想单位脉冲响应,在实际计算中,可对理想频率响应采样。(3)根据过渡带宽度和阻带最小衰减,确定窗函数类型和窗口长度N;(4)求FIR滤波器单位脉冲响应; (5)分析幅频特性,若不满足要求,可适当改变窗函数形式或长度N,重复上述设计过程,以得到满意的结果。 三、实验内容及分析 1、分别用海明窗和布莱克曼窗设计一个48阶的FIR带通滤波器,通带为Wn0.450.55。程序1:海明窗设计 N=48; Window=hamming(N+1);w1=0.45;w2=0.55;ws=[w1,w2]; b=fir1(N,ws/pi,Window);freqz(b,1,512);title('海明窗');grid on; 程序2:莱克曼窗设计 N=48; Window=blackman(N+1);w1=0.45;w2=0.55;ws=[w1,w2]; b=fir1(N,ws/pi,Window);freqz(b,1,512);title('布莱克曼窗');grid on; 2、用矩形窗设计一个线性相位高通滤波器。其中Hejwej00.3 00.3程序: N=9; alpha=(N-1)/2;Wc=0.7*pi;n=(0:8);i=n-alpha;i=i+(i==0)*eps; h=(-1).^n.*sin((i).*Wc)./((i).*pi);%矩形窗函数设计的系统脉冲响应 w=(0:1:500)*2*pi/500; H=h*exp(-j*n'*w);%矩形窗函数设计的频响 magH=abs(H);% 矩形窗函数设计的振幅 subplot(211);stem(n,h); axis([0,8,-0.4,0.4]);title('矩形窗设计h(n)');line([0,10],[0,0]);xlabel('n');ylabel('h');subplot(212);plot(w/pi,magH); xlabel('以pi为单位的频率');ylabel('H振幅');axis([0,2,0,1.7]);title('矩形窗设计振幅谱'); 实验心得体会: 这次实验使我进一步加深了对MATLAB软件的使用。从上次的信号系统实验的初步使用到这一次的深入了解,有了更深刻的认识。对这种语言环境也有了新的了解。 在实验的过程中,我对数字滤波器的整个过程有了很好的理解和掌握。IIR数字滤波器的设计让我知道了巴特沃思滤波器和切比雪夫滤波器的频率特性,还有双线性变换及脉冲响应不变法设计的滤波器的频率特性。做这两个实验的时候程序有点困难,但经过细心的改写图形最终出来了。FIR数字滤波器的设计出来的是两种窗的图形,通过两种窗的比较,我了解了他们各自的特点,幅频和相频特性。 最后,感谢张老师对我的谆谆教导! 南京邮电大学 实 验 报 告 实验名称_____熟悉MATLAB环境 ___ 快速傅里叶变换及其应用 ____IIR数字滤波器的设计_ FIR数字滤波器的设计 课程名称 数字信号处理A 班级学号_______09002111___________ 姓 名 王都超 开课时间 2011/2012学年,第 二 学期 实验一 熟悉MATLAB环境 一、实验目的 (1)熟悉MATLAB的主要操作命令。(2)学会简单的矩阵输入和数据读写。(3)掌握简单的绘图命令。 (4)用MATLAB编程并学会创建函数。(5)观察离散系统的频率响应。 二、实验内容 (1)数组的加、减、乘、除和乘方运算。输入A=[1 2 3 4],B=[3,4,5,6],求 C=A+B,D=A-B,E=A.*B,F=A./B,G=A.^B。并用stem语句画出A、B、C、D、E、F、G。 D = -2 E = F = 0.3333 0.5000 0.6000 0.6667 G = 243 4096(2)用MATLAB实现下列序列: a)x(n)0.8n 0n1 5n=0:1:15;x1=0.8.^n;a=(0.2+3*i)*n;stem(x1)b)x(n)e(0.23j)n 0n15 n=0:1:15;x2=exp(a);a=(0.2+3*i)*n;stem(x2) c)x(n)3cos(0.125n0.2)2sin(0.25n0.1) 0n15 (4)绘出下列时间函数的图形,对x轴、y轴以及图形上方均须加上适当的标注: a)x(t)sin(2t)0t10s b)x(t)cos(100t)sin(t)0t4s t=0:0.01:4;x=cos(100*pi*t).*sin(pi*t);plot(t,x, 'r-');xlabel('t'),ylabel('x(t)'),title('cos') (6)给定一因果系统H(z)(1频响应和相频响应。 2z1z2)/(10.67z10.9z2),求出并绘制H(z)的幅 (7)计算序列{8-2-1 2 3}和序列{2 3-1-3}的离散卷积,并作图表示卷积结果。 (8)求以下差分方程所描述系统的单位脉冲响应h(n), 0n50 y(n)0.1y(n1)0.06y(n2)x(n)2x(n1) 实验过程与结果(含实验程序、运行的数据结果和图形); clear all;N=50;a=[1-2];b=[1 0.1-0.06];x1=[1 zeros(1,N-1)];n=0:1:N-1;h=filter(a,b,x1);stem(n,h)axis([-1 53-2.5 1.2]) 实验二 快速傅里叶变换及其应用 一、实验目的 (1)在理论学习的基础上,通过本实验,加深对FFT的理解,熟悉MATLAB中的有关函数。(2)应用FFT对典型信号进行频谱分析。 (3)了解应用FFT进行信号频谱分析过程中可能出现的问题,以便在实际中正确应用FFT。(4)应用FFT实现序列的线性卷积和相关。 二、实验内容 实验中用到的信号序列 a)高斯序列 (np)qxa(n)e020n15 其他 b)衰减正弦序列 eansin(2fn)xb(n)00n15其他 c)三角波序列 nxc(n)8n00n34n7 其他 d)反三角波序列 4nxd(n)n400n34n7 其他 (1)观察高斯序列的时域和幅频特性,固定信号xa(n)中参数p=8,改变q的值,使q分别等于2,4,8,观察它们的时域和幅频特性,了解当q取不同值时,对信号序列的时域幅频特性的影响;固定q=8,改变p,使p分别等于8,13,14,观察参数p变化对信号序列的时域及幅频特性的影响,观察p等于多少时,会发生明显的泄漏现象,混叠是否也随之出现?记录实验中观察到的现象,绘出相应的时域序列和幅频特性曲线。 (3)观察三角波和反三角波序列的时域和幅频特性,用N=8点FFT分析信号序列xc(n)和观察两者的序列形状和频谱曲线有什么异同?绘出两序列及其幅频特性xd(n)的幅频特性,曲线。 在xc(n)和xd(n)末尾补零,用N=32点FFT分析这两个信号的幅频特性,观察幅频特性发生了什么变化?两种情况的FFT频谱还有相同之处吗?这些变化说明了什么? (5)用FFT分别实现xa(n)(p=8,q=2)和xb(n)(a=0.1,f=0.0625)的16点循环卷积和线性卷积。 n=0:15;p=8;q=2; xa=exp(-(n-p).^2/q);subplot(2,3,1);stem(n,xa,'.');title('xa波形'); Xa=fft(xa,16);subplot(2,3,4);stem(abs(Xa),'.'); title('Xa(k)=FFT[xa(n)]的波形 ');A=1;f=0.0625;a=0.1; xb=exp(-a*n).*sin(2*pi*f*n);subplot(2,3,2);stem(n,xb,'.');title('xb波形');Xb=fft(xb,16);subplot(2,3,5);stem(abs(Xb),'.'); title('Xb(k)=FFT[xb(n)]的波形 '); 实验过程与结果(含实验程序、运行的数据结果和图形); 实验三 IIR数字滤波器的设计 一、实验目的 (1)掌握双线性变换法及脉冲响应不变法设计IIR数字滤波器的具体设计方法及其原理,熟悉用双线性变换法及脉冲响应不变法设计低通、高通和带通IIR数字滤波器的计算机编程。 (2)观察双线性变换及脉冲响应不变法设计的滤波器的频域特性,了解双线性变换法及脉冲响应不变法的特点。 (3)熟悉巴特沃思滤波器、切比雪夫滤波器和椭圆滤波器的频率特性。 二、实验内容(1)P162 例4.4 设采样周期T=250s(采样频率fs=4kHz),分别用脉冲响应不变法和双线性变换法设计一个三阶巴特沃思低通滤波器,其3dB边界频率为fc=1kHz。 脉冲响应不变法: fc=1000;fs=4000;OmegaC=2*pi*fc;[B,A]=butter(3, OmegaC,'s');[num1,den1]=impinvar(B,A,fs);[h1,w]=freqz(num1,den1);f = w/pi*fs/2;plot(f,abs(h1)); 双线性变换法: fc=1000;fs=4000; OmegaC=2*fs*tan(pi*fc/fs);[B,A]=butter(3, OmegaC,'s');[num2,den2]=bilinear(B,A,fs);[h2,w]=freqz(num2,den2);f = w/pi*fs/2;plot(f,abs(h2)); 同一图中画两条曲线: fc=1000;fs=4000;OmegaC=2*pi*fc;[B,A]=butter(3, OmegaC,'s');[num1,den1]=impinvar(B,A,fs);[h1,w]=freqz(num1,den1);f = w/pi*fs/2; OmegaC=2*fs*tan(pi*fc/fs);[B,A]=butter(3, OmegaC,'s');[num2,den2]=bilinear(B,A,fs);[h2,w]=freqz(num2,den2);f = w/pi*fs/2;plot(f,abs(h1),'r-.');hold on;plot(f,abs(h2),'g-'); (选做)(2)fc=0.2kHz,=1dB,fr=0.3kHz,At=25dB,T=1ms;分别用脉冲响应不变法及双线性变换法设计一巴特沃思数字低通滤波器,观察所设计数字滤波器的幅频特性曲线,记录带宽和衰减量,检查是否满足要求。比较这两种方法的优缺点。 实验过程与结果(含实验程序、运行的数据结果和图形); 实验四 FIR数字滤波器的设计 一、实验目的 (1)掌握用窗函数法,频率采样法及优化设计法设计FIR滤波器的原理及方法,熟悉相应的计算机编程; (2)熟悉线性相位FIR滤波器的幅频特性和相频特性; (3)了解各种不同窗函数对滤波器性能的影响。 二、实验内容 (1)生成一个长度为20的矩形窗,画出其时域和幅频特性曲线。n=0:1:19;N=20;win(1:20)=1;[H,w]=freqz(win,1);subplot(2,1,1);stem(n,win)subplot(2,1,2);plot(w,abs(H)); (2)用矩形窗设计一个21阶的线性相位低通FIR数字滤波器,截止频率Wc=0.25π,求出滤波器系数,并绘出滤波器的幅频特性。修改程序,分别得到阶次为N=41,61的滤波器,并显示其各自的幅频曲线。 a)在上面所得的几幅图中,在截止频率两边可以观察到幅频响应的摆动行为。请问波纹的数量与滤波器脉冲响应的长度之间有什么关系? b)最大波纹的高度与滤波器脉冲响应的长度之间有什么关系? 实验过程与结果(含实验程序、运行的数据结果和图形); 21阶的线性相位低通FIR数字滤波器: Wc=0.25*pi;N=21;M=(N-1)/2; %位移量 for n=0:(N-1) if(n== fix(M)) %中间的点单独算 hd(n+1)=Wc/pi; else hd(n+1)=sin(Wc*(n-M))/(pi*(n-M));end;end;win=boxcar(N);%%%不同窗函数 h=hd.*win';[H,w]=freqz(h,1);n=0:1:N-1;subplot(3,1,1);stem(n,h)subplot(3,1,2);plot(w,abs(H));subplot(3,1,3);plot(w,angle(H)); 41阶的线性相位低通FIR数字滤波器: Wc=0.25*pi;N=41;M=(N-1)/2; %位移量 for n=0:(N-1) if(n== fix(M)) %中间的点单独算 hd(n+1)=Wc/pi; else hd(n+1)=sin(Wc*(n-M))/(pi*(n-M));end;end;win=boxcar(N);%%%不同窗函数 h=hd.*win';[H,w]=freqz(h,1);n=0:1:N-1;subplot(3,1,1);stem(n,h)subplot(3,1,2);plot(w,abs(H));subplot(3,1,3);plot(w,angle(H)); 61阶的线性相位低通FIR数字滤波器: Wc=0.25*pi;N=61;M=(N-1)/2; %位移量 for n=0:(N-1) if(n== fix(M)) %中间的点单独算 hd(n+1)=Wc/pi; else hd(n+1)=sin(Wc*(n-M))/(pi*(n-M));end;end;win=boxcar(N);%%%不同窗函数 h=hd.*win';[H,w]=freqz(h,1);n=0:1:N-1;subplot(3,1,1);stem(n,h)subplot(3,1,2);plot(w,abs(H));subplot(3,1,3);plot(w,angle(H)); 数字信号处理实验小结及心得体会: 通过这次实验,我对MATLAB语言有了一定的认识,虽然还不能完全用MATLAB独立编写程序,但对这种语言环境有了新的了解。我知道了一般的加减乘除在MATLAB中不同的意义。知道输入、输出语句怎么形成。通过快速傅里叶变换及其应用的实验,加深了我对FFT的理解,还有对各典型信号的频谱分析,改变参数后时域和幅频特性的变化。IIR数字滤波器的设计让我知道了巴特沃思滤波器和切比雪夫滤波器的频率特性,还有双线性变换及脉冲响应不变法设计的滤波器的频率特性。做这个实验的时候程序有点困难,很多细节问题不能考虑清楚,导致图形出不来。FIR数字滤波器的设计出来的是三种窗的图形,通过三种窗的比较,我了解了他们各自的特点,幅频和相频特性。我在这次实验中的收获很大,接触了很多新的知识,但在实验写程序时,我发现自己还有很多不足。很多程序写不完全。这是自己今后要加强的地方。 实 验 报 告 书 系部学生专业班 实验 名称姓名名称 级时间: : : : : 实验一 直方图均衡 一、实验目的 在学习图像直方图的概念、计算方法、性质和相关应用基础上,生成、绘制图像的直方图,并应用MATLAB编程实现图像直方图均衡化程序。 二、实验内容 (1)计算并绘制图像直方图; (2)编程实现图像的直方图均衡化处理,显示均衡前后的直方图和图像; 三、实验运行结果 四、实验中遇到的问题及解决方法 1、显示无法找到图像文件,应将图片与xx.m文件置于同一文件夹; 2、编程过程中应注意标点的输入法,应该用英文输入,否则会报错。 3、编程完成后运行时输入文件名与保存时文件名相同,区分大小写。 五、思考题 (1)、灰度直方图可以反映一幅图像的哪些特征? 答: 1、表征了图像的一维信息。只反映图像中像素不同灰度值出现的次数(或频数)而未反映像素所在位置。 2、与图像之间的关系是多对一的映射关系。一幅图像唯一确定出与之对应的直方图,但不同图像可能有相同的直方图。 3、子图直方图之和为整图的直方图。(2)均衡化后的直方图有何特点? 答:经直方图均衡化处理后,可以得到一副改善了质量的新图像。这幅图像的灰度层次将不再是呈黑暗色调的图像,而是一副灰度层次较为适中的、比原始图像清晰、明快得多的图像。处理的结果使图像更适合与人的视觉特征或机器的识别系统。 六、实验心得体会 本次实验中,因为初学这个软件,我学习到了在程序中关于图像的运用,以及也复习了课本上的许多知识,加深了对直方图均衡化的理解。 七、程序清单 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)编程实现图像的理想低通和高通滤波;(2)编程实现图像的巴特沃斯低通和高通滤波。 三、实验运行结果 四、实验中遇到的问题及解决方法 显示图像无法打开,最终查出来时图像格式弄错了。 五、思考题 分析为什么图像通过低通滤波器后变得模糊?为什么通过高通滤波器后得到锐化结果? 答:图像的精细结构及突变部分主要由高频成分起作用,故经低通滤波后图像的精细结构消失,变得模糊;经高通滤波后图像得到锐化。 六、实验心得体会 本实验中遇到很多问题及错误,例如图像打不开、处理后图像模糊等,都是经常容易发生的错误,最后实验几次,就能够逐一自己解决了。使自己对数字图像处理课程中的许多问题有了更实际和确切的深入了解。 七、程序清单 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:n for l=1:1:m if(k^2+l^2)>=190^2 % result(k,l)=0;else result(k,l)=i(k,l);end end end subplot(3,2,4); 对该图进行低通滤波 选取D=190 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:n for l=1:1:m if(k^2+l^2)<=190^2 %选取D=190 result(k,l)=0;else result(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('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: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 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);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));% 计算传递函数 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('高通滤波后的图像'); 实验三 图像边缘检测与连接 一、实验目的 图像边缘检测与连接 二、实验内容 (1)编程实现一阶差分边缘检测算法,包括Robert梯度算子、Prewitt算子、Sobel算子等;(2)编程实现二阶差分拉普拉斯边缘检测算法以及LoG检测法和Canny检测法;(3)分析与比较各种边缘检测算法的性能; (4)编程实现Hough变换提取直线 (5)分析Hough变换检测性能; 三、实验运行结果 四、实验中遇到的问题及解决方法 拷贝文件后没改文件名,直接执行时出现错误,最后重新修改后重新编译,使之成功。 五、思考题 (1)边缘的方向是什么意思?为什么要考虑边缘的方向? 答:边缘常常意味着一个区域的终结和另一个区域的开始,图像的边缘也包含了物体的形状的重要信息,他不仅在分析图像时大幅度的减少了要处理的信息量,而且还保护了目标的边界结构。所以考虑边缘的方向很重要。 (2)Hough变换原理是什么? 答:Hough变换的基本原理在于利用点与线的对偶性,将原始图像空间的给定的曲线通过曲线表达形式变为参数空间的一个点。这样就把原始图像中给定曲线的检测问题转化为准找参数空间的峰值问题。也即把检测整体特性转化为检测局部特性。比如直线、椭圆、圆、弧线等。 六、实验心得体会 对于一些图像处理的函数不是很了解,只能够按课本的参照函数拷贝做实验,对于其中的一些函数问题理解不是很透彻,有些甚至完全不懂。还得继续努力。 七、程序清单 1、边缘检测 由edge函数实现各算子对图像的边缘检测 clear all;I = imread('d:office.bmp');I=rgb2gray(I);BW1 = edge(I,'sobel'); %利用Sobel算子进行边缘检测 BW2 = edge(I,'roberts');%利用roberts算子进行边缘检测 BW3 = edge(I,'prewitt');%利用prewitt算子进行边缘检测 BW4 = edge(I,'log'); %利用log算子进行边缘检测 BW5 = edge(I,'canny'); %利用canny算子进行边缘检测 subplot(2,3,1),imshow(I)subplot(2,3,2),imshow(BW1)subplot(2,3,3),imshow(BW2)subplot(2,3,4),imshow(BW3) subplot(2,3,5),imshow(BW4)subplot(2,3,6),imshow(BW5) 2、边缘连接 使用Hough变换作线检测和连接 clear all; RGB = imread('d:M_M.bmp');I=RGB;%I = rgb2gray(RGB);BW = edge(I,'canny'); % 利用Canny算子提取图像边缘 [H,T,R] = hough(BW,'RhoResolution',0.5,'ThetaResolution',0.5);figure(1), imshow(T,R,H,[],'notruesize'), axis on, axis normal xlabel('T'), ylabel('R')p = houghpeaks(H,5,'threshold',ceil(0.3*max(H(:)))); %找到5个较明显的Hough变换峰值 hold on plot(T(p(:,2)),R(p(:,1)),'s','color','white');lines = houghlines(BW,T,R,p,'FillGap',10,'MinLength',10); %查找并链接线段 figure, imshow(BW), hold on %在二值图中叠加显示这些线段 for k = 1:length(lines) xy = [lines(k).point1;lines(k).point2]; plot(xy(:,1),xy(:,2),'LineWidth',2,'Color','green');end 数字图像处理 实验报告 目录 1.数字图像处理简介 2.实验目的3.实验内容 4.实验结果及代码展示 5.算法综述 6.Matlab优势 7.总结 8.存在问题 一、数字图像处理简介 图像处理,是对图像进行分析、加工、和处理,使其满足视觉、心理以及其他要求的技术。图像处理是信号处理在图像域上的一个应用。目前大多数的图像是以数字形式存储,因而图像处理很多情况下指数字图像处理。此外,基于光学理论的处理方法依然占有重要的地位。 图像处理是信号处理的子类,另外与计算机科学、人工智能等领域也有密切的关系。 传统的一维信号处理的方法和概念很多仍然可以直接应用在图像处理上,比如降噪、量化等。然而,图像属于二维信号,和一维信号相比,它有自己特殊的一面,处理的方式和角度也有所不同。 二、实验目的 巩固所学知识,提高所学能力 三、实验内容 利用matlab的GUI程序设计一个简单的图像处理程序,并含有如下基本功能: 1.读入一幅RGB图像,变换为灰度图像和二值图像,并在同一个窗口内分成三个子窗口来分别显示RGB图像和灰度图像,注上文字标题 2.对给定图像进行旋转 3.对给定的图像添加噪声(椒盐噪声、高斯噪声) 四、实验结果及代码展示 1.软件设计界面 2.各模块功能展示以及程序代码 (1)读入一幅RGB图像,变换为灰度图像和二值图像,并在同一个窗口内分成三个子窗口来分别显示RGB图像和灰度图像,注上文字标题 效果展示: 代码: a = imread('C:Documents and SettingsAdministrator桌面数字图像舞美.JPG'); i = rgb2gray(a);I = im2bw(a,0.5); subplot(3,1,1);imshow(a);title('源图像')subplot(3,1,2);imshow(i);title('灰度图像')subplot(3,1,3);imshow(I);title('二值图像') (2)图像旋转 原图 效果展示: 代码: clc;clear all;close all; Img=imread('D:My DocumentsMy Pictures5.JPG');Img=double(Img);[h w]=size(Img);alpha=pi/4; wnew=w*cos(alpha)+h*sin(alpha);hnew=w*sin(alpha)+h*cos(alpha);wnew=ceil(wnew); hnew=ceil(hnew);u0=w*sin(alpha); T=[cos(alpha),sin(alpha);-sin(alpha),cos(alpha)];Imgnew2=zeros(hnew,wnew);Imgnew1=zeros(hnew,wnew);for u=1:hnew for v=1:wnew tem=T*([u;v]-[u0;0]);x=tem(1);y=tem(2);if x>=1&&x<=h&&y>=1&&y<=w x_low=floor(x);x_up=ceil(x);y_low=floor(y);y_up=ceil(y);if(x-x_low)<=(x_up-x)x=x_low; else x=x_up; end if(y-y_low)<=(y_up-y)y=y_low; else y=y_up; end p1=Img(x_low,y_low);p2=Img(x_up,y_low);p3=Img(x_low,y_low);p4=Img(x_up,y_up);s=x-x_low;t=y-y_low;Imgnew1(u,v)=Img(x,y); Imgnew2(u,v)=(1-s)*(1-t)*p1+(1-s)*t*p3+(1-t)*s*p2+s*t*p4;end end end figure;imshow(Imgnew2,[]);B=imrotate(Img,alpha/pi*180);figure;imshow(B,[]); (3)对给定的图像添加噪声(斑点噪声、高斯噪声)效果展示: 代码: I= imread('D:My DocumentsMy Pictures5.JPG');figure,subplot(211);imshow(I);title('原图');J1=imnoise(I,'gaussian',0,0.02); subplot(223);imshow(J);title('添加高斯噪声');J=imnoise(I,'speckle',0.04); subplot(224);imshow(J);title('添加斑点噪声'); 五、算法综述 灰度图像: 一幅完整的图像,是由红色、绿色、蓝色三个通道组成的。红色、绿色、蓝色三个通道的缩览图都是以灰度显示的。用不同的灰度色阶来表示“ 红,绿,蓝”在图像中的比重。通道中的纯白,代表了该色光在此处为最高亮度,亮度级别是255。 通道是整个Photoshop显示图像的基础。色彩的变动,实际上就是间接在对通道灰度图进行调整。通道是Photoshop处理图像的核心部分,所有的色彩调整工具都是围绕在这个核心周围使用的。 在计算机领域中,灰度数字图像是每个像素只有一个采样颜色的图像。这类图像通常显示为从最暗黑色到最亮的白色的灰度,尽管理论上这个采样可以任何颜色的不同深浅,甚至可以是不同亮度上的不同颜色。灰度图像与黑白图像不同,在计算机图像领域中黑白图像只有黑色与白色两种颜色;灰度图像在黑色与白色之间还有许多级的颜色深度。但是,在数字图像领域之外,“黑白图像”也表示“灰度图像”,例如灰度的照片通常叫做“黑白照片”。在一些关于数字图像的文章中单色图像等同于灰度图像,在另外一些文章中又等同于黑白图像。灰度图像经常是在单个电磁波频谱如可见光内测量每个像素的亮度得到的。 用于显示的灰度图像通常用每个采样像素 8 位的非线性尺度来保存,这样可以有 256 级灰度。这种精度刚刚能够避免可见的条带失真,并且非常易于编程。在医学图像与遥感图像这些技术应用中经常采用更多的级数以充分利用每个采样 10 或 12 位的传感器精度,并且避免计算时的近似误差。在这样的应用领域每个采样 16 位即 65536 级得到流行。 二值图像: 是指每个像素不是黑就是白,其灰度值没有中间过渡的图像。二值图像一般用来描述文字或者图形,其优点是占用空间少,缺点是,当表示人物,风景的图像时,二值图像只能描述其轮廓,不能描述细节。这时候要用更高的灰度级。 二值图像是每个像素只有两个可能值的数字图像。人们经常用黑白、B&W、单色图像表示二值图像,但是也可以用来表示每个像素只有一个采样值的任何图像,例如灰度图像等。 二值图像中所有的像素只能从0和1这两个值中取,因此在MATLAB中,二值图像用一个由0和1组成的二维矩阵表示。这两个可取的值分别对应于关闭和打开,关闭表征该像素处于背景,而打开表征该像素处于前景。以这种方式来操作图像可以更容易识别出图像的结构特征。二值图像操作只返回与二值图像的形式或结构有关的信息,如果希望对其他类型的图像进行同样的操作,则首先要将其转换为二进制的图像格式,可以通过调用MATLAB提供的im2bw()来实现。 二值图像经常出现在数字图像处理中作为图像掩码或者在图像分割、二值化和dithering的结果中出现。一些输入输出设备,如激光打印机、传真机、单色计算机显示器等都可以处理二值图像。 二值图像经常使用位图格式存储。 二值图像可以解释为二维整数格Z,图像变形处理领域很大程度上就是受到这个观点启发。 图像旋转: 图像旋转是指图像以某一点为中心旋转一定的角度,形成一幅新的图像的过程。当然这个点通常就是图像的中心。既然是按照中心旋转,自然会有这样一个属性:旋转前和旋转后的点离中心的位置不变.根据这个属性,我们可以得到旋转后的点的坐标与原坐标的对应关系。由于原图像的坐标是以左上角为原点的,所以我们先把坐标转换为以图像中心为原点。假设原图像的宽为w,高为h,(x0,y0)为原坐标内的一点,转换坐标后的点为(x1,y1)。那么不难得到: x1 = x0-w/2;y1 =-y0 + h/2;在新的坐标系下,假设(x0,y0)距离原点的距离为r,点与原点之间的连线与x轴的夹角为b,旋转的角度为a,旋转后的点为(x1,y1) 噪声: 是电路或系统中不含信息量的电压或电流。在工业与自然界中,存在着各种干扰源(噪声源),如大功率电力电子器件的接入、大功率用电设备的开启与断开、雷击闪电等都会使空间电场和磁场产生有序或无序的变化,这些都是干扰源(或噪声源)。这些源产生的电磁波或尖峰脉冲通过磁、电耦合或是通过电源线等路径进入放大电路,各种电气设备,形成各种形式的干扰。 斑点噪声: 斑点噪声是SAR成像系统的一大特色,源自基本分辨单元内地物的随机散射,在图像上表现为信号相关(如在空间上相关)的小斑点,它既降低了图像的画面质量,又严重影响图像的自动分割、分类、目标检测以及其它定量专题信息的提取。 SAR图像斑点噪声的去除一方面要抑制图像均匀区域斑点噪声,另一方面要保持图像边缘和纹理细节信息。SAR斑点噪声的抑制可通过非相干多视处理,也可使用空间域滤波实现。非相干多视处理会降低图像的地面分辨率。因此,涌现出了一系列空间域滤波方法,如均值滤波、中值滤波、Lee滤波、Kuan滤波、Frost滤波、Sigma滤波以及Gamma Map滤波等。但这类算法存在自身无法克服的矛盾:一方面为增强斑点去噪效果需选较大的滤波窗口,另一方面为保持图像的实际分辨率要求所选的窗口较小。 高斯噪声: 所谓高斯噪声是指它的概率密度函数服从高斯分布(即正态分布)的一类噪声。如果一个噪声,它的幅度分布服从高斯分布,而它的功率谱密度又是均匀分布的,则称它为高斯白噪声。高斯白噪声的二阶矩不相关,一阶矩为常数,是指先后信号在时间上的相关性。高斯白噪声包括热噪声和散粒噪声。 实验中是通过MATLAB自带的函数产生噪声,各函数如下: J1=imnoise(I,'salt & pepper',0.05);%添加椒盐噪声 J2=imnoise(I,'gaussian',0,0.03); %添加均值为0,方差为0.03的高斯噪声。 六、Matlab优势 MATLAB是一个包含大量算法的集合。其可以快捷的实现用户所需的各种计算功能。函数中所使用的算法都是科研和工程计算中的最新研究成果,而前经过了各种优化和差错处理。在通常情况下,可以用它来代替底层编程语言,如C和C++。在计算要求相同的情况下,使用MATLAB的编程工作量会大大减少。MATLAB的这些函数集包括从最简单最基本的函数到诸如矩阵,特征向量、快速傅立叶变换的复杂函数。函数所能解决的问题其大致包括矩阵运算和线性方程组的求解、微分方程及偏微分方程的组的求解、符号运算、傅立叶变换和数据的统计分析、工程中的优化问题、稀疏矩阵运算、复数的各种运算、三角函数和其他初等数学运算、多维数组操作以及建模动态仿真等。图形处理功能 图形处理功能MATLAB自产生之日起就具有方便的数据可视化功能,以将向量和矩阵用图形表现出来,并且可以对图形进行标注和打印。高层次的作图包括二维和三维的可视化、图象处理、动画和表达式作图。可用于科学计算和工程绘图。新版本的MATLAB对整个图形处理功能作了很大的改进和完善,使它不仅在一般数据可视化软件都具有的功能(例如二维曲线和三维曲面的绘制和处理等)方面更加完善,而且对于一些其他软件所没有的功能(例如图形的光照处理、色度处理以及四维数据的表现等),MATLAB同样表现了出色的处理能力。同时对一些特殊的可视化要求,例如图形对话等,MATLAB也有相应的功能函数,保证了用户不同层次的要求。另外新版本的MATLAB还着重在图形用户界面(GUI)的制作上作了很大的改善,对这方面有特殊要求的用户也可以得到满足 模块集合工具箱 MATLAB对许多专门的领域都开发了功能强大的模块集和工具箱。一般来说,它们都是由特定领域的专家开发的,用户可以直接使用工具箱学习、应用和评估不同的方法而不需要自己编写代码。目前,MATLAB已经把工具箱延伸到了科学研究和工程应用的诸多领域,诸如数据采集、数据库接口、概率统计、样条拟合、优化算法、偏微分方程求解、神经网络、小波分析、信号处理、图像处理、系统辨识、控制系统设计、LMI控制、鲁棒控制、模型预测、模糊逻辑、金融分析、地图工具、非线性控制设计、实时快速原型及半物理仿真、嵌入式系统开发、定点仿真、DSP与通讯、电力系统仿真等,都在工具箱(Toolbox)家族中有了自己的一席之地。 七、总结 运用matlab软件对图像进行处理,让我巩固了之前所学的知识,同时也在这次作业中更加了解到matlab语言在生活中的运用环境和掌握这门语言的重要性 八、存在问题 1.在进行图像增强时要不要讲图像先进行平滑处理? 2.如何增加这个算法的准确度 3.在此次作业中,为何添加椒盐噪声时无法显示第二篇:数字信号处理实验报告
第三篇:数字信号处理实验报告
第四篇:数字图像处理实验报告
第五篇:数字图像处理实验报告