【图像融合】基于双树复小波变换的像素级图像融合算法附matlab代码

本文提出基于双树复小波变换(DT - CWT)的多聚焦图像融合新算法。先对图像进行多尺度和多方向分解,定义局部方向对比度,高频分量采用基于方向对比度的融合规则,低频域采用清晰度测度策略。实验表明该算法能提取重要信息,提高融合图像质量,还给出参考代码。

 1 内容简介

针对同一场景的多聚焦图像融合,提出了一种基于双树复小波变换(DT-CWT)的图像融合新算法.首先利用DT-CWT对图像进行多尺度和多方向分解,并根据双树复小波分解域各子带的系数特性定义了图像局部方向对比度,然后针对高频分量系数的选择,采用基于方向对比度的融合规则,而在低频域采用图像清晰度为测度的融合策略.实验结果表明,该算法能够很好地将多聚焦图像中的重要信息提取并注入到融合图像中,与其他方法相比较,取得了更好的融合效果,提高了融合图像的质量.

图像融合是信息(数据)融合的重要分支。图像融 合指通过对两幅或多幅图像(源图像)中具有互补性的 信息进行提取和综合 ‚获得对某一场景或目标更为准 确、全面、可靠的图像描述 ‚使融合图像更符合人或机器 的视觉特性 ‚以利于对图像的进一步分析和理解。图像 融合在自动目标识别、计算机视觉、遥感、医学图像处理 及军事等领域有着广泛的应用。多聚焦图像融合是 图像融合研究内容之一 ‚这一技术将相同的成像条件下 镜头聚焦目标不同的两个(或多个)原图像合成一幅多 目标都聚焦清晰的融合图像 ‚使之更适合人眼观察或计 算机的后续处理 。

基于小波变换的图像融合技术代表了当今像素级 多聚焦图像融合技术的发展前沿之一。 目前常用的离 散小波变换(Discrete Wavelet Transform ‚DWT )技术 虽然具有局部性 ‚多分辨率等优点 ‚但它仍然不是一个 让人完全满意的图像表达方式 ‚不仅会丧失傅里叶变换的平移不变性 ‚而且不能很好地表现图像中的方向特 征。然而双树复小波变换(Dual-Tree Complex Wave- let Transform ‚DT-CWT )却能克服这些不足 ‚它不仅 保持了传统小波优良的时频局部化分析能力 ‚还具有优 良的方向分析能力 ‚能够反映图像在不同分辨率上沿多 个方向变化的情形 ‚更好地描述图像的方向性。双树复 小波变换在图像去噪、边缘提取、纹理分析中都有很好 的表现[3] ‚近年来也被应用到图像融合领域。这里 基于双树复小波变换进行多聚焦图像的融合 ‚能够更好 地提取原图像中的方向性信息 ‚使融合图像的边缘和纹 理更加清晰 ‚所含信息量更加丰富。本文对高低频子带 采用不同的融合策略。在高频子带融合中引入相似性 度量 ‚在此基础上采用局部能量取大和加权平均相结合 的融合策略。实验结果证实了该算法的优越性。

2 参考代码

function y = icplxdual2D(w, J, Fsf, sf)

% Inverse Dual-Tree Complex 2D Discrete Wavelet Transform

% USAGE:
%   y = icplxdual2D(w, J, Fsf, sf)
% INPUT:
%   w - wavelet coefficients
%   J - number of stages
%   Fsf - synthesis filters for final stage
%   sf - synthesis filters for preceeding stages
% OUTPUT:
%   y - output array
% See cplxdual2D
%
% WAVELET SOFTWARE AT POLYTECHNIC UNIVERSITY, BROOKLYN, NY
% http://taco.poly.edu/WaveletSoftware/

for j = 1:J
    for m = 1:3
        [w{j}{1}{1}{m} w{j}{2}{2}{m}] = pm(w{j}{1}{1}{m},w{j}{2}{2}{m});
        [w{j}{1}{2}{m} w{j}{2}{1}{m}] = pm(w{j}{1}{2}{m},w{j}{2}{1}{m});
    end
end

y = zeros(size(w{1}{1}{1}{1})*2);
for m = 1:2
    for n = 1:2
        lo = w{J+1}{m}{n};
        for j = J:-1:2
            lo = sfb2D(lo, w{j}{m}{n}, sf{m}, sf{n});
        end
        lo = sfb2D(lo, w{1}{m}{n}, Fsf{m}, Fsf{n});
        y = y + lo;
    end
