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

news2026/5/8 0:09:21

融合质量无参考指标 (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值,通过光谱和空间失真指数的调整值相乘得到。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1910700.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Revit 2025:建筑设计师的得力助手

在这繁忙的现代社会中,建筑设计师们总是追求着更高效、更精确的工具。而Revit 2025,正如一位老友般,默默地陪伴在我们身边,帮助我们实现心中的蓝图。今天,我怀着满腔的热情与感激,向大家介绍这款软件的功能…

越低越好?所以伦敦金至少可以入金多少呢?

投资者要进行黄金投资,市场中有多个品种可以选择。笔者认为,在众多品种之中,伦敦金是一种适应性比较广的黄金投资方式。如果投资者要选择伦敦金作为自己的黄金投资的主要方式,那么有一些就基本的问题是我们需要了解的,…

Retrofit框架源码深度剖析【Android热门框架分析第二弹】

Android热门框架解析,你确定不来看看吗? OkHttp框架源码深度剖析【Android热门框架分析第一弹】 Retrofit框架源码深度剖析【Android热门框架分析第二弹】 什么是Retrofit? 准确来说,Retrofit 是一个 RESTful 的 HTTP 网络请求…

R包:reticulate R对python的接口包

介绍1 R和python是两种不同的编程语言,前者是统计学家发明并且服务数学统计计算,后者则是最万能的胶水语言。随着大数据时代的到来,两者在数据分析领域存在越来越多的共同点且可以相互使用,为了破解二者的编程壁垒,CR…

Noah-MP陆面生态水文模拟与多源遥感数据同化

陆面模型在生态水文研究中的地位和作用;熟悉模型的发展历程,常见模型及各自特点;理解Noah-MP模型的原理,掌握Noah-MP模型在单站和区域的模拟、模拟结果的输出和后续分析及可视化等方法;课程还将深入讲解数据同化的原理…

从天空到地面:无人机航拍推流直播技术在洞庭湖决口封堵中的全方位支援

据新闻报道,受持续强降雨影响,湖南省华容县团洲垸洞庭湖一线堤防发生管涌险情,随后出现决口。截至7月8日20时左右,226米长的洞庭湖一线堤防决口已累计进占208米,目前剩余18米,有望在今晚或9日凌晨实现合龙。…

Spring Cloud Alibaba -- 分布式定时任务解决方案(轻量级、快速构建)(ShedLock 、@SchedulerLock )

文章目录 一、 ShedLock简介二、 SchedulerLock三、基于Mysql方式使用步骤1.建表2.引入依赖3.Mysql连接配置4.ScheduledLock配置5.启动类配置6.创建定时任务7.启动多个项目服务进行测试8.SchedulerLock注解说明 四、使用注意事项 一、 ShedLock简介 ShedLock 是一个用于 Java …

swiftui给视图添加边框或者只给某个边设置border边框

直接使用border()就可以给一个视图添加边框效果,但是这种边框会给所有的边都设置上。 border()里面也可以添加属性.border(.blue, width: 5)这种就是设置颜色和宽度。 设置圆角边框 Text("1024小神").padding().cornerRadius(20).overlay(RoundedRectang…

如何在Facebook上保护你的个人资料安全?

随着社交媒体的普及和个人信息的数字化,保护个人资料安全成为越来越重要的议题。特别是在使用像Facebook这样的平台时,我们需要特别注意如何保护我们的数据免受未经授权的访问和滥用。本文将探讨一些实用的方法,以及如何增强你在Facebook上的…

keil mdk注释插件合集格式、时间、日期注释

文章目录 一、前言二、安装步骤2.1 解压tools.zip2.2 tools 文件解释2.3 添加注释带keil 三、配置3.1 格式化代码3.2 文件注释3.3函数注释3.4 当前日期3.5 当前时间 四、编辑注释模板4.1 编辑函数注释模板4.2 编辑C文件注释模板4.3 编辑h文件注释模板 五、为注释功能添加快捷键…

qmt量化交易策略小白学习笔记第55期【qmt编程之期权数据--获取历史期权列表】

qmt编程之获取期权数据 qmt更加详细的教程方法,会持续慢慢梳理。 也可找寻博主的历史文章,搜索关键词查看解决方案 ! 感谢关注,咨询免费开通量化回测与获取实盘权限,欢迎和博主联系! 获取历史期权列表 …

Sui DeFi现状介绍

关于Sui Network Sui是基于第一原理重新设计和构建而成的L1公有链,旨在为创作者和开发者提供能够承载Web3中下一个十亿用户的开发平台。Sui上的应用基于Move智能合约语言,并具有水平可扩展性,让开发者能够快速且低成本支持广泛的应用开发。获…

视频监控管理平台智能边缘分析一体机视频监控系统客流统计检测算法

在当今数据驱动的时代,客流统计作为商业分析的重要手段,其准确性和实时性对于商家决策具有至关重要的影响。随着技术的发展,智能边缘分析一体机结合了边缘计算与深度学习技术,为客流统计提供了更为高效、精准的解决方案。 首先&am…

可变参数 Collections 不可变集合 Stream流

目录 1.可变参数: 2.Collections: 3.不可变集合: 4.Stream流: 1、什么是流 2、如何生成流 1.单列集合获取Stream流 2.双列集合获取Stream流 3.数组获取Stream流: 4.一堆零散数据: Stream接口中的静态方法 3.Stream流的…

【总线】AXI第九课时:介绍AXI响应信号 (Response Signaling):RRESP和 BRESP

大家好,欢迎来到今天的总线学习时间!如果你对电子设计、特别是FPGA和SoC设计感兴趣,那你绝对不能错过我们今天的主角——AXI4总线。作为ARM公司AMBA总线家族中的佼佼者,AXI4以其高性能和高度可扩展性,成为了现代电子系统中不可或缺的通信桥梁…

如何在 Odoo 16 中配置搜索视图、过滤器和分组

Odoo 中有多种视图类型,包括表单、看板、树、日历、Qweb、搜索等。与表单视图相比,搜索视图用于过滤其他视图的内容,而不是显示内容本身。这使得搜索视图与其他视图不同。表单视图仅包含一条记录,因此不需要搜索。 本文将详细介绍…

PointNet——源码调试(模型训练+可视化测试显示)

因为项目涉及到3D点云项目,故学习下PointNet这个用来处理点云的神经网络 论文的话,大致都看了下,网络结构有了一定的了解,本博文主要为了下载调试PointNet网络源码,训练和测试调通而已,不涉及后续的改进优化…

PHP项目中的前端页面随意点击卡片后会重定向到首页或登录页

个人名片 🎓作者简介:java领域优质创作者 🌐个人主页:码农阿豪 📞工作室:新空间代码工作室(提供各种软件服务) 💌个人邮箱:[2435024119qq.com] &#x1f4f1…

判断对象能否回收的两种方法,以及JVM引用

判断对象能否回收的两种方法:引用计数算法,可达性分析算法 引用计数算法:给对象添加一个引用计数器,当该对象被其它对象引用时计数加一,引用失效时计数减一,计数为0时,可以回收。 特点&#xf…

STMCUBEMX_IIC_LL库/HAL库_扫描总线设备

STMCUBEMX_IIC_LL库/HAL库_扫描总线设备 前言: 在很多开发过程中,I2C总线上会挂载多个从机设备,但是又不知道设备的地址是多少,我做一个简单的小工具扫描总线,把地址打印出来就很方便 LL库实例: void scan…