SSIM计算相关问题

一、概念

结构相似性指数(SSIM)是一种图像相似性度量方法,旨在评估两个图像之间的质量差异。该指数由三个方面组成,包括亮度(Luminance)、对比度(Contrast)和结构(Structure),综合考虑了这些方面的信息。SSIM值范围在[-1, 1]之间,值越接近1表示两个图像越相似。SSIM的公式如下:

在计算两张图像的结构相似性指标时,会开一个局部性的视窗,一般为N×N的小区块,计算出视窗内信号的结构相似性指标,每次以像素为单位移动视窗,直到整张图像每个位置的局部结构相似性指标都计算完毕。将全部的局部结构相似性指标平均起来即为两张图像的结构相似性指标。

SSIM优点:1)多维度评价: SSIM不仅考虑了亮度的一致性,还考虑了对比度和结构的一致性,使其更符合人眼主观感知。2)对亮度、对比度和结构敏感: SSIM能够捕捉图像中细微的亮度、对比度和结构变化,对于某些应用场景更为准确。

SSIM缺点:1)不适用于所有图像: 对于某些特殊图像(如自然图像和医学图像),SSIM可能不够灵活,对图像的变化不敏感。2)灰度不变性: SSIM对于灰度变化比较敏感,对灰度差异较大的图像评价可能不够准确。3)参数选择敏感: SSIM的计算中涉及到一些参数,选择不当可能导致评价结果不准确。

二、计算中遇到的问题

我的计算背景是一张地形图和一张重力异常图,两张图的数值差异比较大,但结构相似性很高。

两张图的数值差异体现在均值,标准差等统计量差异比较大。因此在计算SSIM的时候如果不进行预处理,结果值会很低。 

Gravity Image Statistics:
Mean: -6.776093420251682
Standard Deviation: 27.636145432293432
Maximum Value: 98.31195
Minimum Value: -194.399

DEM Image Statistics:
Mean: 3839.7825
Standard Deviation:1649.0690918
Maximum Value: 8627
Minimum Value: 195

计算过程中遇了两个问题,分别是

1)nan值问题

        !!留意两幅图像本身的灰度值

        为了保证两个图片大小一致,我的重力异常图是根据高程图的大小插值得到的,但没注意,插值出来的重力异常图没插完整,导致了SSIM的nan值

        于是我修改了插值方法,由linear--nearest

        问题解决

2)SSIM值很小

        !!进行图像预处理

        我所进行的预处理包括1)归一化;2)线性拉伸

def normalize(image):
    # 归一化图像到 [0, 1] 范围
    normalized_image = (image - image.min()) / (image.max() - image.min())
    return normalized_image

def linear_stretch(image, new_min=0, new_max=1):
    # 线性拉伸
    stretched_image = (image - image.min()) / (image.max() - image.min()) * (new_max - new_min) + new_min
    return stretched_image

# 对 image_gravity 进行归一化和线性拉伸
normalized_gravity = normalize(image_gravity)
stretched_gravity = linear_stretch(normalized_gravity)

# 对 image_dem 进行归一化和线性拉伸
normalized_dem = normalize(image_dem)
stretched_dem = linear_stretch(normalized_dem)

得到最后的结果如下:

SSIM=0.7068189489964385

  • 18
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值