首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于MS-SSIM的R包?

用于MS-SSIM的R包?
EN

Stack Overflow用户
提问于 2021-02-25 17:16:51
回答 1查看 22关注 0票数 0

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

EN

回答 1

Stack Overflow用户

发布于 2021-02-25 17:16:51

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

代码语言:javascript
复制
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))
}

这是正确的吗?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66365598

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档