(论文分析) 图像相似度和图像可见性分析,即SSIM

这篇是论文   Image Quality Assessment: From Error Visibility to Structural Similarity    的解读

源链接https://www.cnblogs.com/jian-hello/p/3552108.html

1. 结构相似度

 

这篇文章的研究背景是建立一个衡量图像质量好坏的测量准则。客观图像质量测量分为两种,一种是使用参考标准图像,另一种是无参考标准图像。而本文是第一种类型的客观图像质量测量。

 

假设人类视觉系统(HVS)倾向于抽取结构化信息。

 

遭到批评的算法:

一幅图像的信号可以理解称为一幅无噪声信号图像(Refference Image Signal)和一幅误差信号(Error Image Signal)。主观感觉上的图像质量的丢失与误差信号(Error Signal)的可见性紧密相关。最简单的一种测量方式就是MSE,但是两个拥有相同MSE的受干扰图像可能有非常不同的误差类型,它们中的一些可能比另一些更加可见的。大多数的这种图像质量估计方法都试图根据所关心的误差的可见性对其进行加权。

 

基于误差可见性的图像质量估计方法的通用框架

 

 

预处理阶段(Pre processing)

(1)对受干扰图像和参考图像进行适当的放缩和对齐

(2)转换到一个适合于HVS的颜色空间

(3)quality assessment metrics may need to convert the digital pixel values stored in the computer memory into luminance values of pixels on the display device through point wise nonlinear transformations.

(4)使用模拟eye optics 的点分布功能(point spread function)的低通滤波器

(5)对两幅图像使用一个非线性操作来模拟光照(light adaptation)

 

 

CSF 滤波(CSF filtering)

The contrast sensitivity function(CSF) 描绘了HVS对在视觉冲击中呈现出的不同空间时间频率的敏感度。一些图像质量评估方法将要根据这个函数进行加权。但是许多最新的测量方法选择将CSF看作一个敏感性规范化因子。

 

 

通道分解(Channel Decomposition)

图像根据空间时间频率以及方向分解到一些子带中去。尽管一些质量估计方法执行复杂的通道分解,其相信它们与神经响应紧密相连,但是大量的方法使用如DCT等简单的变换。

 

误差规范化(Error Normalization)

在参考图像和受干扰图像之间的差异根据一个masking model进行计算。这一差异考虑了这一事实,一个图像内容的出现将要降低在其空间或时间,空间频率或方向附近出现的另一个内容的可见性。

 

Normalization 过程就是打算将误差转换到Just noticeable difference 单位。

 

Masking Model 似乎很有意思:

为了能说清楚以下这些模型如何操作,我们将以JPEG 的DCT量化为背景进行,首先说一下这个背景知识:

图像压缩一般是这样进行的,将图像分成若干个8*8的块。每块都进行DCT变换,从而形成,其中i,j是DCT的频率的索引,k是这幅图像所分成的块的索引。每一块利用一个量化矩阵进行量化(),

量化误差使用如下的公式进行计算:

从人眼的特性以及心理学来讲,对于每个频率i,j,可以产生一个可见的信号的阈值是。也就是说,只有频率系数超过这个阈值,才可以产生一个能够被人感知的信号。最大可能的量化误差

于是为了使误差不可见,我们需要设置:

 

从上面的分析我们可以看到,阈值是独立于图像的。下面这些方法是告诉我们可以如何为每一块图像进行量化,从而使压缩率相同的情况下,图像质量更加。

 

 

Luminance Masking

上面这一组图像中每一个有同样的幅度,但是有不同的均值。左侧的亮度最小,右侧的亮度最大。正如所见,在左侧的图像中,内容可见性更强。这也就是说,当平均亮度更高时,区域内同等程度的变化只能产生较小的对比度(可见性较差)。

举例来说,量化到223~200比量化到123~100,区域中的内容可见性较低。因而我们有这样的想法,在亮度值大的区域,设定的阈值更大,从而量化程度更大。这主要是因为在这些区域里,图像细节不易被人眼识别。基于这样的想法,Andrew B.Watson设计了这样一个公式:

其中相当于平均亮度值(DCT变换中的第一个系数)。从这个公式中可以看出,平均亮度越大(越大),阈值越大,量化值越大。

 

 

Contrast Masking

