%大家好!我正在學習GS相位復原演算法。
%GS演算法中,輸入是什么? 是一張影像的振幅,和影像的傅里葉域的振幅嗎?
close all;clear all;clc; %
%% simulate the complex object
INput= imresize((imread('cameraman.tif')),[256,256]);
objectAmplitude = double(INput);
objectPhase = double(imread('westconcordorthophoto.png'));
objectPhase = 2*pi*imresize(objectPhase,[256,256])./max(max(objectPhase));
object = objectAmplitude.*exp(1i.*objectPhase);%cameraman's amplitude and westcocordorthophoto's phase
%% 得到影像的振幅 和傅里葉平面的振幅
Amplitude_object=abs(object);%測量到的物體的空間域中的振幅
FT_object=fftshift(fft2(object));
FT_object_amp=abs(FT_object);%頻率域中的目標振幅 %需要平方嗎???
%% GS 演算法
[M , N]=size(object);
Phase=2*pi*rand(M , N);%產生隨機相位
for p=1:70;
fxy=Amplitude_object.*exp(1i*Phase); %振幅與相位相乘
Fuv=fftshift(fft2(fxy));
Fuv_phase=angle(Fuv); %只取傅里葉變換的相位部分。
Fuv=FT_object_amp.*exp(1i*Fuv_phase); %代入頻率域中的目標強度
fxy=ifft2(ifftshift(Fuv));
Phase=angle(fxy); %只取相位部分。
end
%% 輸出
figure,imshow(Amplitude_object,[]);title('輸入振幅');
figure,imshow(objectPhase,[]);title('輸入的相位');
figure,imshow(Phase,[]);title('retrival Phase 復原的相位');
uj5u.com熱心網友回復:
程式沒能成功復原出相位。是哪出了問題?uj5u.com熱心網友回復:
@ethel2009uj5u.com熱心網友回復:
請問你這個相位恢復出來了嗎?急求uj5u.com熱心網友回復:
相位恢復出來了嗎?uj5u.com熱心網友回復:
我剛開始學,這個演算法的輸入怎么表示呢?轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/16561.html
標籤:機器視覺
上一篇:白日做夢還不錯
