根据对图像信息处理运用方式不同,可将图像融合分为三个层次上的研究,即像素级,特征级和决策级。其中像素级融合位于最低层,可以看作是对信息仅作特征提取并直接使用。也正是得益于其对信息最大程度上的保留,使其在准确性和鲁棒性上优于其他两级。相比之下,像素级融合获取的细节信息更丰富,是最常用的融合方式。因此,它同样是图像融合领域研究的热点。与此同时,由于其需要的配准精度高,必须达到像素级别。所以像素级图像融合技术对设备要求较高,而且融合过程耗时,不易于实时处理。像素级融合一般分为四步完成:预处理、变换、合成和逆变换。
像素级图像融合主要包括:
1 基于非多尺度变换的图像融合方法
1)平均与加权平均方法
加权平均方法将原图像对应像素的灰度值进行加权平均,生成新的图像,它是最直接的融合方法。其中平均方法是加权平均的特例。使用平均方法进行图像融合,提高了融合图像的信噪比,但削弱了图像的对比度,尤其对于只出现在其中一幅图像上的有用信号。
2)像素灰度值选大(或小)的图像融合方法
假设参加融合的两幅原图像分别为A、B,图像大小分别为M*N,融合图像为F,则针对原图像A、B的像素灰度值选大(或小)图像融合方法可表示为
其中:m、n分别为图像中像素的行号和列号。在融合处理时,比较原图像A、B中对应位置(m、n)处像素灰度值的大小,以其中灰度值大(或小)的像素作为融合图像F在位置(m、n)处的像素。这种融合方法只是简单地选择原图像中灰度值大(或小)的像素作为融合后的像素,对待融合后的像素进行灰度增强(或减弱),因此该方法的实用场合非常有限。
3)基于PCA的图像融合方法
PCA图像融合方法首先用三个或以上波段数据求得图像间的相关系数矩阵,由相关系数矩阵计算特征值和特征向量,再求得各主分量图像;然后将高空间分辨率图像数据进行对比度拉伸,使之与第一主分量图像数据集具有相同的均值和方差;最后拉伸后的高空间分辨率图像代替第一主分量,将它与其他主分量经PCA逆变换得到融合图像。
PCA融合算法的优点在于它适用于多光谱图像的所有波段;不足之处是在PCA融合算法中只用高分辨率图像来简单替换低分辨率图像的第一主成分,故会损失低分辨率图像第一主成分中的一些反应光谱特性的信息,不考虑图像各波段的特点是PCA融合算法的致命缺点。
4)基于调制的图像融合方法
借助通信技术的思想,调制技术在图像融合领域也得到了一定的应用,并在某些方面具有较好的效果。用于图像融合上的调制手段一般使用于两幅图像的融合处理,具体操作一般是将一幅图像进行归一化处理;然后将归一化的结果与另一图像相乘;最后重新量化后进行显示。用于图像融合上的调制技术一般可分为对比度调制技术和灰度调制技术。、
5)非线性方法
将配准后的原图像分为低通和高通两部分,自适应地修改每一部分,然后再把他们融合成符合图像。
6)逻辑滤波方法
逻辑滤波方法是一种利用逻辑运算将两个像素的数据合成为一个像素的直观方法,例如当两个像素的值都大于某一阈值时,“与”滤波器输出为“1”(为“真”)。图像通过“与”滤波器而获得特征可认为是图像中十分显著的成分。
7)颜色空间融合方法
颜色空间融合法的原理是利用图像数据表示成不同的颜色通道。简单的做法是把来自不同传感器的每幅原图像分别映射到一个专门的颜色通道,合并这些通道得到-一幅假彩色融合图像。该类方法的关键是如何使产生的融合图像更符合人眼视觉特性及获得更多有用信息。Toet等人将前视红外图像和微光夜视图像通过非线性处理映射到一个彩色空间中,增强了图像的可视性。文献研究表明,通过彩色映射进行可见光和红外图像的融合,能够提高融合结果的信息量,有助于提高检测性能。
8)最优化方法
最优化方法为场景建立一个先验模型,把融合任务表达成一个优化问题,包括贝叶斯最优化方法和马尔可夫随机场方法。贝叶斯最优化方法的目标是找到使先验概率最大的融合图像。文献提出了一个简单的自适应算法估计传感器的特性与传感器之间的关系,以进行传感器图像的融合;另一文献提出了基于图像信息模型的概率图像融合方法。马尔可夫随机场方法把融合任务表示成适当的代价函数,该函数反映了融合的目标,模拟退火算法被用来搜索全局最优解。
9)人工神经网络方法
受生物界多传感器融合的启发,人工神经网络也被应用于图像融合技术中。神经网络的输入向量经过一个非线性变换可得到一个输出向量,这样的变换能够产生从输入数据到输出数据的映射模型,从而使神经网络能够把多个传感器数据变换为一个数据来表示。由此可见,神经网络以其特有的并行性和学习方式,提供了一种完全不同的数据融合方法。然而,要将神经网络方法应用到实际的融合系统中,无论是网络结构设计还是算法规则方面,都有许多基础工作有待解决,如网络模型、;网络的层次和每一层的节点数、网络学习策略、神经网络方法与传统的分类方法的关系和综合应用等。目前应用于图像融合有三种网络: a)双模态神经元网络。b)多层感知器。c) 脉冲耦合神经网络(PCNN)。Broussard等 人借助该网络实现图像融合来提高目标的识别率,并证实了PCNN用于图像融合的可行性。
2、基于多尺度变换的图像融合方法
基于多尺度变换的图像融合方法是像素级图像融合方法研究中的一类重要方法。基于多尺度变换的融合方法的主要步骤[5]为:对原图像分别进行多尺度分解,得到变换域的一系列子图像;采用一定的融合规则,提取变换域中每个尺度上最有效的特征,得到复合的多尺度表示;对复合的多尺度表示进行多尺度逆变换,得到融合后的图像。
1)基于金字塔变换的图像融合方法
Burt最早提出基于拉普拉斯金字塔变换的融合方法。该方法使用拉普拉斯金字塔和基于像素最大值的融合规则进行人眼立体视觉的双目融合,实际上该方法是选取了局部亮度差异较大的点。这一过程粗略地模拟了人眼双目观察事物的过程。用拉普拉斯金字塔得到的融合图像不能很好地满足人类的视觉心理。在文献中,比率低通金字塔和最大值原则被用于可见光和红外图像的融合。比率低通金字塔虽然符合人眼的视觉特征,但由于噪声的局部对比度一般都较大,基于比率低通金字塔的融合算法对噪声比较敏感,且不稳定。为;了解决这一问题,Burt等人提出了基于梯度金字塔变换的融合方法,该方法采用了匹配与显著性测度的融合规则。R ichard等人给出了以上三种金字塔用于图像融合的定性和定量的结果。另外, Baron和Thomas提出一种基于纹理单元的金字塔算法它在每层图像中采用24个纹理滤波器以获取不同方向的细节信息。与梯度金字塔算法相比,它能够提取出更多的细节信息。文献提出了一种基于形态学金字塔变换的图像融合方法。
基于金字塔变换融合方法的优点是可以在不同空间分辨率上有针对性地突出各图像的重要特征和细节信息,相对于简单图像融合方法,融合效果有明显的改善。其缺点是图像的金字塔分解均是图像的冗余分解,即分解后各层间数据有冗余;同时在图像融合中高频信息损失大,在金字塔重建时可能出现模糊、不稳点现象;图像的拉普拉斯、比率低通、形态学金字塔、分解均无方向性。
2)基于小波变换的图像融合方法
小波变换技术具有许多其他时(空)频域所不具有的优良,特性,如方向选择性、正交性、可变的时频域分辨率、可调整的局部支持以及分析数据量小等。这些优良特性使小波变换成为图像融合的一-种强有力的工具。而且,小波变换的多尺度变换特性更加符合人类的视觉机制,与计算机视觉中由粗到细的认知过程更加相似,更适于图像融合。
基于小波变换的图像融合方法的基本步骤为:对每一幅原图像分别进行小波变换,建立图像的小波金字塔分解;对各分解层从高到低分别进行融合处理,各分解层上的不同频率分量可采用不同的融合规则进行融合处理,最终得到融合后的小波金字塔;对融合后所得的小波金字塔进行小波逆变换,所得重构图像即为融合图像。下图给出了基于小波变换的图像融合方法的结构示意图。
目前,基于小波变换的图像融合方法的研究主要集中在以下几个方面:
a)融合规则及融合算子的选择。在小波图像融合过程中,融合规则及融合算子的选择对融合质量至关重要,这直接影响到图像质量的好坏。针对不同类型和特征的图像,目前已经提出了大量的高、低频融合规则。高频融合规则主要包括简单和加权平均准则、取系数绝对值较大准则、基于小波模极大值的融合准则、基于区域能量的融合准则、局部方差准则、局部平均梯度准则、局部均方差准则、消除高频噪声法等。通常情况下,低频部分融合一般采 用平均的线性融合规则,但在许多情况下,这种取平均的线性融合方法会影响最终的融合效果。文献(一种基于小波变换的图像融合算法)提出了平均与选择相结合的低频融合规则。该方法考虑了两幅图像的相关性,在一一定程度上符合人眼对较显著的点比较敏感这一-事实,融合效果相对平均法有一定的改善,但无显著的提高。燕文浩等人提出了基于Canny边缘检测算子的低频融合规则,有效地改善了融合图像边缘细节的准确度,提高了融合图像的分辨率。
b)小波分解与重构的形式。LiMing等人将离散小波变换应用于遥感图像融合中,取得了很好的融合效果。在进行小波变换时,由于采用了行列降采样,图像的大小发生了变化,每层图像的大小均为上一-层图像的1/4。 这种变化在图像融合处理过程中有时是不利的,特别是在图像配准精度不高的情况下,容易产生分块效应。为此,Zhang Zhong和Blum提出了基于小波框架的图像融合算法,这种算法经变换后的图像大小不发生变化,克服了上述缺点,但计算量相对较大。多小波是近几年刚刚发展起来的小波理论的-一个新的组成部分,它提供了更加广泛的小波基选择范围,能够找到具有更好性质的优于二进制小波的小波函数。Wang HaiHhuf提出了基于多小波变换的图像融合方法,使图像的融合效果得到了进一b步改善。 1994年Svelens不依赖于傅里叶,提出了一种基于提升机制的小波变换新方法。基于提升机制方法能够实现小波变换的快速算法,可以提高融合速度,节省内存和存储空间,所以基于提升机制的小波变换开始被应用于许多图像融合之中。根据小波分解与重构的形式不同,基于小波的图像融合方法大致可分为塔形小波变换(PDWT)、塔形小波帧变换(PDWFT)、树状小波帧变换(TDWFT)、小波框架、多小波变换、基于提升机制小波变换( FILWT)的融合方法。
c)小波融合方法与其他融合方法的结合。目前,针对某类特定的融合原图像和某种特殊的融合目的,出现了许多小波方法与其他融合方法相结合的算法。唐国良等人提出了基于IHS变换和小波变换的昼夜彩色图像融合算法; Zhang Yun等人将HIS与小波技术结合起来用于遥感图像融合中,明显降低了融合结果中的颜色扭曲现象;蒋年德等人提出–种新的基于主分量变换与小波变换的图像融合方法,该方法使融合图像在较好地保留光谱信息的同时,增强了空间细节信息。
基于小波变换的图像融合方法进一步的研究方向主要包括:新的融合量测指标;新的高、低频融合规则;分解层数对融合图像的影响及层数优化;新的小波分解与重构方法;小波融合方法与其他融合方法新的结合。
3)基于Ridgelet变换的图像融合方法
当小波变换推广到二维或更高维时,由一维小波张成的可分离小波只有有限的方向,不能最优表示含线或者面奇异的高维函数。因此,小波只能反映信号的点奇异性(零维),而对诸如二维图像中的边缘以及线状特征等线、面奇异性(一维或更高维),小波则难以表达其特征。针对小波变换的不足,Candes提出了一种适合分析一维或更高维奇异性的脊波( Ridgelet)变换。脊波变换用于图像融合的意义在于: a)脊波变换通过Radon变换把图像中线特征转换成点特征,然后通过小波变换将点的奇异性检测出来。其处理过程克服了小波仅仅能反映“过”边缘的特征,而无法表达“沿”边缘的特征。b)脊波变换继承了小波变换的空域和频域局部特性。e)脊波变换具有很强的方向性,可以有效地表示信号中具有方向性的奇异性特征,如图像的线性轮廓等,为融合图像提供更多的信息。d)脊波变换较小波变换具有更好的稀疏性,克服了小波变换中传播重要特征在多个尺度上的缺点,变换后能量更加集中,所以在融合过程中抑制噪声的能力也比小波变换更强。因此将脊波变换引入图像融合,能够更好地提取原始图像的特征,为融合图像提供更多的信息。文献(R idgelet: theory and app lications)提出了一种基于脊波变换的SAR与可见光图像融合方法。该方法在保留合成孔径雷达SAR与可见光图像重要信息、抑制噪声能力方面均优于小波变换。
由于脊波理论建立时间不长,还有许多值得研究的课题,例如,如何能够减轻甚至消除在重构图像过程中出现的轻微划痕、如何简化脊波的复杂计算、寻求快速算法等。
4)基于Curvelet变换的图像融合方法
Curvelet变换是由Candes提 出的Ridgelet变换演变而来的。Ridgelet变换对含有直线奇异的多变量函数有很好的逼近效果,能稀疏地表示包含直线边缘的分片平滑图像。但是对于含有曲线奇异的图像, Ridgelet变换的逼近性能只与小波变换相当。由于多尺度Ridgelet分析冗余度很大,Candes和Donoho于1999年提出了曲线波( Curveleb)变换理论,即第一代Cuvelet变换。其基本思想是:首先对图像进行子带分解;然后对不同尺度的子带图像采用不同大小的分块;最后对每个块进行Ridgelet分析。由于Curvelt结合了Ridgelet变换的各向异性和小波变换的多尺度特点,它的出现对于二维信号分析具有里程碑式的意义,也开始被应用于图像融合。Choi等人首次将Curvelet应用于多光谱图像和全景图像的融合,结果具有更丰富的空间和光谱信息以及更佳的视觉效果。文献(一种基于 Curvelet变换多传感器图像融合算法)提出了一种基于Cuvelet变换 多传感器图像融合算法,该方法相比传统的基于小波变换的图像融合算法。能够有效避免人为效应或高频噪声的引入,得到具有更好视觉效果和更优量化指标的融合图像。
由于第一代Curvelet变换的数字实现比较复杂,需要子带分解、平滑分块、正规化和Ridgelet分析等系列步骤,且Curvelet金字塔的分解也带来了巨大的数据冗余量,Candes等人又提出了实现更简单、更便于理解的快速Cuvelet变 换算法,即第二代Curvelet变换。第二代Cuvelet与第一代在构造上已经完全不同:第一代的构造思想是通过足够小的分块将曲线近似到每个分块中的直线来看待,然后利用局部的Ridgelet分析其特性;第二代Curvelet与Ridgelet理论并没有关系,实现过程也无须用到Ridgelet两者之间的相同点仅在于紧支撑、框架等抽象的数学意义。文献(基于二代 Cu rvelet变换的图像融合研究)提出了一种基于第二代Curvelet变换的图像融合方法,并应用于多聚焦图像的融合。该方法可以更好地提取原始图像的特征,为融合提供更多的信息,相比第一代Curvelet变换更易于实现。
5)后面还有NSCT、NSST、稀疏表示、CNN等方法
function varargout = gui(varargin)
% GUI M-file for gui.fig
% GUI, by itself, creates a new GUI or raises the existing
% singleton*.
%
% H = GUI returns the handle to a new GUI or the handle to
% the existing singleton*.
%
% GUI(‘CALLBACK’,hObject,eventData,handles,…) calls the local
% function named CALLBACK in GUI.M with the given input arguments.
%
% GUI(‘Property’,‘Value’,…) creates a new GUI or raises the
% existing singleton*. Starting from the left, property value pairs are
% applied to the GUI before gui_OpeningFcn gets called. An
% unrecognized property name or invalid value makes property application
% stop. All inputs are passed to gui_OpeningFcn via varargin.
%
% *See GUI Options on GUIDE’s Tools menu. Choose “GUI allows only one
% instance to run (singleton)”.
%
% See also: GUIDE, GUIDATA, GUIHANDLES
% Edit the above text to modify the response to help gui
% Last Modified by GUIDE v2.5 27-May-2011 17:39:18
% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct(‘gui_Name’, mfilename, …
‘gui_Singleton’, gui_Singleton, …
‘gui_OpeningFcn’, @gui_OpeningFcn, …
‘gui_OutputFcn’, @gui_OutputFcn, …
‘gui_LayoutFcn’, [] , …
‘gui_Callback’, []);
if nargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
end
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT
% — Executes just before gui is made visible.
function gui_OpeningFcn(hObject, eventdata, handles, varargin)
% This function has no output args, see OutputFcn.
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% varargin command line arguments to gui (see VARARGIN)
% Choose default command line output for gui
handles.output = hObject;
% Update handles structure
guidata(hObject, handles);
% UIWAIT makes gui wait for user response (see UIRESUME)
% uiwait(handles.figure1);
% — Outputs from this function are returned to the command line.
function varargout = gui_OutputFcn(hObject, eventdata, handles)
% varargout cell array for returning output args (see VARARGOUT);
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Get default command line output from handles structure
varargout{1} = handles.output;
% --------------------------------------------------------------------
function Open_Callback(hObject, eventdata, handles)
[name,path]=uigetfile( …
{‘.jpg;.tif;.png;.gif;.bmp’,‘All Image Files’;…
'.‘,‘All Files’ },…
‘请选择要融合的低分辨率图片’);
fullpath=strcat(path,name);
[name2,path2]=uigetfile( …
{’.jpg;.tif;.png;.gif;.bmp’,‘All Image Files’;…
‘.’,‘All Files’ },…
‘请选择要融合的高分辨率图片(’);
fullpath2=strcat(path2,name2);
save path.mat fullpath fullpath2
% hObject handle to Open (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% — Executes during object creation, after setting all properties.
function axes1_CreateFcn(hObject, eventdata, handles)
% hObject handle to axes1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% Hint: place code in OpeningFcn to populate axes1
% — Executes on button press in add_fu_button.
function add_fu_button_Callback(hObject, eventdata, handles)
axes(handles.axes1);
cla;
axes(handles.axes2);
cla;
axes(handles.axes3);
cla;
a=get(handles.radiobutton5,‘value’);
b=get(handles.radiobutton6,‘value’);
c=get(handles.radiobutton7,‘value’);
if a1
load path.mat
axes(handles.axes1);
low=imread(fullpath);
imshow(low);
axes(handles.axes2);
high=imread(fullpath2);
imshow(high);
addfusion;
load image.mat
axes(handles.axes3);
imshow(fusionresult);
%
end
if b1
load path.mat
axes(handles.axes1);
low=imread(fullpath);
imshow(low);
axes(handles.axes2);
high=imread(fullpath2);
imshow(high);
sel_h_fusion;
load image.mat
axes(handles.axes3);
imshow(fusionresult);
%
end
if c==1
load path.mat
axes(handles.axes1);
low=imread(fullpath);
imshow(low);
axes(handles.axes2);
high=imread(fullpath2);
imshow(high);
sel_l_fusion;
load image.mat
axes(handles.axes3);
imshow(fusionresult);
%
end
%axes(handles.axes4);
%cla;
%load path.mat
%axes(handles.axes1);
%low=imread(fullpath);
%imshow(low);
%axes(handles.axes2);
%high=imread(fullpath2);
%imshow(high);
%addfusion;
%load image.mat
%axes(handles.axes3);
%imshow(fusionresult);
% hObject handle to add_fu_button (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% — Executes on button press in pretreat_button.
function pretreat_button_Callback(hObject, eventdata, handles)
load path.mat
axes(handles.axes4);
low=imread(fullpath);
imshow(low);
axes(handles.axes5);
high=imread(fullpath2);
imshow(high);
pretreat;
load image.mat
NbColors=255;
map=gray(NbColors);
axes(handles.axes6);
image(pretreat_result_low);
colormap(map);
axes(handles.axes7);
image(pretreat_result_high);
colormap(map);
% hObject handle to pretreat_button (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
1 matlab版本
2014a
2 参考文献
[1]王杰,赵文义,潘细朋,杨辉华.基于像素校正的编解码多聚焦图像融合网络[J].计算机仿真. 2021,38(12)
3 备注
简介此部分摘自互联网,仅供参考,若侵权,联系删除