高光谱图像重构评价指标及其Python实现

高光谱图像重构的评价指标通常有三项。其中部分指标从普通图像变化而来,部分指标只有高光谱图像独有。本文拟从以下两个角度介绍高光谱图像评价指标,并列出基于Python语言的skimage库的对应实现方法。

1)从普通图像重构评价指标到高光谱图像重构评价指标

2)从普通图像重构评价指标代码到高光谱图像重构评价指标代码

一、MSE

MSE计算两组数据的均方误差,是最常用的评价相似度的准则,包括但不限于图像、信号。

Skimage库中对应的函数原型:

skimage.measure.compare_mse(im1, im2)

Parameters:

im1, im2 : ndarray

Image. Any dimensionality.

Returns:

mse : float

The mean-squared error (MSE) metric.

想要测度其他距离,参考compare_nrmse函数

http://scikit-image.org/docs/stable/api/skimage.measure.html#compare-nrmse

二、PSNR与MPSNR

1. PSNR

PSNR全称是Compute the peak signal to noise ratio。用于计算原始图像与重构图像之间的峰值信噪比。在图像超分辨率等任务中尤为常用,如同错误率之于分类任务,PSNR是图像重构任务事实上的基准评价准则。

skimage.measure.compare_psnr(im_true, im_test, data_range=None, dynamic_range =None )

Parameters:

im_true : ndarray

Ground-truth image.

im_test : ndarray

Test image.

data_range : int

The data range of the input image (distance between minimum and maximum possible values). By default, this is estimated from the image data-type.

Returns:

psnr : float

The PSNR metric.

2. MPSNR

MPSNR用于计算两幅高光谱图像之间的平均峰值信噪比。MPSNR计算方法很简单,只需要分别计算不同波段的PSNR,取均值就可以了。

 1 def mpsnr(x_true, x_pred):2     """3 4     :param x_true: 高光谱图像:格式:(H, W, C)5     :param x_pred: 高光谱图像:格式:(H, W, C)6     :return: 计算原始高光谱数据与重构高光谱数据的均方误差7     References8     ----------9     .. [1] https://en.wikipedia.org/wiki/Peak_signal-to-noise_ratio
10     """
11     n_bands = x_true.shape[2]
12     p = [compare_psnr(x_true[:, :, k], x_pred[:, :, k], dynamic_range=np.max(x_true[:, :, k])) for k in range(n_bands)]
13     return np.mean(p)

三、SSIM与MSSIM

1. SSIM用于计算两幅图像之间的平均结构相似度。

skimage.measure.compare_ssim(X, Y, win_size=None, gradient=False, data_range=None, multichannel=False, gaussian_weights=False, full=False, dynamic_range=None, **kwargs)

Parameters:

X, Y : ndarray

Image. Any dimensionality.

win_size : int or None

The side-length of the sliding window used in comparison. Must be an odd value. If gaussian_weights is True, this is ignored and the window size will depend on sigma.

gradient : bool, optional

If True, also return the gradient.

data_range : int, optional

The data range of the input image (distance between minimum and maximum possible values). By default, this is estimated from the image data-type.

multichannel : bool, optional

If True, treat the last dimension of the array as channels. Similarity calculations are done independently for each channel then averaged.

gaussian_weights : bool, optional

If True, each patch has its mean and variance spatially weighted by a normalized Gaussian kernel of width sigma=1.5.

full : bool, optional

If True, return the full structural similarity image instead of the mean value.

Returns:

mssim : float

The mean structural similarity over the image.

grad : ndarray

The gradient of the structural similarity index between X and Y [R327]. This is only returned if gradient is set to True.

S : ndarray

The full SSIM image. This is only returned if full is set to True.

Other Parameters:

use_sample_covariance : bool

if True, normalize covariances by N-1 rather than, N where N is the number of pixels within the sliding window.

K1 : float

algorithm parameter, K1 (small constant, see [R326])

K2 : float

algorithm parameter, K2 (small constant, see [R326])

sigma : float

sigma for the Gaussian when gaussian_weights is True.

2. MSSIM

MSSIM用于计算两幅高光谱图像之间的平均结构相似度。MSSIM计算方法很简单,只需要分别计算不同波段的SSIM指数,取均值就可以了。

1 def mssim(x_true,x_pred):
2     """
3         :param x_true: 高光谱图像:格式:(H, W, C)
4         :param x_pred: 高光谱图像:格式:(H, W, C)
5         :return: 计算原始高光谱数据与重构高光谱数据的结构相似度
6     """
7     SSIM = compare_ssim(X=x_true, Y=x_pred, multichannel=True)
8     return SSIM

四、SAM

SAM这个概念只存在于多/高光谱图像,普通图像没有这个概念。SAM又称光谱角相似度,用于度量原始高光谱数据与重构高光谱数据之间的光谱相似度。

 1 def sam(x_true, x_pred):2     """3     :param x_true: 高光谱图像:格式:(H, W, C)4     :param x_pred: 高光谱图像:格式:(H, W, C)5     :return: 计算原始高光谱数据与重构高光谱数据的光谱角相似度6     """7     assert x_true.ndim ==3 and x_true.shape == x_pred.shape8     sam_rad = np.zeros(x_pred.shape[0, 1])9     for x in range(x_true.shape[0]):
