Study-基于小波技术进行图像融合

简介: Study-基于小波技术进行图像融合

案例背景


  图像融合最早是以数据融合理论为基础的,通过计算像素算术平均的方式得到合成图像。该方法忽略了像素间的相互关系,往往会产生融合图像的对比度差、可视化效果不理想等问题。因此,为了提高目标检测的分辨率,抑制不同传感器的检测噪声,本案例选择了--种基于小波变换的图像数据融合方法,首先通过小波变换将图像分解到高频、低频,然后分别进行融合处理,最后再逆变换到图像矩阵"。


在融合过程中,为了尽可能保持多源图像的特征,在小波分解的高频域内,选择图像邻域平均绝对值较大的系数作为融合小波重要系数;在小波分解的低频域内,选择对多源图像的低频系数进行加权平均作为融合小波近似系数。在反变换过程中,利用重要小波系数和近似小波系数作为输入进行小波反变换。在融合图像输出后,对其做进一步的处理。实验结果表明,基于小波变换的图像数据融合方法运行效率高,具有良好的融合效果,并可用于广泛的研究领域,具有- -定的使用价值。


  根据融合的作用对象,图像融合一般可以分为3个层次:像素级图像融合、特征级图像融合和决策级图像融合。其中,像素级融合是作用于图像像素点最底层的融合,本章所研究的图像融合是像素级图像融合口。



基础原理


  对图像进行小波变换的原理就是通过低通滤波器和高通滤波器对图像进行卷积滤波,再进行二取- -的下抽样。因此,图像通过一层小波变换可以被分解为1个低频子带和3个高频子带。其中,低频子带LL1通过对图像水平方向和垂直方向均进行低通滤波得到;高频子带HL1通过对图像水平方向高通滤波和垂直方向低通滤波得到;高频子带LH通过对图像水平方向低通滤波和垂直方向高通滤波得到;高频子带HH通过对图像水平方向高通滤波和垂直方向高通滤波得到。各子带的分辨率为原始图像的1/2。


同理,对图像进行二层 小波变换时只对低频子带LL进行,可以将LL1子带分解为LL2、LH2、HL2和HH2,各子带的分辨率为原始图像的1/4。以此类推可得到三层及更高层的小波变换结果。所以,进行一层小波变换得到4个子带,进行二层小波变换得到7个子带,进行x层分解就得到3●x+1个子带。如下图所示为三层小波变换后的系数分布。

image.png



程序实现


  本案例采用二维小波分解、融合、重建的操作流程进行程序实现,为增加实验效果的对比性,采用MATLAB的GUI框架建立软件主界面,关联相关功能函数实现小波图像融合处理。本节将介绍程序实现过程中的核心代码。


按钮1:载入图像1


function pushbutton1_Callback(hObject, eventdata, handles)
% hObject    handle to pushbutton1 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
clc; 
axes(handles.axes1); cla reset; box on; set(gca, 'XTickLabel', '', 'YTickLabel', '');
axes(handles.axes2); cla reset; box on; set(gca, 'XTickLabel', '', 'YTickLabel', '');
axes(handles.axes3); cla reset; box on; set(gca, 'XTickLabel', '', 'YTickLabel', '');
handles.file1 = [];
handles.file2 = [];
handles.result = [];
[filename, pathname] = uigetfile({'*.jpg;*.tif;*.png;*.gif', 'All Image Files';...
          '*.*', 'All Files' }, '选择图像1', ...
          fullfile(pwd, 'images\\实验图像1\\a.tif'));
if isequal(filename, 0)
    return;
end
handles.file1 = fullfile(pathname, filename);
guidata(hObject, handles);
Img1 = imread(fullfile(pathname, filename));
axes(handles.axes1); 
imshow(Img1, []);


按钮2:载入图像2


function pushbutton2_Callback(hObject, eventdata, handles)
% hObject    handle to pushbutton2 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
[filename, pathname] = uigetfile({'*.jpg;*.tif;*.png;*.gif', 'All Image Files';...
          '*.*', 'All Files' }, '选择图像2', ...
          fullfile(pwd, 'images\\实验图像1\\b.tif'));
if isequal(filename, 0)
    return;
end
handles.file2 = fullfile(pathname, filename);
guidata(hObject, handles);
Img2 = imread(fullfile(pathname, filename));
axes(handles.axes2);
imshow(Img2, []);


按钮3:图像小波融合


function pushbutton3_Callback(hObject, eventdata, handles)
% hObject    handle to pushbutton3 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
if isempty(handles.file1)
    msgbox('请载入图像1!', '提示信息', 'modal');
    return;
end
if isempty(handles.file2)
    msgbox('请载入图像2!', '提示信息', 'modal');
    return;