原理介绍:当一个图像内容位于有相似空间频率和方向的图像内容区域,这个图像内容将要对人眼不可见。由于DCT变换的特性,DCT系数矩阵中的每个系数表示着在8×8区域块中特定空间频率和方向。一个DCT系数值越大,那么在这个块中,特定的空间频率和方向的内容出现更多。

 

基于这样的想法Andrew B.Watson设计了如下的公式:

 

Noise Masking

Mutural Masking

 

如何实际使用这些遮挡模型呢?需要进一步分析.

 

Reference:

(1)Perceptual quality metrics applied to still image compression

(2)DCTune: A technique for visual optimization of DCT Quantization matrices for individual images

(3)http://scien.stanford.edu/pages/labsite/1998/psych221/projects/98/dctune/yuke/index.htm

 

 

Just noticeable difference (JND) 

 

Error Pooling

这是质量评价模型的最后一步。它将要结合不同通道,不同空间位置的normalized error signals 到一个值。

 

 

局限性

这种模型必须基于一系列强假设:

 

(1)图像质量定义问题——误差可见性不一定等价于图像质量的损失。

(2)阈值问题——进行误差敏感性模型的心理学实验被设计来估计一个冲击响应仅仅可见时的阈值。这些测量阈值可以用来idngyi可见误差的敏感性例如,CSF和各种Masking Effects。但是否可以将这样模型扩展到来刻画失真程度(人类主观感觉),不清楚。

(3)自然图像的复杂问题——大量的心里学实验都是针对简单模式进行的,例如spots, bars, sinusoidal gratings。the SCF is typically obtained from threshold experiments using global sinusoidal images. The masking phenomena are usually characterized using a superposition of two different patterns.

(4)不相关问题——当我们选择上面Error Pooling中的计算式时,我们已经架设在不同位置上的error是统计独立的。但事实上并不是这样。

(5)理解交互问题(Cognitive Interaction Problem)——认知和交互视觉问题将要影响对图像质量的理解。

 

 

称赞自己的算法:

基本想法

自然图像信号是高度结构化的:像素之间呈现出很强的依赖性,特别是在它们空间邻近时,这些依赖性携带着关于目标的结构信息。

如何提取这些结构信息呢?这就是这篇论文的关键。

 

The Structural SIMilarity(SSIM) Index

 

作者定义在一副图像中的结构信息代表着独立于平均亮度及对比度的对象(object)的结构。作者将结构相似性分为三个部分:(1)luminance;(2)contrast;(3)structure。

(1)luminance

 

 

(2)contrast

(3)structure

 

将三个成分结合从而产生一个相似度测量

 

Reference: Image Quality Assessment: From Error Visibility to Structural Similarity

 

2. FSIM 基于特征相似度的图像质量估计

 

如何利用HSV的呢?

作者声称,根据心理学和生理学的证据,可察觉的特征一般位于这样的一些点上,在这些点上傅里叶变换在不同频率上有相同的相位,例如在高度相位一致性的点上的特征能更吸引人的注意。

 

(1)相位一致性(Phase Congruency)

 

PC能够被认为是一个局部特征重要性的评估量。有不同的方式来计算一副给定图像的PC map,在这篇文章中使用Kovesi的方法。

对于二维图像,可以对上面的公式进行进一步扩展得到,具体细节见论文,及相应代码。

 

问题:为什么这样定义的PC量可以说明PC值越大在这一点上的傅里叶成分的相位一致性越强呢?

 

(2)梯度幅值

 

FSIM Index

 

分为两个阶段,第一阶段针对PC的局部相似度和梯度的局部相似度计算相似度map;第二阶段结合两个相似度map到一个相似度分数。

第一阶段:

 

第二阶段:

 

由于在一个位置的PC值反应着在这个点上的结构信息能够被人识别的程度。因为可以利用这个进行加权,

这个值越大说明,当前所测试的图像越接近参考图像。

 

