2017-09-17 126 views
0

我有this, matrix of complex numbers表示的圖像(模擬輸出) 我要篩選的相位這個圖像使用低通和高通濾波器低和高通濾波的相位

我的代碼(低通濾波器只):

%% Calculate the phase 
    field_phase = angle(field); 

%% Low-pass filter 
    % Gaussian filter 
    fieldPhase_Filtered = imgaussfilt(field_phase, 2); 

輸出:

imagesc(fieldPhase_Filtered); colorbar; 

1)我的步驟是否正確?

2)在計算相位之前是否需要執行傅里葉變換?they did here

3)如果我有超過矩陣,我需要在計算相位和應用濾波器之前將它們歸一化嗎?

回答

0

如果是圖像的傅立葉變換,可以使用ifft2將其變換回來。

imagesc(log(abs(fftshift(ifft2(fftshift(field)))))) 

這看起來很漂亮,但我不明白這個圖像有一個階段。一個傅立葉變換階段,你可以找到非常容易使用angle

imagesc(angle(field)) 

正如你可以看到他們要麼是圓周率,-pi或0

[編輯]

我看你要分析激光穿過光纖的模擬數據?你想從你的圖片或其他東西中找到模式索引嗎? https://www.rp-photonics.com/lp_modes.html

+0

請問您能否詳細說明您的答案?您的意思是**角度()**與FT的結果好於**角度()**沒有FT?怎麼樣應用過濾器?在使用過濾器之前,我需要在階段再次執行FT嗎?或我以前的代碼是正確的? – Shdotcom

+0

'angle'給出複數的角度。在傅里葉變換中,這等於該頻率下的波的相位。我不明白你的意思是「沒有FT的角度()」。複數的含義是什麼?爲什麼它很複雜? – Gelliant

+0

關於您以前的問題**「您是否想從圖像或其他內容中找到模式索引?」**。不,我不想找到模式索引,不幸的是我無法在這裏分享所有的細節。我不明白你的意思是「angle()without FT」** 我的意思是在angle()之前沒有執行fftshift(fft2(field));使用傅立葉變換(FT)變成這樣:** field_ft = fftshift(fft2(field)); field_phase = angle(field_ft); – Shdotcom