MATLAB信号处理——分解信号,双谱重构
发布日期:2021-05-07 14:38:07 浏览次数:25 分类:原创文章

本文共 3639 字,大约阅读时间需要 12 分钟。

 

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

一、图像信号

(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 allP0=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);     %幅度变为1PAf_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);    %幅度变为1Vf_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后,听到的声音无法辨别;

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

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

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

上一篇:LeetCode每日一题(1486. 数组异或操作)
下一篇:MATLAB创建特殊矩阵

发表评论

最新留言

留言是一种美德,欢迎回访!
[***.207.175.100]2025年04月15日 18时41分21秒