SSIM(structural similarity index),结构相似性「建议收藏」

SSIM(structural similarity index),结构相似性「建议收藏」ssim算法原理-我们都不是神的孩子-CSDN博客http://blog.csdn.net/ecnu18918079120/article/details/60149864一、结构相似性(structuralsimilarity)自然图像具有极高的结构性,表现在图像的像素间存在着很强

大家好,欢迎来到IT知识分享网。

ssim算法原理 – 我们都不是神的孩子 – CSDN博客 http://blog.csdn.net/ecnu18918079120/article/details/60149864

 

 

一、结构相似性(structural similarity)

      自然图像具有极高的结构性,表现在图像的像素间存在着很强的相关性,尤其是在空间相似的情况下。这些相关性在视觉场景中携带着关于物体结构的重要信息。我们假设人类视觉系统(HSV)主要从可视区域内获取结构信息。所以通过探测结构信息是否改变来感知图像失真的近似信息。
    大多数的基于误差敏感度(error sensitivity)的质量评估方法(如MSE,PSNR)使用线性变换来分解图像信号,这不会涉及到相关性。我们要讨论的SSIM就是要找到更加直接的方法来比较失真图像和参考图像的结构。

二、SSIM指数

    物体表面的亮度信息与照度和反射系数有关,且场景中的物体的结构与照度是独立的,反射系数与物体有关。我们可以通过分离照度对物体的影响来探索一张图像中的结构信息。
这里,把与物体结构相关的亮度和对比度作为图像中结构信息的定义。因为一个场景中的亮度和对比度总是在变化的,所以我们可以通过分别对局部的处理来得到更精确的结果。
                 
SSIM(structural similarity index),结构相似性「建议收藏」 
      由SSIM测量系统可得相似度的测量可由三种对比模块组成,分别为:亮度,对比度,结构。接下来我们将会对这三模块函数进行定义。
      首先,对于离散信号,我们以平均灰度来作为亮度测量的估计:
                                          
SSIM(structural similarity index),结构相似性「建议收藏」             (1)
       亮度对比函数l(x,y)是关于
SSIM(structural similarity index),结构相似性「建议收藏」的函数。
       然后,由测量系统知道要把平均灰度值从信号中去除,对于离散信号
SSIM(structural similarity index),结构相似性「建议收藏」,可使用标准差来做对比度估量值。
                                  
SSIM(structural similarity index),结构相似性「建议收藏」      (2)
       对比度对比函数c(x,y)就是
SSIM(structural similarity index),结构相似性「建议收藏」的函数。
       接下来,信号被自己的标准差相除,结构对比函数就被定义成
SSIM(structural similarity index),结构相似性「建议收藏」
SSIM(structural similarity index),结构相似性「建议收藏」的函数。
       最后,三个对比模块组合成一个完整的相似测量函数:
                             
SSIM(structural similarity index),结构相似性「建议收藏」       (3)
       
       S(x,y)应该满足以下三个条件:
       (1) 对称性:
SSIM(structural similarity index),结构相似性「建议收藏」
       (2) 有界性:
SSIM(structural similarity index),结构相似性「建议收藏」
       (3) 最大值唯一性:当且仅当x=y时,S(x,y)=1 。
      
       现在,我们定义三个对比函数。
       亮度对比函数:
                            
SSIM(structural similarity index),结构相似性「建议收藏」                      (4)
       常数
SSIM(structural similarity index),结构相似性「建议收藏」是为了避免
SSIM(structural similarity index),结构相似性「建议收藏」接近0时造成系统的不稳定。
       特别的,我们选择
SSIM(structural similarity index),结构相似性「建议收藏」,L为图像灰度级数,对于8-bit灰度图像,L=255,
SSIM(structural similarity index),结构相似性「建议收藏」。公式(4)满足上述三个条件。
       对比度对比函数:
                           
SSIM(structural similarity index),结构相似性「建议收藏」                        (5)
       常数
SSIM(structural similarity index),结构相似性「建议收藏」,且
SSIM(structural similarity index),结构相似性「建议收藏」。公式(5)依然满足上述三个条件。
       结构对比函数:
                           
SSIM(structural similarity index),结构相似性「建议收藏」                          (6)
       其中
                      
SSIM(structural similarity index),结构相似性「建议收藏」                   (7)
      最后把三个函数组合起来,得到SSIM指数函数:
                      
SSIM(structural similarity index),结构相似性「建议收藏」             (8)
      这里
SSIM(structural similarity index),结构相似性「建议收藏」,用来调整三个模块间的重要性。
      为了得到简化形式,设
SSIM(structural similarity index),结构相似性「建议收藏」,得到:
                     
SSIM(structural similarity index),结构相似性「建议收藏」            (9)
 

