本项目实现了一种混合图像(Hybrid Image)生成算法。混合图像是一种特殊的图像处理技术,通过将一张图像的低频成分(模糊图像)与另一张图像的高频成分(细节图像)相结合,创造出一种视觉效果:在近距离观看时看到一张图像,而在远距离或缩小观看时看到另一张图像。
本程序通过高斯滤波器将第一张图像(兔子)转换为低频图像,将第二张图像(猫)转换为高频图像,然后将两者相加生成混合图像。生成的混合图像具有以下特性:
- 近距离观看:主要看到猫的细节(高频部分)
- 远距离观看或缩小观看:主要看到兔子的轮廓(低频部分)
- 多尺度展示:程序还会生成不同尺度的下采样图像,展示不同观看距离下的视觉效果
- Python 3.x
- OpenCV (
cv2) - NumPy
- Matplotlib
pip install opencv-python numpy matplotlibgit clone https://github.com/ljk4/hybridImage.git
cd hybridImage
python main.py程序默认使用以下图像:
rabbit.png- 作为低频图像源(兔子)cat.png- 作为高频图像源(猫)
在 main.py 中可以调整以下参数:
cutoff_frequency:截止频率(默认值为5),控制高斯模糊的程度k_size:高斯核大小,根据截止频率自动计算
| 低频图像(兔子) | 高频图像(猫) |
|---|---|
程序将显示一个2×3的图像网格,包含以下内容:
- Low Image - 兔子的原始图像
- High Image - 猫的原始图像
- Hybrid - 生成的混合图像
- Down1 - 一级下采样的混合图像
- Down2 - 二级下采样的混合图像
- Down3 - 三级下采样的混合图像
注:上图为生成的混合图像,保存为 Figure_1.png
- 原始尺寸观看:在正常距离观看混合图像时,会主要看到猫的细节
- 缩小观看:将图像缩小(或远离屏幕)时,兔子的轮廓会逐渐显现
- 下采样图像:程序生成的下采样图像模拟了从不同距离观看的效果:
- Down1:稍微缩小,开始看到兔子的轮廓
- Down2:进一步缩小,兔子的形状更明显
- Down3:大幅缩小,几乎只看到兔子的轮廓
- Down4:只看到兔子的轮廓
hybridImage/
├── README.md # 项目说明文档
├── main.py # 主程序文件
├── rabbit.png # 低频图像源(兔子)
├── cat.png # 高频图像源(猫)
└── hybrid_image.png # 生成的混合图像