編程分析幅度譜和相位譜在圖像信號、語音信號中的作用。
一、圖像信號
(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後,聽到的聲音無法辨別;
③相位發轉後,聽到的聲音無法辨別;
④幅度相位均改變後,無聲音。
改變語音信號的幅度值後,語音信號的音量改變,語音信號的內容與原信號一致;改變語音信號的相位值後,語音信號的內容無法辨識,與原信號的內容差異很大。表明對於語音信號來說,幅度譜決定語音信號的音量大小,相位譜決定語音信號的內容。