10         for y in range(x_true.shape[1]):
11             tmp_pred = x_pred[x, y].ravel()
12             tmp_true = x_true[x, y].ravel()
13             sam_rad[x, y] = np.arccos(tmp_pred / (norm(tmp_pred) * tmp_true / norm(tmp_true)))
14     sam_deg = sam_rad.mean() * 180 / np.pi
15     return sam_deg

五、相关资料

0. 文中用到的代码

https://github.com/JiJingYu/tensorflow-exercise/tree/master/HSI_evaluate

1. 文中提到的函数的文档

http://scikit-image.org/docs/stable/api/skimage.measure.html#compare-mse

2. PSNR维基百科链接

https://en.wikipedia.org/wiki/Peak_signal-to-noise_ratio

3. SSIM参考文献

[R326] Wang, Z., Bovik, A. C., Sheikh, H. R., & Simoncelli, E. P. (2004). Image quality assessment: From error visibility to structural similarity. IEEE Transactions on Image Processing, 13, 600-612. https://ece.uwaterloo.ca/~z70wang/publications/ssim.pdf , DOI:10.1.1.11.2477

[R327] Avanaki, A. N. (2009). Exact global histogram specification optimized for structural similarity. Optical Review, 16, 613-621. http://arxiv.org/abs/0901.0065 , DOI:10.1007/s10043-009-0119-z

转载于:https://www.cnblogs.com/nwpuxuezha/p/6659153.html


http://www.taodudu.cc/news/show-1916884.html

相关文章:

  • 苹果手机充电口接触不良怎么办_用了HOU吼猴3C数码配件让手机充电口不再接触不良...
  • python怎么判断日期是星期几_【Java编程基本功】(八)逆序输出、是否为回文数,判断星期几,升序排列...
  • uniapp ios时间戳获取不到_个人小程序uniapp实战开发(三):数据库设计与文章列表...
  • python怎么获取lol皮肤名称_英雄联盟手游免费皮肤获取攻略 LOL免费皮肤怎么得...
  • 钢琴块2电脑版_包租婆租赁合同管理系统电脑版|包租婆租赁合同管理系统PC版下载_v10.3.5.2...
  • 词云中去重复的词_今天从零教你开始利用Python打造词云图!
  • 换了路由器电脑都连不上网了_高校连上网自由都实现不了?三大运营商:这锅我不背...
  • python pywinauto 单击鼠标_10分钟教你用 Python 控制键盘和鼠标
  • pands 画图 调整大小_两个精品案例解释机械设计的步骤,有思路,再着手画图...
  • h5 px 转dp_西游女儿国h5手游下载-西游女儿国h5手游下载v2.1.4 安卓版
  • 自带flash的浏览器_受够了手机自带浏览器?来看看这些超实用的不常用浏览器...
  • cfile read 最大读取限制_Read文件一个字节实际会发生多大的磁盘IO?
  • python 英文字典-python如何制作英文字典
  • 360怎么看电脑配置_电脑配置清单速查表-AMD
  • ai 2.5d插件_【插画AI教程】从0到1,学会16 种热门插画设计风格!
  • 怎么通过当地时区计算格林尼治_时间规划局:时间能看到,标注在你的手臂上,那时的你会怎么样...
  • mplfinance画k线图_华尔街交易王:真正短线高手是寻找60分钟K线中的“牛股”
  • iphone怎么查看wifi密码_怎么查看电脑连接的wifi密码?2种方法分享给大家!
  • 电脑f2还原系统步骤_电脑还原系统方法步骤详解
  • 苹果手机怎么在照片上添加文字_不管用什么手机,这样操作一下,就能直接给照片添加文字...
  • simplex字体下载cad_CAD字体大全【资料下载】
  • typescript面试题_vue 248+个知识点(面试题)为你保驾护航
  • datalist获取id传到下一个页面_如何在 Serverless 架构下优雅上传文件?
  • linux重新初始化mysql 并修改大小写铭感_在Linux(Centos 7)环境下安装Mysql的完整过程...
  • floyd算法求最短路径_算法题-蜜蜂采蜜最短路径
  • 无法定位程序输入点 except_python自制王者荣耀抽卡程序
  • C# 如何检测UDP是否被占用_如何悄悄检测微信好友是否被删除?
  • python爬虫下载文件到指定文件夹_python爬虫: 从 指定路径 爬取 文件
  • python列表嵌套字典取值_Python学习100天-Day03(字符串、列表、字典、元组)
  • python 生成器_彻底理解 Python 生成器

