no11=imread('no1.jpg');
no22=imread('no2.jpg');
bno1 = rgb2gray(no11);
bno2 = rgb2gray(no22);
subplot(2,2,1); imshow(bno1);
subplot(2,2,2); imshow(bno2);
mag1 = abs(fft2(bno1));
mag2 = abs(fft2(bno2));
phas1 = angle(fft2(bno1));
phas2 = angle(fft2(bno2));
C = imfuse(phas1,mag2);
D = imfuse(phas2,mag1);
A = ifft2(C);
B = ifft2(D);
subplot(2,2,3); imshow(A);
subplot(2,2,4); imshow(B);
this is my code and i tried to get the picture of
but the result is
How should I fix it??

댓글 수: 4

KSSV
KSSV 2019년 11월 18일
YOu need to have those images......you are reading the images and you get what you have.
DOHYUN JANG
DOHYUN JANG 2019년 11월 18일
the picture leftside is just an example, no need to use the same picture, so I used the poker card
Walter Roberson
Walter Roberson 2019년 11월 18일
Try imshow(A,[])
DOHYUN JANG
DOHYUN JANG 2019년 11월 18일
its same..

댓글을 달려면 로그인하십시오.

답변 (1개)

Subhadeep Koley
Subhadeep Koley 2019년 11월 21일

0 개 추천

Dohyun, I think you could take the image 'pixel magnitude' instead of the 'fourier magnitude' to get the output you want. Also, in my opinion it is important ro rescale() the cofficients prior fusing. Refer the the code below.
no11=rescale(double(imread('no1.jpg')));
no22=rescale(double(imread('no2.jpg')));
bno1 = rgb2gray(no11);
bno2 = rgb2gray(no22);
subplot(2,2,1); imshow(bno1); title('Img1');
subplot(2,2,2); imshow(bno2); title('Img2');
phas1 = rescale(angle(fft2(bno1)));
phas2 = rescale(angle(fft2(bno2)));
C = rescale(double(imfuse(phas1,no22,'blend','Scaling','joint')));
D = rescale(double(imfuse(phas2,no11,'blend','Scaling','joint')));
subplot(2,2,3); imshow(C); title('Img1 magnitude + Img2 phase');
subplot(2,2,4); imshow(D); title('Img2 magnitude + Img1 phase');
fourierPlots.png
Hope this helps!

질문:

2019년 11월 18일

답변:

2019년 11월 21일

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by