三、SSIM指数应用于图像质量评估

   在图像质量评估之中,局部求SSIM指数的效果要好于全局。第一,图像的统计特征通常在空间中分布不均;第二,图像的失真情况在空间中也是变化的;第三,在正常视距内,人们只能将视线聚焦在图像的一个区域内,所以局部处理更符合人类视觉系统的特点;第四,局部质量检测能得到图片空间质量变化的映射矩阵,结果可服务到其他应用中。
     所以,在上述公式中,
SSIM(structural similarity index),结构相似性「建议收藏」都加入了一个8*8的方形窗,并且逐像素的遍历整幅图片。每一步计算,
SSIM(structural similarity index),结构相似性「建议收藏」和SSIM都是基于窗口内像素的,最终得到一个SSIM指数映射矩阵,由局部SSIM指数组成。然而,简单的加窗会使映射矩阵出现不良的“分块”效应。为解决这问题,我们使用11*11的对称高斯加权函数
SSIM(structural similarity index),结构相似性「建议收藏」作为加权窗口,标准差为1.5,且
                                   
SSIM(structural similarity index),结构相似性「建议收藏」              (10)
 

SSIM(structural similarity index),结构相似性「建议收藏」的估计值表示为:
                                 
SSIM(structural similarity index),结构相似性「建议收藏」              (11)
                         
SSIM(structural similarity index),结构相似性「建议收藏」         (12)
                          
SSIM(structural similarity index),结构相似性「建议收藏」     (13)
       应用这种加窗方法,映射矩阵就可展现出局部各向同性的性质。
       在这里,经过一些实验总结,我们把K1设为0.01,K2设为0.03,然后用平均SSIM指数作为整幅图像的估计质量评价:
                 
SSIM(structural similarity index),结构相似性「建议收藏」   (14)
其中X,Y为图像,
SSIM(structural similarity index),结构相似性「建议收藏」为局部SSIM指数在映射中的位置,MN为局部窗口的数量。
 
     
四、matlab实现
[plain] 
view plain 
copy

 
 

  1. function [mssim, ssim_map,siga_sq,sigb_sq] = SSIM(ima, imb)  
  2. % ========================================================================  
  3. %ssim的算法主要参考如下论文:  
  4. %Z. Wang, A. C. Bovik, H. R. Sheikh, and E. P. Simoncelli, “Image  
  5. % quality assessment: From error visibility to structural similarity,”  
  6. % IEEE Transactios on Image Processing, vol. 13, no. 4, pp. 600-612,  
  7. % Apr. 2004.  
  8. %  首先对图像加窗处理,w=fspecial(‘gaussian’, 11, 1.5);  
  9. %                 (2*ua*ub+C1)*(2*sigmaa*sigmab+C2)  
  10. %   SSIM(A,B)=————————————————————————  
  11. %              (ua*ua+ub*ub+C1)(sigmaa*sigmaa+sigmab*sigmab+C2)  
  12. %     C1=(K1*L);  
  13. %     C2=(K2*L);   K1=0.01,K2=0.03  
  14. %     L为灰度级数,L=255  
  15. %——————————————————————-  
  16. %     ima – 比较图像A  
  17. %     imb – 比较图像B  
  18. %  
  19. % ssim_map – 各加窗后得到的SSIM(A,B|w)组成的映射矩阵  
  20. %    mssim – 对加窗得到的SSIM(A,B|w)求平均,即最终的SSIM(A,B)  
  21. %  siga_sq – 图像A各窗口内灰度值的方差  
  22. %  sigb_sq – 图像B各窗口内灰度值的方差  
  23. %——————————————————————-  
  24. %  Cool_ben  
  25. %========================================================================  
  26.   
  27. w = fspecial(‘gaussian’, 11, 1.5);  %window 加窗  
  28. K(1) = 0.01;                      
  29. K(2) = 0.03;                      
  30. L = 255;       
  31. ima = double(ima);  
  32. imb = double(imb);  
  33.   
  34. C1 = (K(1)*L)^2;  
  35. C2 = (K(2)*L)^2;  
  36. w = w/sum(sum(w));  
  37.   
  38. ua   = filter2(w, ima, ‘valid’);%对窗口内并没有进行平均处理,而是与高斯卷积,  
  39. ub   = filter2(w, imb, ‘valid’); % 类似加权平均  
  40. ua_sq = ua.*ua;  
  41. ub_sq = ub.*ub;  
  42. ua_ub = ua.*ub;  
  43. siga_sq = filter2(w, ima.*ima, ‘valid’) – ua_sq;  
  44. sigb_sq = filter2(w, imb.*imb, ‘valid’) – ub_sq;  
  45. sigab = filter2(w, ima.*imb, ‘valid’) – ua_ub;  
  46.   
  47. ssim_map = ((2*ua_ub + C1).*(2*sigab + C2))./((ua_sq + ub_sq + C1).*(siga_sq + sigb_sq + C2));  
  48.   
  49.   
  50. mssim = mean2(ssim_map);  
  51.   
  52. return  
 

 

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/28227.html

(0)

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信