
这个程序主要用于多聚焦图像融合。
在实际拍摄中,相机往往只能对某一个距离范围进行清晰对焦。例如:
一张照片中,前面的物体清楚,后面的物体模糊;
另一张照片中,后面的物体清楚,前面的物体模糊。
这个程序可以把两张不同对焦位置的图像进行融合,尽量保留两张图中各自比较清晰的部分,最终得到一张整体更加清晰的图像。
本程序自带的示例就是这种情况:
first.jpg 中,后方的大钟比较清晰;
second.jpg 中,前方的小钟比较清晰;
程序融合后得到 LaResult3.bmp,前后两个钟的清晰信息都被尽量保留下来。
多聚焦照片融合
显微图像融合
工业检测中不同焦平面的图像合成
图像融合算法的学习、实验和教学演示
程序采用的是拉普拉斯金字塔图像融合方法。
可以把它简单理解成:
先把图像按不同层次拆开 → 在每一层挑选更清晰的信息 → 再把这些信息重新组合成一张图。
整体过程可以分成四步。
程序先对两张输入图像进行逐层模糊和缩小。
代码中设置:
也就是把图像分成多个尺度进行处理。
这样做的目的,是让程序不仅观察很小的细节,也能够观察较大范围的图像信息。
在高斯金字塔的基础上,程序进一步计算每一层之间的差异,形成拉普拉斯金字塔。
拉普拉斯金字塔中的信息可以简单理解为:
图像在不同尺度下的边缘、纹理和细节信息。
清晰区域通常会包含更多明显的边缘和细节,因此可以利用这些信息判断某个区域应该选择哪一张原图。
程序分别比较两张图像在各层中的特征。
对于金字塔顶层,程序主要通过图像的梯度变化进行比较。
对于其他层,程序通过局部区域的拉普拉斯响应强弱进行比较。
简单来说:
哪张图在当前位置包含的细节更多,就优先保留哪张图的信息。
因此:
前景在第二张图中更清晰时,就更多选择第二张图的信息;
背景在第一张图中更清晰时,就更多选择第一张图的信息。
完成各层信息选择后,程序再从金字塔最上层开始逐层放大和恢复。
最终将不同尺度上的融合信息重新组合,得到完整的融合图像。
整个过程可以概括为:
两张原图 → 多尺度分解 → 清晰信息选择 → 多尺度重建 → 融合图像
直接对两张图片做平均容易造成整体变模糊。
本程序会在不同位置选择更有细节的一张图,因此更适合多聚焦图像融合。
程序不是只比较单个像素,而是通过金字塔结构观察不同尺度下的图像信息。
这样能够同时考虑局部细节和较大范围的图像特征。
拉普拉斯金字塔本身比较关注图像中的变化、边缘和细节,因此融合后能够较好地保留清晰区域的纹理信息。
程序结构比较直观,主要包含:
高斯金字塔构建
拉普拉斯金字塔分解
融合规则
图像重建
比较适合用于理解图像融合和多尺度处理的基本思想。
这个程序的主要功能是:
读取两张图像,对其进行拉普拉斯金字塔融合,并输出融合结果。
程序默认读取:
因此,需要将两张待融合图片放在程序所在目录,并命名为:
first.jpg
second.jpg
两张图片最好具有相同的尺寸,并且图像中的物体 位置基本对应。
在 MATLAB 中打开:
然后直接运行程序。
程序会依次显示:
第一张输入图像;
第二张输入图像;
最终融合图像。
程序最后执行:
因此,融合后的图像会保存为:
纯文本
同时 MATLAB 窗口中也会显示最终融合结果。
本程序自带两张钟表图片。
第一张图片中:
后方的大钟比较清晰;
前方的小钟比较模糊。
第二张图片中:
前方的小钟比较清晰;
后方的大钟比较模糊。
程序分别提取两张图片中较清晰区域的细节,再进行重新组合。
最终融合结果中:
前面的小钟得到较清晰的显示;
后面的大钟也保留了较清晰的数字、指针和纹理。
这就是多聚焦图像融合的基本效果。
两张输入图片尺寸应保持一致。
两张图像中的场景和物体 位置应基本一致。
如果两张图片发生明显移动,直接融合可能出现重影或错位。
程序默认使用 4 层金字塔。
对于一般示例可以直接使用,不需要修改。
程序依赖 MATLAB 的图像处理相关函数。
例如 imfilter、im2col 等。
输入文件名发生变化时,需要修改程序开头的 imread 路径。
这个程序利用拉普拉斯金字塔,把两张不同焦点的图片分解到多个尺度,在每一层选择更加清晰的图像信息,最后重新构建出一张融合图像。
对于初学者,可以把整个程序理解成一句话:
把两张照片中各自清楚的部分挑出来,再组合成一张整体更清楚的照片。