融合质量无参考指标 (QNR) 详细介绍

融合质量无参考指标 (QNR) 详细介绍

QNR(Quality with No Reference)指标是一种用于评估图像融合效果的无参考质量评价方法。它主要应用于全色图像(PAN)和多光谱图像(MS)融合任务中,用来衡量融合后图像的质量。QNR综合考虑了光谱失真和空间失真,能够在没有参考图像的情况下评估融合效果。

QNR 指标的组成部分

QNR 指标由两个主要成分组成:光谱失真指数(Spectral Distortion Index, D λ D_\lambda Dλ)和空间失真指数(Spatial Distortion Index, D s D_s Ds)。QNR 的计算公式如下:

Q N R = ( 1 − D λ ) α ⋅ ( 1 − D s ) β QNR = (1 - D_\lambda)^\alpha \cdot (1 - D_s)^\beta QNR=(1Dλ)α(1Ds)β

其中:

  • D λ D_\lambda Dλ:光谱失真指数,衡量融合图像相对于原始多光谱图像的光谱失真。
  • D s D_s Ds:空间失真指数,衡量融合图像相对于原始全色图像的空间失真。
  • α \alpha α β \beta β:用于调整光谱和空间失真对整体质量的影响。

QNR 计算步骤

  1. 读取影像数据:首先读取原始全色图像(PAN)和多光谱图像(MS)以及融合图像的数据。

  2. 计算光谱失真指数 D λ D_\lambda Dλ

    • 获取多光谱图像和融合图像中的每个波段。
    • 对每个波段对,计算融合图像和多光谱图像之间的UQI(Universal Quality Index)值。
    • 计算所有波段对之间的UQI差异,得到光谱失真指数。
  3. 计算空间失真指数 D s D_s Ds

    • 将高分辨率全色图像进行均值滤波和降采样,得到与低分辨率多光谱图像相同分辨率的降质全色图像。
    • 对每个波段,计算融合图像和高分辨率全色图像之间的UQI值,以及低分辨率多光谱图像和降质全色图像之间的UQI值。
    • 计算所有波段的UQI差异,得到空间失真指数。
  4. 计算 QNR 值:使用公式 Q N R = ( 1 − D λ ) α ⋅ ( 1 − D s ) β QNR = (1 - D_\lambda)^\alpha \cdot (1 - D_s)^\beta QNR=(1Dλ)α(1Ds)β 计算 QNR 值。

代码示例

以下是计算 QNR 的 Python 代码示例:

def d_lambda(ms, fused, p=1):
    """计算光谱失真指数(D_lambda)。

    :param ms: 低分辨率多光谱图像。
    :param fused: 高分辨率融合图像。
    :param p: 用于强调较大光谱差异的参数(默认值为1)。

    :returns: float -- D_lambda。
    """
    L = ms.shape[2]

    M1 = np.zeros((L, L))
    M2 = np.zeros((L, L))

    for l in range

代码实现

d_lambda函数

def d_lambda(ms, fused, p=1):
    """计算光谱失真指数(D_lambda)。

    :param ms: 低分辨率多光谱图像。
    :param fused: 高分辨率融合图像。
    :param p: 用于强调较大光谱差异的参数(默认值为1)。

    :returns:  float -- D_lambda。
    """
    L = ms.shape[2]

    M1 = np.zeros((L, L))
    M2 = np.zeros((L, L))

    for l in range(L):
        for r in range(l, L):
            M1[l, r] = M1[r, l] = uqi(fused[:, :, l], fused[:, :, r])
            M2[l, r] = M2[r, l] = uqi(ms[:, :, l], ms[:, :, r])

    diff = np.abs(M1 - M2) ** p
    return (1. / (L * (L - 1)) * np.sum(diff)) ** (1. / p)
  • 目的:计算光谱失真指数(D_lambda),用于量化融合图像相对于多光谱图像的光谱失真。
  • 参数
    • ms:低分辨率多光谱图像(3D数组)。
    • fused:高分辨率融合图像(3D数组)。
    • p:用于强调较大光谱差异的参数(默认为1)。
  • 过程
    • L = ms.shape[2]:获取光谱波段的数量。
    • 初始化两个矩阵M1M2用于存储UQI值。
    • 双重循环计算融合图像和多光谱图像中每对波段的UQI。
    • diff存储M1M2之间的绝对差值并将其提升至p次方。
    • 返回光谱失真指数。