end
[imA, map1] = imread(handles.file1);
[imB, map2] = imread(handles.file2);
M1 = double(imA) / 256;
M2 = double(imB) / 256;
zt = 2;
wtype = 'haar';
[c0, s0] = Wave_Decompose(M1, zt, wtype);
[c1, s1] = Wave_Decompose(M2, zt, wtype);
Coef_Fusion = Fuse_Process(c0, c1, s0, s1);
Y = Wave_Reconstruct(Coef_Fusion, s0, wtype);
handles.result = im2uint8(mat2gray(Y));
guidata(hObject, handles);
msgbox('小波融合处理完毕!', '提示信息', 'modal');


按钮4:图像显示


if isempty(handles.result)
    msgbox('请进行填充处理!', '提示信息', 'modal');
    return;
end
axes(handles.axes3); 
imshow(handles.result, []);


子函数:Wave_Reconstruct


function Y = Wave_Reconstruct(Coef_Fusion, s, wtype)
if nargin < 3
    wtype = 'haar';
end
Y = waverec2(Coef_Fusion, s, wtype);


子函数:Wave_Decompose


function [c, s] = Wave_Decompose(M, zt, wtype)
if nargin < 3
    wtype = 'haar';
end
if nargin < 2
    zt = 2;
end
[c, s] = wavedec2(M, zt, wtype);


操作界面展示:


image.png


通过融合结果可以看出基于小波变换的图像融合比直接进行图像融合的效果要好很多。基于小波变换的融合图像弥补了两幅原图不同的缺陷,得到了完整的清晰图像。采用小波分解融合的方法不会产生明显的信息丢失现象,而直接进行融合所得的图像灰度值改变与原图不同。


  本案例通过小波变换将原图分解成-系列具有不同空间分辨率和频域特性的子图像,反映了原始图像的局部特征变化,在多个分解层、多个频带上进行融合从而得到较好的融合效果。通过图像融合,我们可以看到比较清晰的图像,以及互补原图的缺点。



相关文章
|
5月前
|
编解码 算法
基于小波变化图像融合
基于小波变化图像融合
43 1
|
人工智能 算法 图形学
山大SIGGRAPH 2023 最佳论文得主分享:点云法向估计及保特征重建
山大SIGGRAPH 2023 最佳论文得主分享:点云法向估计及保特征重建
249 0
|
8月前
|
算法 数据挖掘 计算机视觉
OpenCV中应用尺度不变特征变换SIFT算法讲解及实战(附源码)
OpenCV中应用尺度不变特征变换SIFT算法讲解及实战(附源码)
96 0
|
存储 机器学习/深度学习 传感器
【图像压缩】基于小波结合spiht实现图像压缩附matlab代码
【图像压缩】基于小波结合spiht实现图像压缩附matlab代码
|
机器学习/深度学习 算法
m基于小波神经网络和HOG特征提取的手写汉字识别算法matlab仿真
m基于小波神经网络和HOG特征提取的手写汉字识别算法matlab仿真
241 0
m基于小波神经网络和HOG特征提取的手写汉字识别算法matlab仿真
|
机器学习/深度学习 自然语言处理 算法
7 Papers & Radios | 首篇扩散模型综述;没有3D卷积的3D重建方法
7 Papers & Radios | 首篇扩散模型综述;没有3D卷积的3D重建方法
142 0
|
机器学习/深度学习 人工智能 算法
R2AU-Net: 基于循环残差注意力和半监督学习范式的道路裂缝分割算法
R2AU-Net: 基于循环残差注意力和半监督学习范式的道路裂缝分割算法
228 0
|
人工智能 算法 自动驾驶
PSA-Det3D:探究3D目标检测小尺寸解决方案
作者提出了PSA-Det3D网络提升3D小尺寸目标检测精度,包含PSA (Pillar Set Abstraction),FPC (Foreground Point Compensation)和point-based detection模块。PSA模块是基于SA (Set Abstraction)设计,通过pillar query operation扩大感受野,有效聚合点特征。FPC模块利用前景点分割和候选框生成模块,定位更多的遮挡物体。前景点和预测的中心点被整合在一起,用以预测最终的检测结果。在KITTI 3D检测数据集中,PSA-Det3D取得了较好的性能,尤其是对于小尺寸目标。
PSA-Det3D:探究3D目标检测小尺寸解决方案
|
传感器 机器学习/深度学习 存储
Simple-BEV: 多传感器BEV感知真正重要的是什么?(斯坦福大学最新)
不依赖高密度激光雷达的无人驾驶车辆,构建3D感知系统是一个很关键的问题,因为与camera和其他传感器相比,激光雷达系统的成本较高。最近的工作开发了多种仅camera的方法,其中特征可从多camera图像“提升”到2D ground plane,从而生成3D空间的“鸟瞰图”(BEV)特征表示。这一系列工作产生了多种新颖的“提升”方法,但训练设置中的其他细节同时也发生了变化,这使得大家不清楚什么是最佳方法。
Simple-BEV: 多传感器BEV感知真正重要的是什么?(斯坦福大学最新)
|
算法
基于小波域的隐马尔可夫树模型的图像去噪方法的matlab实现代码
基于小波域的隐马尔可夫树模型的图像去噪方法的matlab实现代码
216 0
基于小波域的隐马尔可夫树模型的图像去噪方法的matlab实现代码