常用评价指标及其Python实现相关推荐

  1. python评价指标_详解分类评价指标和回归评价指标以及Python代码实现

    这篇文章介绍的内容是详解分类评价指标和回归评价指标以及Python代码实现,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下. 1.概念 性能度量(评价)指标,主分为两大类: 1)分类评价 ...

  2. 机器学习模型常用评价指标(Accuracy, Precision, Recall、F1-score、MSE、RMSE、MAE、R方)

    前言 众所周知,机器学习分类模型常用评价指标有Accuracy, Precision, Recall和F1-score,而回归模型最常用指标有MAE和RMSE.但是我们真正了解这些评价指标的意义吗? ...

  3. python实现中撤销上一步的代码mac_一个“MacBook”新手的Python“笨办法”自学之旅 #第六章:常用的简易Python命令、符号、代码、格式化字符串...

    第六章:常用的简易Python命令.符号.代码.字符串 <"笨办法"学Python>这本书中,确实用了较多篇幅来介绍Python的一些常用简单的命令.符号.代码和字符串 ...

  4. 错误类型、混淆矩阵及目标检测常用评价指标

    目标检测常用评价指标 本文主要参考陈恺大佬在B站商汤账号的介绍mmdetection的视频. 检测结果的正确/错误类型 真阳性(Ture Positive):算法检测到了某类物体(Positive), ...

  5. 《统计学习方法》读书笔记——机器学习常用评价指标

    传送门 <统计学习方法>读书笔记--机器学习常用评价指标 <统计学习方法>读书笔记--感知机(原理+代码实现) <统计学习方法>读书笔记--K近邻法(原理+代码实现 ...

  6. 预测评价系统_「机器学习」一文读懂分类算法常用评价指标

    前言 评价指标是针对将相同的数据,输入不同的算法模型,或者输入不同参数的同一种算法模型,而给出这个算法或者参数好坏的定量指标. 在模型评估过程中,往往需要使用多种不同的指标进行评估,在诸多的评价指标中 ...

  7. python的第三方库是干什么用的-quot;别人造好的轮子”,python常用第三方库——python自动办公7...

    下载好向圈APP可以快速联系圈友 您需要 登录 才可以下载或查看,没有帐号?立即注册 x 前记:这是分享和记录我个人自动化办公技能的一系列文章,意在让的小伙伴们看后能够有所帮助和长大.我们都不是专业的 ...

  8. 知识图谱常用评价指标:MRR,MR,HITS@K,Recall@K,Precision@K

    一.MRR MRR的全称是Mean Reciprocal Ranking(排名的倒数),其中Reciprocal是指"倒数的"的意思.该指标越大越好(即预测排名越靠前,倒数就越大, ...

  9. 模型评价 - 分类模型的常用评价指标

    分类模型的常用评价指标 基本指标:误差率 指标解释:错分类样本占总样本的比例 基本指标:准确率 指标解释:正确分类样本占总样本的比例 指标解读:准确率越接近1,模型越准确 混淆矩阵 真实情况 预测:正 ...

  10. 模型评价 - 回归模型的常用评价指标

    回归模型的常用评价指标 样本误差:衡量模型在一个样本上的预测准确性 样本误差 = 样本预测值 - 样本实际值 最常用的评价指标:均误差方(MSE) 指标解释:所有样本的样本误差的平方的均值 指标解读: ...

最新文章

  1. 微信公众号基本信息配置
  2. 把佳佳的博客搬出去了
  3. boost::geometry::tuples用法的测试程序
  4. Web服务 源码编译安装LAMP架构
  5. C# 7.1先睹为快(第一部分)
  6. 用户体验五要素_UX系列课(三):用户体验影响力金字塔及五大要素
  7. 程序员自我提高情绪10招
  8. TensorFlow2 Win
  9. J2EE MVC模式框架中,表单数据绑定功能不安全实现在Tomcat下造成的DoS及RCE
  10. linux 软件查询,linux安装常用软件和查询基本信息
  11. java定时任务Quartz整理
  12. bypassing waf's in sql injection
  13. 十大著名黑客——George Hotz
  14. android 入侵检测系统,基于行为模式的Android平台入侵检测系统的设计与实现
  15. (轉貼) 寶蘭開發工具部門將分割成完全獨立的子公司 (C/C++) (News)
  16. python灰色预测_python实现灰色预测模型(GM11)——以预测股票收盘价为例
  17. ACDSee Photo Studio 5 for Mac v5.2.1151 图片管理中文汉化下载
  18. WindbgX64和WinxpSp3虚拟机双击调试的参数设置
  19. hexo主题编写(如何编写Hexo主题)
  20. 一个图形爱好者的书架

热门文章

  1. 使用web.xml控制Web应用的行为
  2. 小程序学习笔记(8)-导航组件
  3. Oracle数据库链接源文件
  4. git revert 之后怎么撤销_Git撤销回滚操作(git reset 和 get revert)
  5. 把php文件全改为html文件,怎么把动态的php文件转换成静态的html文件,html文件是php文件…...
  6. androidstudio自动生成变量_Android Studio 安装教程
  7. mysql八大知识点_MySQL索引八大法则之上篇
  8. 学linux哪个版本号,初学Linux哪个发行版本好?这些更合适!
  9. JDBC中数据库连接池的使用与传统方式的比较
  10. Introduction to Computer Networking学习笔记(六):TCP连接断开实例;TCP与UDP特点