d_s函数

def d_s(pan, ms, fused, q=1, r=4, ws=7):
    """计算空间失真指数(D_S)。

    :param pan: 高分辨率全色图像。
    :param ms: 低分辨率多光谱图像。
    :param fused: 高分辨率融合图像。
    :param q: 用于强调较大空间差异的参数(默认值为1)。
    :param r: 高分辨率与低分辨率的比例(默认值为4)。
    :param ws: 滑动窗口大小(默认值为7)。

    :returns:  float -- D_S。
    """
    pan = pan.astype(np.float64)
    fused = fused.astype(np.float64)

    pan_degraded = uniform_filter(pan.astype(np.float64), size=ws) / (ws ** 2)
    pan_degraded = imresize(pan_degraded, (pan.shape[0] // r, pan.shape[1] // r))

    L = ms.shape[2]

    M1 = np.zeros(L)
    M2 = np.zeros(L)

    for l in range(L):
        M1[l] = uqi(fused[:, :, l], pan)
        M2[l] = uqi(ms[:, :, l], pan_degraded)

    diff = np.abs(M1 - M2) ** q
    return ((1. / L) * (np.sum(diff))) ** (1. / q)
  • 目的:计算空间失真指数(D_S),用于量化融合图像相对于全色图像的空间失真。
  • 参数
    • pan:高分辨率全色图像。
    • ms:低分辨率多光谱图像。
    • fused:高分辨率融合图像。
    • q:用于强调较大空间差异的参数(默认为1)。
    • r:高分辨率与低分辨率的比例(默认为4)。
    • ws:滑动窗口大小(默认为7)。
  • 过程
    • panfused转换为浮点型。
    • 使用均值滤波器对全色图像进行降质处理,并缩放到低分辨率。
    • 获取多光谱图像的波段数量。
    • 初始化两个数组M1M2用于存储UQI值。
    • 循环计算每个波段的融合图像与全色图像、低分辨率多光谱图像与降质全色图像的UQI值。
    • diff存储M1M2之间的绝对差值并将其提升至q次方。
    • 返回空间失真指数。

qnr函数

def qnr(pan, ms, fused, alpha=1, beta=1, p=1, q=1, r=4, ws=7):
    """计算无参考质量指标(QNR)。

    :param pan: 高分辨率全色图像。
    :param ms: 低分辨率多光谱图像。
    :param fused: 高分辨率融合图像。
    :param alpha: 强调光谱失真对整体的影响。
    :param beta: 强调空间失真对整体的影响。
    :param p: 用于强调较大光谱差异的参数(默认值为1)。
    :param q: 用于强调较大空间差异的参数(默认值为1)。
    :param r: 高分辨率与低分辨率的比例(默认值为4)。
    :param ws: 滑动窗口大小(默认值为7)。

    :returns:  float -- QNR。
    """
    a = (1 - d_lambda(ms, fused, p=p)) ** alpha
    b = (1 - d_s(pan, ms, fused, q=q, ws=ws, r=r)) ** beta
    return a * b
  • 目的:计算无参考质量指标(QNR),用于量化融合图像的整体质量。
  • 参数
    • pan:高分辨率全色图像。
    • ms:低分辨率多光谱图像。
    • fused:高分辨率融合图像。
    • alpha:强调光谱失真对整体的影响。
    • beta:强调空间失真对整体的影响。
    • p:用于强调较大光谱差异的参数(默认为1)。
    • q:用于强调较大空间差异的参数(默认为1)。
    • r:高分辨率与低分辨率的比例(默认为4)。
    • ws:滑动窗口大小(默认为7)。
  • 过程
    • 计算光谱失真指数D_lambda并进行调整。
    • 计算空间失真指数D_S并进行调整。
    • 返回QNR值,通过光谱和空间失真指数的调整值相乘得到。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Python与遥感

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

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

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

打赏作者

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

抵扣说明:

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

余额充值