【问题标题】:R packages for MS-SSIM?MS-SSIM 的 R 包?
【发布时间】:2021-05-27 15:22:38
【问题描述】:

我想用 R 做一些简单的图像比较(我不使用 python 的原因是工作流在 R 中)。我试图在 R 的包中搜索 ms-ssim 实现,但确实找到了除 spatialcompare::msssim 之外的任何实现。然而,正如我昨天在post 中提到的,我发现这个函数的结果可能与我的输入不正确(可能与matrixraster 的转换有关?)。对于适当的 ms-ssim 代码,还有更多建议吗?我实际上基于SpatialPack::SSIM 自行实现了一个,因为一次又一次地对图像进行下采样似乎很容易,但不确定我是否正确编写它。我会把它作为答案。

【问题讨论】:

    标签: r image-processing similarity image-quality ssim


    【解决方案1】:

    我的一个非常简单的 ms-ssim 的演示代码:

    calcMSSSIM<-function(Mat1,Mat2){
      weight = c(0.0448, 0.2856, 0.3001, 0.2363, 0.1333)
      level<-5
      array<-c()
      ssim<-SpatialPack::SSIM(Mat1, Mat2, alpha=1, beta=1, gamma=1,
                        eps=c(0.01,0.03), L=max(tmp1,tmp2))$SSIM  
      array[1]<-ssim$comps["contrast"]*ssim$comps["structure"]
      result<-abs(array[1])^weight[1]
      for (i in 2:level) {
        tmp1 <- EBImage::resize(tmp1, w=dim(tmp1)[1]/2, filter="none")
        tmp2 <- EBImage::resize(tmp2, w=dim(tmp2)[1]/2, filter="none")
        ssim <- SpatialPack::SSIM(tmp1,tmp2,alpha=1, beta=1, gamma=1, 
                                 eps=c(0.01,0.03), L=max(tmp1,tmp2))$SSIM
        array[i]<-ssim$comps["contrast"]*ssim$comps["structure"]
        result <- result*abs(array[i])^weight[i]
      }
      lum<-ssim$comps["luminance"]
      result<-result*lum^weight[i]
      return(list(array,result))
    }
    

    对吗?

    【讨论】:

      猜你喜欢
      • 2016-12-27
      • 2018-07-22
      • 2019-12-12
      • 1970-01-01
      • 2023-04-04
      • 2020-02-24
      • 1970-01-01
      • 2020-01-27
      • 2019-05-24
      相关资源
      最近更新 更多