2013-07-30 39 views
-4

我是一名學習matlab的學生。如何切換兩個輸入圖像之間的幅度和相位信息?

============================================== ====================

[問題]兩個輸入圖像

負載兩個不同的輸入圖像之間

切換幅度和相位信息

並比較切換給定輸入的大小和相位信息的結果。

============================================== ====================

文獻1:互聯網用戶

文獻2:http://paeton.tistory.com/15

========= ================================================== =======

我的回答:

cm=imread('image1.bmp'); 
figure, imshow('image1.bmp'); 

cf=fftshift(fft2(cm)); 
g1=mat2gray(fspecial('gaussian',480,10)); 
cg1=cf.*g1; 
figure,fftshow(cg1,'log'); 
cgi1=ifft2(cg1); 
fftshow(cgi1,'abs'); 

cf=fftshift(fft2(cm)); 
g1=mat2gray(fspecial('gaussian',480,50)); 
cg1=cf.*g1; 
figure,fftshow(cg1,'log'); 
cgi1=ifft2(cg1); 
fftshow(cgi1,'abs'); 

================================================ ==================

我把答案提交給老師,但是錯了。

從已經兩個月了,但不是每個人都可以給出答案。

我不知道如何解決這個問題。

請幫幫我。相位和幅度切換源代碼,請。

+0

這看起來像一個開始。我建議網絡搜索術語「圖像相位幅度matlab」,也許閱讀概念背景。至於你的代碼,首先修改它,讓你閱讀2個不同的圖像,並確定他們各自的階段和大小 –

回答

5

哦......我爲你感到很難過。
你應該自己回答你的作業問題!

function I_must_understand_this_code_before_I_submit_my_homework() 

% read images 
im{1} = im2double(imread('image1.bmp')); 
im{2} = im2double(imread('image2.bmp')); 
assert(all(size(im{1}) == size(im{2})), 'images must have same size'); 

% FFT - separate magnitude and phase no fftshift 
mag = cell(1,2); 
phz = cell(1,2); 
for ii=1:2 
    I = zeros(size(im{ii})); 
    for c = 1:size(im{ii},3) % for color images 
     I(:,:,c) = fft2(im{ii}(:,:,c)); 
    end 
    mag{ii} = abs(I); % magnitude of fft 
    phz{ii} = angle(I); % phase 
end 

% combine (still in Fourier domain) 
C{1} = mag{1}.*exp(j * phz{2}); % mag of first with phase of second 
C{2} = mag{2}.*exp(j * phz{1}); % mag of second with phase of first 

% back to image domain 
comb = cell(1,2); 
for ii=1:2 
    for c = 1:size(C{ii},3) 
     comb{ii}(:,:,c) = ifft2(C{ii}(:,:,c)) 
    end 
    comb{ii} = abs(comb{ii}); % discard imaginary part 
end 
% dispaly 
figure('Name','I should forever be grateful to stack overflow!'); 
subplot(221); 
imshow(im{1}); title('image1'); 
subplot(222); 
imshow(im{2}); title('image2'); 
subplot(223); 
imshow(comb{1}); title('mag of 1 with phase of 2');  
subplot(224); 
imshow(comb{2}); title('mag of 2 with phase of 1');  
+0

非常感謝你。得到了很大的幫助。 – Elesis

+3

@Elesis請注意,stackoverflow(SO)通常是**而不是**爲您做功課。我爲你感到抱歉,所以我發佈了這個解決方案。爲了讓我對自己的工作感到滿意,如果你仔細研究這個解決方案,並且真正從中學習關於matlab和圖像處理的知識,我將不勝感激。你能解釋爲什麼組合圖像看起來是這樣的嗎? – Shai

+1

這太棒了,我幾乎無法忍受它。你是一位仁慈而仁慈的神,Shai :) –

相關問題