✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。

🍎个人主页:​​Matlab科研工作室​

🍊个人信条:格物致知。

更多Matlab仿真内容点击👇

​智能优化算法​​       ​​神经网络预测​​       ​​雷达通信 ​​      ​​无线传感器​​        ​​电力系统​

​信号处理​​              ​​图像处理​​               ​​路径规划​​       ​​元胞自动机​​        ​​无人机 ​

⛄ 内容介绍

图像融合,是信息融合的其中一个分支,也是融合问题的热点之一。处理多焦点图像融合的问题中,如何从两幅待融合图像中提取到更多特征来得到更精准的决策图是解决该问题的关键。几十年来,许多研究人员提出了大量图像融合算法。在拍摄照片的过程中,选择不同的光圈和焦距会使很多成像设备在不同景深下难以对画面中的所有对象进行聚焦,仅景深中的物体是清晰的,所以很难得到各个层面上的完整信息。为了解决该问题,出现了多焦点图像融合技术。虽然任何一张图片中的信息都不能说明整个场景,但这些图像中包含的信息又是互补的,所以多焦点图像融合问题可以通过对具有不同焦点的图像进行特征提取,并设计融合规则来合成一幅全焦点图像。在过去几年中,出现了一些多焦点图像融合方法,大致可以分为空间域和变换域两类。除此之外,随着近年来深度学习在计算机视觉和图像处理领域中得到了显著进展,如目标检测、图像分割等,也有一些用于多焦点图像融合的深度学习方法被提出。然而,基于传统图像融合方法需要对图像中的像素做焦点检测,这个过程往往采用基于块和区域的方法,因此融合的质量会受到划分方法影响,常出现边缘不理想的问题。除此之外,还需要设计较为复杂的融合规则来对多焦点图像进行融合。在后续提出的有关深度学习的图像融合方法,其网络结构往往较为单一,在训练过程中没有实现端到端的像素级预测,融合结果在细小的边缘处常出现伪影。

VGG网络

VGG原理

VGG16相比AlexNet的一个改进是采用连续的几个3x3的卷积核代替AlexNet中的较大卷积核(11x11,7x7,5x5)。

对于给定的感受野(与输出有关的输入图片的局部大小),采用堆积的小卷积核是优于采用大的卷积核,因为多层非线性层可以增加网络深度来保证学习更复杂的模式,而且代价还比较小(参数更少)。

简单来说,在VGG中,使用了3个3x3卷积核来代替7x7卷积核,使用了2个3x3卷积核来代替5*5卷积核,这样做的主要目的是在保证具有相同感知野的条件下,提升了网络的深度,在一定程度上提升了神经网络的效果。

比如,3个步长为1的3x3卷积核的一层层叠加作用可看成一个大小为7的感受野(其实就表示3个3x3连续卷积相当于一个7x7卷积),其参数总量为 3x(9xC^2) ,如果直接使用7x7卷积核,其参数总量为 49xC^2 ,这里 C 指的是输入和输出的通道数。很明显,27xC2小于49xC2,即减少了参数;而且3x3卷积核有利于更好地保持图像性质。

这里解释一下为什么使用2个3x3卷积核可以来代替55卷积核:

5x5卷积看做一个小的全连接网络在5x5区域滑动,我们可以先用一个3x3的卷积滤波器卷积,然后再用一个全连接层连接这个3x3卷积输出,这个全连接层我们也可以看做一个3x3卷积层。这样我们就可以用两个3x3卷积级联(叠加)起来代替一个 5x5卷积。

VGG网络结构

 【图像融合】基于深度学习的多曝光图像融合附matlab代码_卷积

 【图像融合】基于深度学习的多曝光图像融合附matlab代码_图像融合_02

⛄ 部分代码

function W_CNN=cnnFeatures_newnew(I)

net=vgg19;

beta=0.2;  % constant used in exposure mask calculation

for ii=1:size(I,4)

    %fetaure extraction from first layer

    features(:,:,:,ii) = activations(net,I(:,:,:,ii),1,'OutputAs','channels');

    features(:,:,:,ii)=double(features(:,:,:,ii));

    %     features(:,:,ii)=(newfeatures(:,:,1,ii)+newfeatures(:,:,2,ii)+newfeatures(:,:,3,ii))/3;

    for jj=1:size(I,3)

        temp=norm(features(:,:,jj,ii),1);

        V(:,:,jj,ii)=(features(:,:,jj,ii)./temp);   %strength of feature vector

%         temp1=norm(features(:,:,jj,ii));

%         sij(:,:,jj,ii)=(features(:,:,jj,ii)./temp1); %temporal consistency

%         S_temp(:,:,jj,ii)=exp(-((sij(:,:,jj,ii)).^2)./(2*0.05^2));

        % exposure mask calculation

        %         grayI(:,:,:,ii)=normalize(rgb2gray(I(:,:,:,ii)));

        for pp=1:size(I,1)

            for qq=1:size(I,2)

                if (beta<I(pp,qq,jj,ii))&&(I(pp,qq,jj,ii)<(1-beta))

                    M(pp,qq,jj,ii)=1;

                else

                    M(pp,qq,jj,ii)=0;

                end

            end

        end

    end

end

for ii=1:size(I,4)

    for jj=1:size(I,3)

        temp1=norm(features(:,:,jj,ii));

        temp2(:,:,jj,ii)=(features(:,:,jj,ii)./temp1); %temporal consistency

    end

end

S_temp=euclideanDist(temp2); %temporal consistency

S=zeros(size(I,1),size(I,2),size(I,3));

V_imagesum=zeros(size(I,1),size(I,2),size(I,3));

denom=zeros(size(I,1),size(I,2),size(I,3));

for ii=1:size(I,4)

    S=S+S_temp(:,:,:,ii); % temporal consistemcy

    V_imagesum=V_imagesum+V(:,:,:,ii);

%     denom=denom+V(:,:,:,ii).*S_temp(:,:,:,ii).*M(:,:,:,ii);

    denom=denom+V(:,:,:,ii);

end

% weights calculation

for ii=1:size(I,4)

%     W_CNN(:,:,:,ii)=(V(:,:,:,ii).*S.*M(:,:,:,ii))./(denom+10e-5);

      W_CNN(:,:,:,ii)=(V(:,:,:,ii)./(denom));

%     for jj=1:3

%         W_CNN(:,:,jj,ii)=medfilt2(W_CNN(:,:,jj,ii));    

%     end

end

⛄ 运行结果

 【图像融合】基于深度学习的多曝光图像融合附matlab代码_图像融合_03

 【图像融合】基于深度学习的多曝光图像融合附matlab代码_卷积核_04

 【图像融合】基于深度学习的多曝光图像融合附matlab代码_卷积核_05

 【图像融合】基于深度学习的多曝光图像融合附matlab代码_卷积核_06

⛄ 参考文献

[1]陈清江, 李毅, 柴昱洲. 一种基于深度学习的多聚焦图像融合算法[J]. 激光与光电子学进展, 2018, 55(7):9.

[2]李怡. 基于深度学习的多焦点图像融合算法研究[D]. 吉林大学.

⛳️ 完整代码

❤️部分理论引用网络文献,若有侵权联系博主删除
❤️ 关注我领取海量matlab电子书和数学建模资料