MATLAB信号处理——分解信号,双谱重构

 

编程分析幅度谱和相位谱在图像信号、语音信号中的作用。

一、图像信号

(1)原图像信号如下:

 

 

代码如下:

PA0=imread('大头儿子.jpg');
PB0=imread('狗.jpg');
PC0=imread('苹果.jpg');
%灰度处理
PA=rgb2gray(PA0);PB=rgb2gray(PB0);PC=rgb2gray(PC0);
%调整为同一大小
[a,b]=size(PA);
PB=imresize(PB,[a,b]);
PC=imresize(PC,[a,b]);
%傅里叶变换
PAf=fft2(double(PA));
PBf=fft2(double(PB));
PCf=fft2(double(PC));
% 获取幅度谱与相位谱
PAf_AM=abs(PAf);PBf_AM=abs(PBf);PCf_AM=abs(PCf);
PAf_ph=angle(PAf);PBf_ph=angle(PBf);PCf_ph=angle(PCf);
%改变图片的幅度与相位,重组图像
F1=PAf_AM.*cos(PBf_ph)+PAf_AM.*sin(PBf_ph).*1j;
F2=PAf_AM.*cos(PCf_ph)+PAf_AM.*sin(PCf_ph).*1j;
F3=PBf_AM.*cos(PAf_ph)+PBf_AM.*sin(PAf_ph).*1j;
F4=PBf_AM.*cos(PCf_ph)+PBf_AM.*sin(PCf_ph).*1j;
F5=PCf_AM.*cos(PAf_ph)+PCf_AM.*sin(PAf_ph).*1j;
F6=PCf_AM.*cos(PBf_ph)+PCf_AM.*sin(PBf_ph).*1j;
%傅里叶逆变换
P1=abs(ifft2(F1));P2=abs(ifft2(F2));P3=abs(ifft2(F3));
P4=abs(ifft2(F4));P5=abs(ifft2(F5));P6=abs(ifft2(F6));
%显示图像
figure(1)
subplot(2,3,1);imshow(PA0,[]);title('A原图-大头儿子');
subplot(2,3,2);imshow(PB0,[]);title('B原图-狗');
subplot(2,3,3);imshow(PC0,[]);title('C原图-苹果');
subplot(2,3,4);imshow(PA,[]);title('A灰度图-大头儿子');
subplot(2,3,5);imshow(PB,[]);title('B灰度图-狗');
subplot(2,3,6);imshow(PC,[]);title('C灰度图-苹果');
figure(2)
subplot(2,3,1);imshow(P1,[]);title('A幅度B相位');
subplot(2,3,2);imshow(P2,[]);title('A幅度C相位');
subplot(2,3,3);imshow(P3,[]);title('B幅度A相位');
subplot(2,3,4);imshow(P4,[]);title('B幅度C相位');
subplot(2,3,5);imshow(P5,[]);title('C幅度A相位');
subplot(2,3,6);imshow(P6,[]);title('C幅度B相位');

结果如下:

 

 (2)原图像信号如下:

代码如下:

clear all
P0=imread('郁金香.jpg');
PA=rgb2gray(P0);   %转换为灰度图
PAf=fft2(double(PA)/255);
[a,b]=size(PAf);
PAf_am=abs(PAf);
PAf_ph=angle(PAf);
PAf_am1=1000*ones(a,b);     %幅度变为1
PAf_ph1=ones(a,b);     %相位变为1
%重组图片
F1=PAf_am.*cos(PAf_ph1)+PAf_am.*sin(PAf_ph1).*1j;
F2=PAf_am1.*cos(PAf_ph)+PAf_am1.*sin(PAf_ph).*1j;
F3=PAf_am1.*cos(PAf_ph1)+PAf_am1.*sin(PAf_ph1).*1j;
P1=abs(ifft2(F1));P2=abs(ifft2(F2));P3=abs(ifft2(F3));
figure(1)
subplot(2,2,1);imshow(P0);title('原图');
subplot(2,2,2);imshow(PA);title('灰度图');
subplot(2,2,3);imshow(uint8(PAf_am),[]);title('幅度谱');
subplot(2,2,4);imshow(uint8(PAf_ph),[]);title('相位谱');
figure(2)
subplot(2,2,1);imshow(P1,[]);title('幅度不变,相位为1');
subplot(2,2,2);imshow(P2,[]);title('幅度为1,相位不变');
subplot(2,2,3);imshow(P3,[]);title('幅度为1,相位为1');

处理后的结果为:

分析:

使用Matlab读取三张不同的图像信号,对图像信号进行傅里叶变换后分别获取三张图像的幅度谱与相位谱,分别用一张图像的幅度谱与另外两张图像的相位谱重组,重构为新的图片。图像信号交换幅度谱与相位谱后,图像显示的内容为来源于相位谱的图像的轮廓。

经过交换图像信号的相位谱与幅度谱之后,反变换之后得到的图像内容与其相位谱对应的图像一致,表明相位谱决定图像结构。而图像中的整体灰度分布的特性,如明暗、灰度的变化趋势等则在比较大的程度上取决于对应的幅度谱。因为幅度谱反应了图像整体上多个方向的频率分量的相对强度。

二、语音信号

代码如下:

clear all
[x,fs]=audioread('我的录音.wav');
%sound(x,fs);
x=double(x)/3000;
N=length(x);
%傅里叶变换
Vf=fft(x,N);
[a,b]=size(Vf);
Vf_am=abs(Vf);
Vf_ph=angle(Vf);
Vf_am1=5*ones(a,b);    %幅度变为1
Vf_ph1=ones(a,b);     %相位变为1
%重组语音信号
FN1=double(Vf_am1.*exp(1j*Vf_ph));   %幅度改变   
FN2=double(Vf_am.*exp(1j*Vf_ph1));   %相位改变
FN3=double(Vf_am.*exp(-1j*Vf_ph));   %相位取共轭
FN4=double(Vf_am1.*exp(1j*Vf_ph1));   %幅度相位均改变
V1=real(ifft(FN1));V2=real(ifft(FN2)).*3000;V3=real(ifft(FN3)).*3000;V4=real(ifft(FN4)).*3000;
%播放改变后的语音信号
%sound(V1,fs);
%sound(V2,fs);
%sound(V3,fs);
%sound(V4,fs);
figure(1);
subplot(1,3,1);plot(x);xlabel('时间');ylabel('幅度');title('原信号波形');
subplot(1,3,2);plot(Vf_am);xlabel('频率');ylabel('幅度');title('原信号幅值谱');
subplot(1,3,3);plot(Vf_ph);xlabel('频率');ylabel('相位');title('原信号相位谱');
figure(2)
subplot(2,2,1);plot(V1);title('幅度为1,相位不变');
subplot(2,2,2);plot(V2);title('幅度不变,相位为1');
subplot(2,2,3);plot(V2);title('幅度不变,相位取共轭');
subplot(2,2,4);plot(V4);title('幅度相位均改变');

信号波形如下:

分析:

语音信号改变幅度谱与相位谱后,出现了下列变化:

①幅度谱值有1—5的过程中,语音信号的音量逐渐增大,清晰读逐渐增强;

②幅度谱无论为一定值,相位谱的值变为1后,听到的声音无法辨别;

③相位发转后,听到的声音无法辨别;

④幅度相位均改变后,无声音。

改变语音信号的幅度值后,语音信号的音量改变,语音信号的内容与原信号一致;改变语音信号的相位值后,语音信号的内容无法辨识,与原信号的内容差异很大。表明对于语音信号来说,幅度谱决定语音信号的音量大小,相位谱决定语音信号的内容。

  • 7
    点赞
  • 59
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值