Reference: FSIM A Feature Similarity Index for Image Quality Assessment

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: PSNR(Peak Signal-to-Noise Ratio)和SSIM(Structural Similarity Index)是用来衡量两幅图像之间相似度的指标。 PSNR是使用峰值信噪比来度量图像质量的一种方法。它使用均方误差(MSE)来衡量两幅图像之间的差异,MSE越小代表图像之间的差异越小,相似度越高。PSNR计算公式为: PSNR = 10 * log10((255^2) / MSE) 其中255是像素值的最大可能值,MSE为两幅图像像素之间差值的平方和的平均值。 SSIM是一种结构相似指数,它不仅考虑了亮度的差异,还考虑了对比度和结构的差异。SSIM计算公式为: SSIM = (2 * μx * μy + c1) * (2 * σxy + c2) / ((μx^2 + μy^2 + c1) * (σx^2 + σy^2 + c2)) 其中μx和μy分别是两幅图像的平均值,σx^2和σy^2分别是两幅图像的方差,σxy是两幅图像的协方差,c1和c2是预定义的常数,用来避免分母为零的情况。 在MATLAB中,可以使用相关函数来计算PSNR和SSIM。比如,使用函数`imread`读取两幅图像,然后使用函数`imresize`来确保图像的大小一致,再使用函数`psnr`来计算PSNR,使用函数`ssim`来计算SSIM。 示例代码如下: ```matlab image1 = imread('image1.jpg'); image2 = imread('image2.jpg'); image1 = imresize(image1, size(image2)); % 确保图像大小一致 psnrValue = psnr(image1, image2); ssimValue = ssim(image1, image2); ``` 以上代码读取了两幅图像,并将它们的大小调整为一致,然后分别计算了PSNR和SSIM的值。 希望以上内容对您有所帮助。 ### 回答2: 图像相似度PSNR(Peak Signal-to-Noise Ratio)和SSIM(Structural Similarity Index)是常用于评估图像质量的指标,用于度量两幅图像之间的相似程度。以下是使用Matlab实现这两种相似度指标的方法: 1. PSNR实现: PSNR是通过比较原始图像和重建图像的均方误差来评估图像质量的。在Matlab中,可以使用以下代码计算PSNR: ```matlab % 读取原始图像和重建图像 originalImage = imread('原始图像路径'); reconstructedImage = imread('重建图像路径'); % 计算MSE(均方误差) mse = sum(sum((double(originalImage) - double(reconstructedImage)).^2)) / (numel(originalImage)); % 计算PSNR psnr = 10 * log10((255^2) / mse); ``` 2. SSIM实现: SSIM通过比较原始图像和重建图像的亮度、对比度和结构相似来评估图像质量的。在Matlab中,可以使用以下代码计算SSIM: ```matlab % 读取原始图像和重建图像 originalImage = imread('原始图像路径'); reconstructedImage = imread('重建图像路径'); % 计算SSIM [ssimValue, ~] = ssim(originalImage, reconstructedImage); ``` 需要注意的是,上述代码中的图像路径需要根据实际情况进行修改,同时保证原始图像和重建图像具有相同的大小。 这样就可以使用Matlab来实现图像相似度PSNR和SSIM的计算了。 ### 回答3: 图像相似度是用来衡量两幅图像之间的相似程度的一种指标。PSNR(Peak Signal-to-Noise Ratio)和SSIM(Structural Similarity Index)是常用的图像相似度评价方法。在Matlab中,可以通过以下步骤实现这两种方法的计算。 首先,对于PSNR,可以通过以下几个步骤实现: 1. 使用imread函数读取待比较的两幅图像,分别命名为img1和img2。 2. 使用im2double函数将图像转换为double类型的数据,并将像素值缩放到0-1范围内。 3. 计算两幅图像的均方误差(MSE),可以通过以下代码实现: mse = sum(sum((img1 - img2).^2)) / numel(img1); 其中,.^2表示对每个元素进行平方运算,numel函数用于计算图像的像素总数。 4. 计算PSNR值,使用以下代码实现: psnr = 10 * log10(1^2 / mse); 其中,1表示图像的最大像素值。 其次,对于SSIM,可以通过以下几个步骤实现: 1. 使用ssim函数计算两幅图像SSIM指数,可以通过以下代码实现: ssim_val = ssim(img1, img2); 其中,img1和img2为待比较的两幅图像。 2. 处理ssim_val的输出结果。 通过以上步骤,我们可以得到两幅图像之间的PSNR和SSIM值。这些值越高,表示两幅图像相似度越高。需要注意的是,这两种方法都只能用于评价图像在感知上的相似度,并不能完全代替人眼对图像的主观判断。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值