Hybrid Images
The Idea
This interesting hybrid-image idea was published in Siggraph'06 by people from MIT and U Glasgow,
Hybrid Images - A. Oliva, A. Torralba, P.G. Schyns, ACM Transactions on Graphics, vol. 25-3, pages 527-530, 2006.
The key is to combine the high frequency components of one image and the low frequency components of another image into a single image.
My Implementation
This synthesyzed hybrid image looks like one person from close up and looks like another person from five meters away.
The Procedure
- Prepare two images that are roughly aligned.
|
|
It's me |
|
- Generate the output hybrid-image using the following equation in Fourier domain,
where
G is a Gaussian Filter.
The Code
- To have a try, here is a simple Matlab implementation, hybridimg.m.
function hybridimg(ImgFile1, ImgFile2, ImgFileOut)
% Hybrid Image Generator
% Usage: hybridimg(<Img1 Filename>, <Img2 Filename>, <ImgOutput Filename>);
radius = 13; % Param of the Gaussian radius
I1 = imread(ImgFile1);
I2 = imread(ImgFile2);
I1_ = fftshift(fft2(double(I1)));
I2_ = fftshift(fft2(double(I2)));
[m n z] = size(I1);
h = fspecial('gaussian', [m n], radius);
h = h./max(max(h));
for colorI = 1:3
J_(:,:,colorI) = I1_(:,:,colorI).*(1-h) + I2_(:,:,colorI).*h;
end
J = uint8(real(ifft2(ifftshift(J_))));
imwrite(J, ImgFileOut);
end |
[Go to my Homepage]
Page last updated:
December 18, 2007 10:05 AM
|