华工数字信号处理设计性实验图像信号的抽取与插值
- 格式:docx
- 大小:216.76 KB
- 文档页数:3
实验二信号的采样与重建一,实验目的(1)通过观察采样信号的混叠现象,进一步理解奈奎斯特采样频率的意义。
(2)通过实验,了解数字信号采样转换过程中的频率特征。
(3)对实际的音频文件作内插和抽取操作,体会低通滤波器在内插和抽取中的作用。
二,实验内容(1)采样混叠,对一个模拟信号Va(t)进行等间采样,采样频率为200HZ,得到离散时间信号V(n).Va(t)由频率为30Hz,150Hz,170Hz,250Hz,330Hz的5个正弦信号的加权和构成。
Va(t)=6cos(60pi*t)+3sin(300pi*t)+2cos(340pi*t)+4cos(500pi*t )+10sin(660pi*t)观察采样后信号的混叠效应。
程序:clear,close all,t=0:0.1:20;Ts=1/2;n=0:Ts:20;V=8*cos(0.3*pi*t)+5*cos(0.5*pi*t+0.6435)-10*sin(0.7*pi*t);Vn=8*cos(0.3*pi*n)+5*cos(0.5*pi*n+0.6435)-10*sin(0.7*pi*n);subplot(221)plot(t,V),grid on,subplot(222)stem(n,Vn,'.'),gridon,05101520-40-200204005101520-40-2002040(2)输入信号X(n)为归一化频率f1=0.043,f2=0.31的两个正弦信号相加而成,N=100,按因子M=2作抽取:(1)不适用低通滤波器;(2)使用低通滤波器。
分别显示输入输出序列在时域和频域中的特性。
程序:clear;N=100; M=2;f1=0.043; f2=0.31; n=0:N-1;x=sin(2*pi*f1*n)+sin(2*pi*f2*n); y1=x(1:2:100);y2=decimate(x,M,'fir'); figure(1);stem(n,x(1:N));title('input sequence'); xlabel('n');ylabel('fudu'); figure(2); n=0:N/2-1; stem(n,y1);title('output sequence without LP'); xlabel('n');ylabel('fudu'); figure(3); m=0:N/M-1;stem(m,y2(1:N/M));title('output sequence with LP'); xlabel('n');ylabel('fudu'); figure(4);[h,w]=freqz(x);plot(w(1:512),abs(h(1:512)));title('frequency spectrum of the input sequence'); xlabel('w');ylabel('fudu'); figure(5);[h,w]=freqz(y1);plot(w(1:512),abs(h(1:512)));title('frequency spectrum of the output sequence without LP'); xlabel('w');ylabel('fudu'); figure(6);[h,w]=freqz(y2);plot(w(1:512),abs(h(1:512)));title('frequency spectrum of the output sequence without LP'); xlabel('w');ylabel('fudu');0102030405060708090100-2-1.5-1-0.500.511.52input sequencenf u d u05101520253035404550-2-1.5-1-0.500.511.52output sequence without LPnf u d u05101520253035404550-1.5-1-0.50.511.5output sequence with LPnf u d u0.511.522.533.505101520253035404550frequency spectrum of the input sequencewf u d u00.51 1.52 2.53 3.551015202530frequency spectrum of the output sequence without LPwf u d u00.51 1.52 2.53 3.5510152025frequency spectrum of the output sequence without LPwf u d u(3)输入信号X(n)为归一化频率f1=0.043,f2=0.31的两个正弦信号相加而成,长度N=50,内插因子为2.(1)不适用低通滤波器;(2)使用低通滤波器。
数字信号处理实验报告班级:姓名:组号:第九组日期:二零一四年十一月实验1 常见离散信号产生和实现一、实验目的1、加深对常用离散信号的理解;2、熟悉使用MATLAB在时域中产生一些基本的离散时间信号。
二、实验原理1、单位抽样序列在MATLAB中可以利用函数实现。
2、单位阶越序列在MATLAB中可以利用函数实现:3、正弦序列在MATLAB中实现过程如下:4、复指数序列在MATLAB中实现过程如下:5、指数序列在MATLAB中实现过程如下:三、预习要求1、预先阅读实验讲义(MATLAB基础介绍);2、讨论正弦序列、复指数序列的性质。
A.绘出信号,当、时、、时的信号实部和虚部图;当时呢?此时信号周期为多少?程序dsp1.m如下:titlez1=-1/12+j*pi/6;titlez2=1/12+j*pi/6;z3=1/12;z4=2+j*pi/6;z5=j*pi/6;n=0:20;x1=exp(titlez1*n);x2=exp(titlez2*n);x3=exp(z3*n);x4=exp(z4*n);x5=exp(z5*n);subplot(5,2,1);stem(n,real(x1));xlabel('n');ylabel('real(x1)'); title('z1=-1/12+j*pi/6时') subplot(5,2,2);stem(n,imag(x1));xlabel('n');ylabel('imag(x1)'); title('z1=-1/12+j*pi/6时') subplot(5,2,3);stem(n,real(x2));xlabel('n');ylabel('real(x2)'); title('z2=1/12+j*pi/6时')subplot(5,2,4);stem(n,imag(x2));xlabel('n');ylabel('image(x2)'); title('z2=1/12+j*pi/6时')subplot(5,2,5);stem(n,real(x3));xlabel('n');ylabel('real(x3)'); title('z3=1/12时')subplot(5,2,6);stem(n,imag(x3));xlabel('n');ylabel('image(x3)');title('z3=1/12时')subplot(5,2,7);stem(n,real(x4));xlabel('n');ylabel('real(x4)'); title('z4=2+j*pi/6时')subplot(5,2,8);stem(n,imag(x4));xlabel('n');ylabel('image(x4)'); title('z4=2+j*pi/6时')subplot(5,2,9);stem(n,real(x5));xlabel('n');ylabel('real(x5)'); title('z5=j*pi/6时')subplot(5,2,10);stem(n,imag(x5));xlabel('n');ylabel('image(x5)'); title('z5=j*pi/6时')运行结果如下:结论:当Z=pi/6时,序列周期为12。
实验一、数字图像获取实验二、图像的傅立叶变换I=imread(‘原图像名.gif’); %读入原图像文件imshow(I); %显示原图像fftI=fft2(I); %二维离散傅立叶变换sfftI=fftshift(fftI); %直流分量移到频谱中心RR=real(sfftI); %取傅立叶变换的实部II=imag(sfftI); %取傅立叶变换的虚部A=sqrt(RR.^2+II.^2);%计算频谱幅值a=min(min(A));b=max(max(A));B=(A-a)/(b-a)*225; %归一化figure; %设定窗口imshow(B); %显示原图像的频谱实验三、图像增强a=imread('1.jpg'); % 读入原图像I=rgb2gray(a);subplot(2,3,1);Imshow(a); %显示原图像Title('原图像'); %给原图像加标题名subplot(2,3,2);Imshow(I); %显示灰度化图像Title('灰度图'); %给原图像加标题名Subplot(2,3,3);Imhist(I,64); %将原图像直方图显示为64级灰度Title('灰度图直方图') ; %给原图像直方图加标题名J=histeq(I); %对原图像进行直方图均衡化处理subplot(2,3,5);imshow(J); %显示直方图均衡化后的图像Title('直方图均衡化后的图像') ; %给直方图均衡化后的图像加标题名Subplot(2,3,6);Imhist(J,64) ; %将均衡化后图像的直方图显示为64级灰度Title('均衡变换后的直方图') ; %给均衡化后图像直方图加标题名实验四、图像压缩(1)利用DCT变换进行图像压缩RGB = imread('1.jpg');I = rgb2gray(RGB);J = dct2(I); % 离散余弦变换(DCT)图像压缩imshow(log(abs(J)),[]), colormap(jet(64)), colorbarJ(abs(J) < 10) = 0;K = idct2(J);figure,imshow(I)figure,imshow(K,[0 255])2)利用离散余弦变换进行JPEG图像压缩IMG = imread('1.JPG'); %读入图像I = rgb2gray(IMG); %转换成灰度图像N=8; %子块的大小,可为4,8,16I=im2double(I); %转换为双精度型T =dctmtx(N); %产生二维DCT变换矩阵B=blkproc(I,[N,N],'P1*x*P2',T,T'); %二值掩模,用来压缩DCT系数,只留下DCT系数中左上角的10个mask=[1 1 1 1 0 0 0 01 1 1 0 0 0 0 01 1 0 0 0 0 0 01 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 0];B2=blkproc(B,[N,N],'P1.*x',mask); %只保留DCT变换的10个系数I2= blkproc(B2,[N,N],'P1*x*P2',T',T); %重构图像subplot(1,2,1);imshow(I);title('原始图像');subplot(1,2,2);imshow(I2);title('压缩重构后的图像');3)利用行程编码(RLE)进行图像压缩I=checkerboard(10,6);imshow(I)[m n]=size(I);J=[];for i=1:mvalue=I(i,1);num=1;for j=2:nif I(i,j)==valuenum=num+1;elseJ=[J num value];num=1;value=I(i,j);endend% I=[J num value 0 0]; %添加的行判断位0 0enddisp('原图像大小:')whos('I');disp('压缩图像大小:')whos('J');disp('图像的压缩比:')disp(m*n/length(J))实验五、图像融合调入两幅数字图像,并进行三种方法的图像融合;图像融合的MA TLAB程序如下:1)调入、显示两幅图像的程序语句load tartan;X1=X;map1=map;load sinsin;X2=X;map2=map;Subplot(1,2,1);image(X1),colormap(map1);Title('图像map1');Subplot(1,2,2);image(X2),colormap(map2);Title('图像map2');2)两幅图像直接融合的程序语句figure,subplot(1,3,1);image((X1+X2)/2),colormap(map2);title('两图像直接相加融合');3)两幅图像傅立叶变换融合的程序语句F1=fft2(X1);F2=fft2(X2);X=abs(ifft2(F1+F2)/2);Subplot(1,3,2);image(X),colormap(map2);Title('两幅图像傅立叶变换融合'); 4)两幅图像小波变换融合的程序语句[C1,L1]=wavedec2(X1,2,'sym4');[C2,L2]=wavedec2(X2,2,'sym4');C=C1+C2;X=waverec2(C,L1,'sym4');Subplot(1,3,3);image(X/2),colormap(map2);Title('两图像小波变换融合') ;。
一、实验目的1、加深对离散信号的DFT的理解;2、在MATLAB中实现FFT算法。
二、实验原理N点序列的DFT和IDFT变换定义式如下:,,利用旋转因子具有周期性,可以得到快速算法(FFT)。
在MATLAB中,可以用函数和计算N点序列的DFT 正、反变换。
三、实验内容1、对连续的单一频率周期信号按采样频率采样,截取长度N分别选N =20和N =16,观察其DFT结果的幅度谱。
实验代码:k=8;n1=[0:1:19];xa1=sin(2*pi*n1/k);subplot(2,2,1)plot(n1,xa1)xlabel('t/T');ylabel('x(n)');xk1=fft(xa1);xk1=abs(xk1);subplot(2,2,2)stem(n1,xk1)xlabel('k');ylabel('X(k)'); n2=[0:1:15]; xa2=sin(2*pi*n2/k); subplot(2,2,3) plot(n2,xa2)xlabel('t/T');ylabel('x(n)'); xk2=fft(xa2);xk2=abs(xk2); subplot(2,2,4) stem(n2,xk2)xlabel('k');ylabel('X(k)');实验结果:5101520-1-0.500.51t/Tx (n )05101520kX (k )51015-1-0.500.51t/Tx (n )kX (k )2 2N 点实数序列⎪⎭⎪⎬⎫⎪⎩⎪⎨⎧-=+=n N n n Nn N n x 其它,012,...,2,1,0),192cos(21)72cos()(ππN=64。
用一个64点的复数FFT 程序,一次算出N n x DFT k X 2)]([)(=,并绘出)(k X 。
图像信号的抽取与插值一、实验目的1.熟悉图像处理常用函数和方法2.培养通过阅读文献解决问题的能力二、实验要求给出一个二维灰度图像。
1.编程实现对图像任意比例的放大及缩小2.编程实现对图像任意角度的旋转3.解决缩放和旋转时产生锯齿等不图像不平滑问题三、实验提示1.采用上采样、下采样对图像进行缩放2.观察对图像进行缩放或旋转时,图像是否会出现锯齿等不平滑现象3.分析锯齿产生原因4.查阅文献需找解决锯齿的方法四、实验分析(1)图像的缩放实为在图像像素点间插入N-1个点的的上采样,而缩小则是采用下采样来实现原图:代码实现:function imagechange()pic=imread('123.jpg');[l,w]=size(pic);l1=3*l;w1=3*w;i=1:l;x=ceil(i*l1/l);ii=1:w;y=ceil(ii*w1/w);for i=1:lfor ii=1:wa(ceil(i*l1/l),ceil(ii*w1/w))=pic(i,ii);end;end;for i=1:lfor ii=1:w-1n=(y(ii));m=(y(ii+1));for iii=1:m-n-1a(x(i),n+iii)=(a(x(i),m)-a(x(i),n))*iii/(m-n)+a(x(i),n);end;end;end;for i=1:w1for ii=1:l-1n=(x(ii));m=(x(ii+1));for iii=1:m-n-1a(n+iii,i)=(a(m,i)-a(n,i))*iii/(m-n)+a(n,i);end;end;end;imshow(a);放大两倍效果如图:-》(放大两倍以后,已不如原图的清晰)缩小两倍以后为:-》(2)图像旋转根据坐标变换公式,可将旋转后坐标(x1,y1)映射到原坐标(x,y)x=x1*cos(b)-y1*sin(b)y=x1*sin(b)+y1*cos(b)由于求出来的原坐标不为整数,故将其取整,若求得(x,y)坐标范围处于有效范围,即0<x≤l,0<y≤w,l为原图长度,w为原图宽度,则(x1,y1)的灰度取为(x,y)的灰度值。
图像信号的抽取与插值
一、实验目的
1.熟悉图像处理常用函数和方法
2.培养通过阅读文献解决问题的能力
二、实验要求
给出一个二维灰度图像。
1.编程实现对图像任意比例的放大及缩小
2.编程实现对图像任意角度的旋转
3.解决缩放和旋转时产生锯齿等不图像不平滑问题
三、实验提示
1.采用上采样、下采样对图像进行缩放
2.观察对图像进行缩放或旋转时,图像是否会出现锯齿等不平滑现象
3.分析锯齿产生原因
4.查阅文献需找解决锯齿的方法
四、实验分析
(1)图像的缩放
实为在图像像素点间插入N-1个点的的上采样,而缩小则是采用下采样来实现
原图:
代码实现:
function imagechange()
pic=imread('');
[l,w]=size(pic);
l1=3*l;
w1=3*w;
i=1:l;
x=ceil(i*l1/l);
ii=1:w;
y=ceil(ii*w1/w);
for i=1:l
for ii=1:w
a(ceil(i*l1/l),ceil(ii*w1/w))=pic(i,ii);
end;
end;
for i=1:l
for ii=1:w-1
n=(y(ii));
m=(y(ii+1));
for iii=1:m-n-1
a(x(i),n+iii)=(a(x(i),m)-a(x(i),n))*iii/(m-n)+a(x(i),n);
end;
end;
end;
for i=1:w1
for ii=1:l-1
n=(x(ii));
m=(x(ii+1));
for iii=1:m-n-1
a(n+iii,i)=(a(m,i)-a(n,i))*iii/(m-n)+a(n,i);
end;
end;
end;
imshow(a);
放大两倍效果如图:
-》
(放大两倍以后,已不如原图的清晰)
缩小两倍以后为:
-》
(2)图像旋转
根据坐标变换公式,可将旋转后坐标(x1,y1)映射到原坐标(x,y)
x=x1*cos(b)-y1*sin(b)
y=x1*sin(b)+y1*cos(b)
由于求出来的原坐标不为整数,故将其取整,若求得(x,y)坐标范围处于有效范围,即0<x≤l,0<y≤w,l为原图长度,w为原图宽度,则(x1,y1)的灰度取为(x,y)的灰度值。
代码实现为:
function imagechange2
pic=imread('');
[l,w]=size(pic);
b=30;
xx=[0,0,l,l];
yy=[0,w,w,0];
b=b*2*pi/360;
x0=min(xx.*cos(b)-yy.*sin(b));
y0=min(xx.*sin(b)+yy.*cos(b));
x1=max(xx.*cos(b)-yy.*sin(b));
y1=max(xx.*sin(b)+yy.*cos(b));
for x=1:fix(x1-x0)+1
for y=1:fix(y1-y0)+1
a(x,y)=uint8(205);
end;
end;
[l1,w1]=size(a);
for x=1:l1
for y=1:w1
xt=floor(+x*cos(b)-y*sin(b)+l*sin(b)*sin(b));
yt=floor(+x*sin(b)+y*cos(b)-l*sin(b)*cos(b));
if (xt>0 && xt<=l && yt>0 && yt<=w)
a(x,y)=pic(xt,yt);
end;
end;
end;
imshow(a);
截图:
四、实验感想
图像放大,采用线性插值法。
具体做法为,在两点之间,插入一些点使之与原本的渐变速度保持一致,因为在图像变化比较大的区域不应采用平稳的渐变,而线性插值虽然使变化平稳部分的锯齿状况有所改善,但缺使变化剧烈的部分出现了不应有的渐变。
图像旋转时,从新画布出发寻找原画布上的像素点,由于变换之后的坐标为小数,故对新坐标取整,这个过程实际上是邻近插值法,但放大后仍能发现一些锯齿。