【图像融合】基于加权和金字塔实现图像融合附matlab代码

1 内容介绍

基于Matlab强大的图像处理工具箱函数,用加权平均法、拉普拉斯金字塔变换法、小波变换法对图像进行融合,然后用客观评价法中的相应评价指标对其融合结果进行质量评价。实验表明,小波变换法的图像融合效果最好。

【图像融合】基于加权和金字塔实现图像融合附matlab代码_第1张图片

【图像融合】基于加权和金字塔实现图像融合附matlab代码_第2张图片

2 仿真代码

function [ imgout ] = pyr_expand( img )
%PYR_EXPAND  Image pyramid expansion
%   B = PYR_EXPAND( A )  If A is M-by-N, then the size of B 
%    is (2*M-1)-by-(2*N-1). Support gray or rgb image.
%    B will be transformed to double class.
%    Results the same w/ MATLAB func impyramid.
% Yan Ke @ THUEE, [email protected]

kw = 5; % default kernel width
cw = .375; % kernel centre weight, same as MATLAB func impyramid. 0.6 in the Paper
ker1d = [.25-cw/2 .25 cw .25 .25-cw/2];
kernel = kron(ker1d,ker1d')*4;

% expand [a] to [A00 A01;A10 A11] with 4 kernels
ker00 = kernel(1:2:kw,1:2:kw); % 3*3
ker01 = kernel(1:2:kw,2:2:kw); % 3*2
ker10 = kernel(2:2:kw,1:2:kw); % 2*3
ker11 = kernel(2:2:kw,2:2:kw); % 2*2

img = im2double(img);
sz = size(img(:,:,1));
osz = sz*2-1;
imgout = zeros(osz(1),osz(2),size(img,3));

for p = 1:size(img,3)
    img1 = img(:,:,p);
    img1ph = padarray(img1,[0 1],'replicate','both'); % horizontally padded
    img1pv = padarray(img1,[1 0],'replicate','both'); % horizontally padded
    
    img00 = imfilter(img1,ker00,'replicate','same');
    img01 = conv2(img1pv,ker01,'valid'); % imfilter doesn't support 'valid'
    img10 = conv2(img1ph,ker10,'valid');
    img11 = conv2(img1,ker11,'valid');
    
    imgout(1:2:osz(1),1:2:osz(2),p) = img00;
    imgout(2:2:osz(1),1:2:osz(2),p) = img10;
    imgout(1:2:osz(1),2:2:osz(2),p) = img01;
    imgout(2:2:osz(1),2:2:osz(2),p) = img11;
end

end

3 运行结果

【图像融合】基于加权和金字塔实现图像融合附matlab代码_第3张图片

4 参考文献

[1]仇海全, 潘丽, 潘花. 图像融合算法的Matlab实现与比较[J]. 宜宾学院学报, 2011(12):3.

[2]高婷, 徐毓, 徐廷新,等. 基于预处理的金字塔图像融合算法[J]. 空军预警学院学报, 2013, 27(5):5.

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

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

你可能感兴趣的:(图像处理,matlab,图像处理,开发语言)