【MATLAB图像融合】[7] 区域能量算法

能量计算

       能量算法,顾名思义就是计算一幅图像或是一个像素区域的能量。能量对于图像而言就是灰度值,灰度值越高能量就越大对应的像素点就是“更白”。在8位的灰度图中,0代表黑色,255代表白色。
       通俗地讲,能量计算就是计算图像的灰度值。最常用的方法,如果计算一整个图像的能量,那么就将每一个像素点的灰度值拿出来平方,然后把它们加起来。如果计算一个区域的能量,就是将区域内的像素点灰度值平方累加。

区域能量算法

       与能量计算的概念相同,区域能量算法也需要用到像素的灰度值;但是这里的“区域”在一些情况下,我们将其转变说法:单个像素点及其邻域范围。这时候上面的说法就被称为“区域”。
       为什么要强调单个像素点,是因为要用到权重。这里可以构建一个1/16【1,2,1;2,4,2;1,2,1】的矩阵当做权值,取图像3*3的区域去乘以权重,然后加起来作为中心点像素的区域能量。这样遍历整个图像之后,就可以得到和原图像同大小的区域能量矩阵了。
用数学的方式来描述:
在这里插入图片描述
①、这里的p,q定义了区域的大小。
②、w是权重。
③、LAn表示金字塔的第n层。
④、(i,j)是邻域的中心点,也是能量矩阵中的第(i,j)点。

MATLAB实现

function new=fenergy(a,b)
a=double(a);
b=double(b);
[m,n]=size(a);

temp_a=nlfilter(a,[3 3],@nengliang);       %邻域滑动操作 %help nlfilter
temp_b=nlfilter(b,[3 3],@nengliang);       %对每个[3,3]大小的区域滑动并且执行nengliang函数。

for i=1:m                                  %根据能量大小进行融合
    for j=1:n
        if temp_a(i,j)>=temp_b(i,j)
            new(i,j)=a(i,j);
        else
            new(i,j)=b(i,j);
        end
    end
end
new=(new);
end

function c=nengliang(x)                 %权值函数

A=[1,2,1];                              %习惯用大写字母表示矩阵,小写字母表示数字。
C=A*A'.*x.*(1/16);
c=sum(sum(C));

函数调用

 clear;clc;
 a=imread('1.tif');
 b=imread('2.tif');
 y=fenergy(a,b);
 
 subplot 221;imshow(uint8(a));title('左模糊')
 subplot 222;imshow(uint8(b));title('右模糊')
 subplot 223;imshow(uint8(y));title('区域能量取大')

运行结果:
在这里插入图片描述
在做了许多的准备工作后,下一节终于来到了拉普拉斯金字塔融合(LPT)。会用到本节的区域能量算法以及之前用过的一些算法,欢迎大家一起讨论、学习。

  • 5
    点赞
  • 71
    收藏
    觉得还不错? 一键收藏
  • 11
    评论
Matlab是一种强大的数学软件,特别适合进行图像处理和分析,其中包括各种图像融合技术。图像融合是指将两个或多个图像在同一空间和时间尺度上合并,通常是为了提高图像质量、增强信息或提供更好的视觉效果。在Matlab中,常见的图像融合算法有: 1. **加权平均融合**(Weighted Average):简单地按像素值给每个输入图像赋予一定的权重,然后求和得到融合后的图像。 2. **最大响应融合**(Maximun Response):选择响应最大的像素值作为融合结果,常用于多光谱图像融合。 3. **小波域融合**(Wavelet Domain Fusion):利用小波变换对图像进行分解,然后在小波系数域进行融合,能更好地保留细节信息。 4. **多尺度空间融合**(Multi-Scale Space Fusion):通过不同尺度的空间金字塔结构融合不同分辨率的图像。 5. **基于特征的融合**(Feature-Based Fusion):结合图像内容的关键特征(如SIFT、SURF等)进行融合,强调相似区域的匹配。 6. **金字塔融合**(Pyramid Fusion):使用金字塔结构逐级融合,可以从低分辨率开始融合,逐步增加到高分辨率。 7. **基于深度学习的融合**(Deep Learning-based Fusion):利用深度神经网络模型学习图像间的映射关系,如UNet、FuseNet等。 要实现这些算法Matlab提供了内置的图像处理工具箱(Image Processing Toolbox)和一些高级功能,如`imfuse`函数或自定义函数。如果你有特定的图像数据或融合需求,可能还需要根据具体情况进行参数调整和优化。
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值