资源描述
l 目的
数字信号处理和图象处理是电子信息工程专业必修的基础课,学好这些课程对于解决信息系统中信号的传输与处理问题是绝对必需的。
(1)培养掌握信号与系统物理模型的数学描述、分析、求解及相应的物理解释能力。
(2)培养实验技能。鉴于这门课程偏重理论分析和计算求解的特点,本课程的设计环节侧重软件, 兼顾硬件, 软硬结合, 这不仅会明显地巩固理论教学中所学的基本概念和分析方法, 而且将与其它课程实验一起共同为本科生毕业设计和研究生论文工作的开展打下良好基础。
l 要求
(1) 掌握数字信号处理的基本算法的计算机实现,从而培养运用数字信号处理的原理解决生物医学、电子工程领域的实际问题的能力。
(2) 进一步提高程序设计及调试能力,初步掌握进行科学研究工作的主要步骤和方法,学习和掌握科学研究资料检索的方法,学习对已有资料进行消化总结的方法,学习撰写科学报告的基本方法。
一、 主要研究内容
l 自适应系统仿模
(1) 自适应滤波算法的原理;
(2) 自适应滤波的算法——LMS算法;
(3) MATLAB编程实现自适应滤波方法,确定加权系数;
(4) 绘制出对k变化的LMS学习曲线。
l 对Lena图像的若干增强处理
(1)直方图均衡化增强图像对比度的MATLAB程序:
(2)采用邻域平滑算法增强图像的MATLAB程序
(3)采用边界锐化算法增强图像的MATLAB程序
l 对tout图像进行增强处理。
三、设计中的关键问题
1 、自适应系统仿模
对于一个离散时间系统,可定义期待响应dk为一个希望自适应系统的输出如与之相接近的信号,其中k为采样时刻。
如图1.1所示,系统由一个自适应线性组合器和一个相减器组成,在k时刻的系统输出误差
(1.1)
而自适应线性组合器的输出
(1.2)
其中
分别为自适应系统在k时刻的输入信号向量和权问量。
图1.1 利用MSE性能测度的自适应系统
于是系统输出均方误差
(1.3)
这里,权向量可以是随时间变化的,但为确知向量,故在式(1.1)中可将置于统计平均符号之外。
考虑平稳随机信号,系统输入信号Xk及期待响应dk统计量的计算应和时刻k无关,故有
(1.4)
定义期待响应和输入信号之间的互相关向量为
(1.5)
由此,在图1.1组成的系统中,其均方误差输出的性能测量为权向量的二次函数。且该系统的性能函数为
(1.6)
由上式可知,等号右边三项均为实数,且前面两项之和必大于或等于第三项,故性能函数必为大于或等于零的实数。
可以看出,让性能函数达到最小的最佳权向量可以用对它求梯度的方法得到。事实上,由式(1.6)并利用梯度的运算式可知
(1.7)
在最佳权向量处的梯度值应为零,于是
自适应系统在最小均方误差输出情况下的最佳权向量满足维纳一霍夫(Wiener-Hopf)方程
(1.8)
式中,相关矩阵R必须是满秩的,即必须有逆。
将式(1. 8)代入式(1. 6),且考虑到为实数,于是最小均方误差为
(1.9)
对于LMS算法,可以简单地直接利用单次采样数据| εk |2来代替均方误差。于是在自适应过程的每次迭代中,其梯度估值具有如下形式:
(1.11)
采用这个简单的梯度估值,可以导出一种最速下降法类型的自适应算法。可得
(1.12)
称上式为LMS算法。μ是一个用于控制自适应速度和稳定性的增益常数。由于在每次迭代权时是基于不准确的梯度估值,因而这个自适应过程是带噪的。
一个单输入单输出的未知系统(或称被控系统)的自适应模拟(Adaptive modeling)示于图1.2,未知被控系统与自适应滤波器(即图中的自适应模拟)由相同的输入激励。自适应滤波器调整自身以得到一个与未知系统相匹配的输出,通常是得到一个未知系统输出最好的最小均方拟合。这种拟合的程度与自适应系统的可调权数(即“自由度”)有关。
图1.2 单输入单输出的自适应模拟模型
对于如图1.2所示系统,令xk=RANDOM(1)-0.5,让L=2,µ=0.2µmax,考虑噪声nk是一个功率为E[nk2]=0.01的白噪声序列。绘制出E[εk2]对k变化的LMS学习曲线。
源程序:
clc
clear
close all
N=5; %滤波器阶数
sample_N=2048; %采样点数
xt=randn(1,2048);
b=[0.1 0.2 0.3 0.4 0.5];
Y=filter(b,1,xt);
dk=Y+0.01*randn(1,2048); %randn产生高斯白噪声,dk为期望输出
M=length(xt); %M为接收数据长度
u=0.00182; %计算能够使LMS算法收敛的u
y=zeros(1,M);
w=zeros(1,N); %LMS滤波器系数,初始为零
for n=N:M %系数调整LMS算法
x1=xt(n:-1:n-N+1); %LMS算法,x1为五个输入之和
y(n)=w*x1';
e(n)=dk(n)-y(n);
w=w+2*u*e(n)*x1; %5个递推权值
end
error=e.^2; %LMS算法每一步迭代的均方误差
figure(1)
plot(error);
axis([0 3000 0 3]);
ylabel('e^2');
仿真结果:
W0
W1
W2
W3
W4
0.0998
0.1993
0.2993
0.3999
0.499
减小u,令u=0.5u=0.00091,进行仿真,结果如下:
W0
W1
W2
W3
W4
0.0978
0.1958
0.2921
0.3890
0.4871
由上面可知,u的减小,让误差下降变慢,处理时间变长,如果过度增大u会难以找到最佳的权系数。
2、对Lena图像的若干增强处理
图像增强是指按特定的需要突出一幅图像中的某些信息,同时,消弱或去除某些不需要的信息的处理方法。其主要目的是处理后的图像对某些特定的应用比原来的图像更加有效。图像增强技术主要有直方图修改处理、图像平滑化处理、图像尖锐化处理和彩色处理技术等。
(1)直方图均衡化增强图像对比度
直方图是多种空间域处理技术的基础。直方图操作能有效地用于图像增强。除了提供有用的图像统计资料外,直方图固有的信息在其他图像处理应用中也是非常有用的,如图像压缩与分割。直方图在软件中易于计算,也适用于商用硬件设备,因此,它们成为实时图像处理的一个流行工具。
图像的直方图事实上就是图像的亮度分布的概率密度函数,是一幅图像的所有象素集合的最基本的统计规律。直方图反映了图像的明暗分布规律,可以通过图像变换进行直方图调整,获得较好的视觉效果。
直方图均衡化是通过灰度变换将一幅图像转换为另一幅具有均衡直方图,即在每个灰度级上都具有相同的象素点数的过程。
程序:
clear all
close all
I = imread('lena.bmp');
I=rgb2gray(I); %三维彩色图像转二维灰度图像
subplot(2,2,1),imshow(I),title('Original Image') %原始图像
J = histeq(I); %直方图均衡
subplot(2,2,2),imshow(J),title('Equalized Image') %直方图均衡化后的图像
subplot(2,2,3),imhist(I),title('Original Histogram') %归一化的直方图
subplot(2,2,4),imhist(J);title('Equalized Histogram') %直方图均值化后的直方图
仿真结果:
(2)采用邻域平滑算法增强图像
程序:
I=imread('lena.bmp'); %读原始图像
J=imnoise(I,'salt & pepper',0.02); %添加均值为0,方差为0.02的椒盐噪声
h=ones(5,5)/25; %定义邻域为5×5
I2=imfilter(J,h); %邻域平均
subplot(1,2,1);
imshow(J);
subplot(1,2,2);
imshow(I2);
仿真结果:
有噪声图像 邻域平均后的图像
(3)采用边界锐化算法增强图像
程序:
clear all
close all
%直方图
I=imread('lena.bmp');
I1=rgb2gray(I); %I的灰度图
%边界锐化
I1=double(I1);
h1=[0 1 0, 1 -4 1, 0 1 0]; %Laplacian算子
J3=conv2(I1,h1,'same'); %进行卷积运算
h2=[-1 -1 -1, -1 9 -1, -1 -1 -1 ]; %高通滤波法,选择H2滤波器
J4=conv2(I1,h2,'same'); %进行卷积运算
figure(3)
subplot(2,2,1),imshow(I),title('Original Image') %原始图像
subplot(2,2,2),imshow(J3),title('Sharpened Image1') %用Laplacian算子锐化后的图像
subplot(2,2,3),imshow(J4),title('Sharpened Image2') %用高通滤波法锐化后的图像
仿真结果:
3. 对tout图像进行增强处理
一幅256X256的灰度图像,将0~60灰度级压缩到0~30范围内,压缩比1/2;60~180的灰度级扩大到30~240,比率为(210)190/120;将180~255灰度级压缩到240~255范围内,压缩比为15/75。增强图象对比度实际上拉伸图像中一些灰度细节,相对抑制不感兴趣的部分。这可以通过分段线性变换得到。
程序:
clear all
close all
I=imread('pout.jpg');
[m,n,s]=size(I); %三维RGB(G,R,B)
J=zeros(m,n,s);
I=double(I);
fa=60; fb=180;
ga=30; gb=240;
k1=ga/fa;
k2=(gb-ga)/(fb-fa);
k3=(255-gb)/(255-fb)
for i=1:m
for j=1:n
for k=1:s
if I(i,j,k)<=60
J(i,j,k)= k1*I(i,j,k);
elseif 60<I(i,j,k)<=180
J(i,j,k)= k2*( I(i,j,k)-fa)+ ga;
else
J(i,j,k)= k3*( I(i,j,k)-fb)+ gb;
end
end
end
end
J=uint8(J);
subplot(1,2,1),imshow('pout.jpg'),title('Original Image');
subplot(1,2,2),imshow(J),title('Transmitted Image');
仿真结果:
四、 课程设计心得体会
这次的课程设计时间虽然短暂,但我感觉收获颇多。之前接触MATLAB时对其在信号处理方面的兴趣就很感兴趣,自己利用课余时间也略有小研究,因此在图像处理的任务上,能够较轻松的完成。但由于自己对数字信号处理的理论知识理解不深,对数字滤波器的设计缺少知识,对于任务一研究了较长时间,设计过程中通过回顾滤波器设计的相关内容,再通过利用参考文献与网络,成功完成了任务。这次课程设计,让我加深了对之前抽象概念的理解,巩固了之前所了解的理论知识,并能很好的理解和掌握数字信号处理中的基本概念、基本原理、基本分析方法。同时掌握编程方法的技巧,与高级语言的程序设计相比,MATLAB环境下可以更方便、快捷地进行设计,节省大量时间,且参数的修改也十分方便,还可以进一步进行优化设计。
这次的课程设计让我再次感受到MATLAB的强大功能,在今后的日子里,自己还需要不断的摸索。
展开阅读全文