计算机视觉之混合图像(Hybrid)

这是之前做过的一个关于实现Hybrid Image的小项目,有错误及不足的地方还请批评指正~

怎么理解图像的高低频?

图像的低频部分可以理解为“轮廓”,比如人脸的脸型。

图像的高频部分可以理解为“细节”,比如人脸的皱纹、斑点等。

因此,我们常说,对图像做模糊处理后得到了图像的低频部分,对图像做锐化处理会让图像的高频信息更多。(看到这里,玩过摄影的朋友是不是想到了人像处理中常用的“高低频磨皮”~)

为什么放大缩小图片会看到不同的结果?

在了解了图像高低频的定义后,我们就不难理解为什么远近看混合图像会感觉效果不同。

当我们放大混合图像时,可以清楚地看到高频信息,于是人眼更倾向于识别这部分的信息。相反地,当我们缩小图片时,高频信息就不那么容易被观察到了,这时候我们我们就更倾向于识别低频的部分。

这里我做了一张哈利波特和伏地魔的混叠图像。可以看到,当图像放大时我们看到的是哈利波特,而当图片缩小时,我们会认为这张图片是描述伏地魔的。
在这里插入图片描述

如何实现混合图像的效果?

实现的总体思路很简单——将只有低频信息的图片和只有高频信息的图像叠加在一起。具体步骤如下:

  1. 取第一张图片:
    a. 准备好低频的滤波器(常用高斯模糊)
    b. 将图像转为矩阵,分层(如JPG图像会分成RGB三层)处理。其中,第一二列表示图像的横纵坐标,第三列存储不同的层的index(如JPG有0-2,PNG有0-3(其中第四层(3)存的是透明度));举个栗子,[;, ;, 0] 指的是R层的数据点
    c. 每一个维度的图片分别与高斯滤波器做卷积
  2. 取第二张图片:
    a. 准备好低频的滤波器(常用高斯模糊)
    b. 将图像转为矩阵
    c. 每一个维度的图片分别与高斯滤波器做卷积
    d. 用原图矩阵减去卷机后的矩阵,得到高频图矩阵
  3. 将两个处理后的图像矩阵相加,得到混合图像

如何用代码实现?

https://github.com/MinisculeDust/Hybrid-Image

发布了4 篇原创文章 · 获赞 1 · 访问量 158

猜你喜欢

转载自blog.csdn.net/SophisticatedWolf/article/details/104130116