end

% normalization
y = y/2;

function y = sfb2D_A(lo, hi, sf, d)

% 2D Synthesis Filter Bank
% (along single dimension only)
%
% y = sfb2D_A(lo, hi, sf, d);
% sf - synthesis filters
% d  - dimension of filtering
% see afb2D_A


lpf = sf(:, 1);     % lowpass filter
hpf = sf(:, 2);     % highpass filter

if d == 2
   lo = lo';
   hi = hi';
end

N = 2*size(lo,1);
L = length(sf);
y = upfirdn(lo, lpf, 2, 1) + upfirdn(hi, hpf, 2, 1);
y(1:L-2, :) = y(1:L-2, :) + y(N+[1:L-2], :);
y = y(1:N, :);
y = cshift2D(y, 1-L/2);

if d == 2
   y = y';
end

function [af, sf] = dualfilt1

% Kingsbury Q-filters for the dual-tree complex DWT
%
% USAGE:
%    [af, sf] = dualfilt1
% OUTPUT:
%    af{i}, i = 1,2 - analysis filters for tree i
%    sf{i}, i = 1,2 - synthesis filters for tree i
%    note: af{2} is the reverse of af{1}
% REFERENCE:
%    N. G. Kingsbury,  "A dual-tree complex wavelet
%    transform with improved orthogonality and symmetry
%    properties", Proceedings of the IEEE Int. Conf. on
%    Image Proc. (ICIP), 2000
% See dualtree
%
% WAVELET SOFTWARE AT POLYTECHNIC UNIVERSITY, BROOKLYN, NY
% http://taco.poly.edu/WaveletSoftware/

% These cofficients are rounded to 8 decimal places.

af{1} = [
   0.03516384000000                  0
                  0                  0
  -0.08832942000000  -0.11430184000000
   0.23389032000000                  0
   0.76027237000000   0.58751830000000
   0.58751830000000  -0.76027237000000
                  0   0.23389032000000
  -0.11430184000000   0.08832942000000
                  0                  0
                  0  -0.03516384000000
 ];
 
af{2} = [
                  0  -0.03516384000000
                  0                  0
  -0.11430184000000   0.08832942000000
                  0   0.23389032000000
   0.58751830000000  -0.76027237000000
   0.76027237000000   0.58751830000000
   0.23389032000000                  0
  -0.08832942000000  -0.11430184000000
                  0                  0
   0.03516384000000                  0
];
 
sf{1} = af{1}(end:-1:1, :);
 
sf{2} = af{2}(end:-1:1, :);

% Dual tree complex wavelet transform (DT-CWT) based image fusion demo
% By VPS Naidu, MSDF Lab, June 2011
% DT-CWT software used in this fusion algorithm is from 
clear all; close all; home;

% User selection (1,2,3,...)
J = 6; % number of decomposition levels used in the fusion 


[Faf,Fsf] = FSfarras; % first stage filters
[af,sf] = dualfilt1;  % second stage filters


% images to be fused
im1 = double(imread('saras91.jpg'));
im2 = double(imread('saras92.jpg'));
figure; subplot(121);imshow(im1,[]); subplot(122); imshow(im2,[]);

% image decomposition
w1 = cplxdual2D(im1,J,Faf,af);
w2 = cplxdual2D(im2,J,Faf,af);

% Image fusion process start here
for j=1:J % number of stages
    for p=1:2 %1:real part & 2: imaginary part
        for d1=1:2 % orientations
            for d2=1:3
                x = w1{j}{p}{d1}{d2};
                y = w2{j}{p}{d1}{d2};
                D  = (abs(x)-abs(y)) >= 0; 
                wf{j}{p}{d1}{d2} = D.*x + (~D).*y; % image fusion
            end
        end
    end
end
for m=1:2 % lowpass subbands
    for n=1:2
        wf{J+1}{m}{n} = 0.5*(w1{J+1}{m}{n}+w2{J+1}{m}{n}); % fusion of lopass subbands
    end
end

% fused image
imf = icplxdual2D(wf,J,Fsf,sf);
figure; imshow(imf,[]); 

3 运行结果

4 参考文献

[1]杨伟, 柴奇, 王黎明. 基于双树复小波变换的多聚焦图像融合方法[J]. 光电技术应用, 2009, 24(3):4.

博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。

部分理论引用网络文献,若有侵权联系博主删除。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

matlab科研助手

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值