爱因斯坦还是玛丽莲梦露?

Author Avatar
Tr0y 6月 12, 2017 23:02:40 本文共 370 字
  • 文为知己者书
  • 在其它设备中阅读本文章

高中的时候在《科学 fans》上看到过爱因斯坦与玛丽莲梦露的混合照片, 觉得很有意思, 却不知道原理, 现在终于能实现了.

原理

找两张轮廓比较像的图片 A 和 B, 提取一张照片的低频信息, 另一张图片的高频信息, 结合这两个照片. 设置不同的频率门限, 组合照片. 组合的效果是, 放大看是 A, 缩小看是 B. 或者近视的人看到的是玛丽莲梦露, 没近视的人看到的是爱因斯坦.

代码

I1=imread('11.jpg');% 梦露
g1=rgb2gray(I1);
s=fftshift(fft2(g1));
[M,N]=size(s);
n1=fix(M/2);
n2=fix(N/2);

% 理想低通滤波器取 d0=10  (15,30)可变
d0=10;
for i=1:M
    for j=1:N
        d=sqrt((i-n1)^2+(j-n2)^2);
        if d<d0
            h=1;
        else
            h=0;
        end
        s(i,j)=h*s(i,j);
    end
end
s=ifftshift(s);
s=uint8(real(ifft2(s)));
figure(1);
imshow(s);


% 爱因斯坦图片处理
I2=imread('22.jpg');% 爱因斯坦
g2=rgb2gray(I2);
s2=fftshift(fft2(g2));
[M2,N2]=size(s2);
n12=fix(M2/2);
n22=fix(N2/2);

% 理想高通滤波器取 d02=5  (15,30)可变
d02=5;
for i=1:M2
    for j=1:N2
        d=sqrt((i-n12)^2+(j-n22)^2);
        if d<d02
            h=0;
        else
            h=1;
        end
        s2(i,j)=h*s2(i,j);
    end
end
s2=ifftshift(s2);
s2=uint8(real(ifft2(s2)));
figure(2);
imshow(s2);

% 图片合并
s3=imadd(s,s2);
figure(3);
imshow(s3);
imwrite(s3,'he.jpg','JPG')

效果

合成
当然, 你也可以

源氏
半藏
源藏

End

What do you think?

本文标题: 爱因斯坦还是玛丽莲梦露?
原始链接: http://www.tr0y.wang/2017/06/12/Combine2Pic/
发布时间: 2017.06.12-23:02
最后更新: 2018.11.03-20:32
版权声明: 本站文章均采用CC BY-NC-SA 4.0协议进行许可。转载请注明出处!