使用R计算许多图像之间的相似系数(DICE)

时间:2018-02-15 14:17:35

标签: r image-processing vector similarity coefficients

我正在寻找一种计算2个文件之间相似性指数的方法,但是,我有近100个文件可供比较。为了使这个过程更容易,我开始只使用其中的10个。我需要将两个图像作为矩阵(图像及其基本事实)加载,以应用找到相似系数的方法。我决定使用R语言这样做,因为我已经有一些数据分析工作正常。所以,这是代码:

library(EBImage)
library(Matrix)
    filessegIm <- list.files(path = "~/Dropbox/Codigos/original.codes/images/experiments/results", pattern = "jpg")
    filesgrndTruth <- list.files(path = "~/Dropbox/Codigos/original.codes/images/experiments/grndTruth", pattern = "jpg")
    filessegIm <- filessegIm[1:10]
    filesgrndTruth <- filesgrndTruth[1:10]

以下是数据输出:

filessegIm
 [1] "ISIC_0000000_outRegions.jpg" "ISIC_0000008_outRegions.jpg"
 [3] "ISIC_0000017_outRegions.jpg" "ISIC_0000080_outRegions.jpg"
 [5] "ISIC_0000089_outRegions.jpg" "ISIC_0000211_outRegions.jpg"
 [7] "ISIC_0000243_outRegions.jpg" "ISIC_0000397_outRegions.jpg"
 [9] "ISIC_0000548_outRegions.jpg" "ISIC_0001106_outRegions.jpg"
filesgrndTruth
 [1] "ISIC_0000000_Segmentation.jpg" "ISIC_0000008_Segmentation.jpg"
 [3] "ISIC_0000017_Segmentation.jpg" "ISIC_0000080_Segmentation.jpg"
 [5] "ISIC_0000089_Segmentation.jpg" "ISIC_0000211_Segmentation.jpg"
 [7] "ISIC_0000243_Segmentation.jpg" "ISIC_0000397_Segmentation.jpg"
 [9] "ISIC_0000548_Segmentation.jpg" "ISIC_0001106_Segmentation.jpg"

然后,我想使用相同的矢量索引加载每个数据(实际上它是每个图像的矩阵),以对每个数据应用相似系数测量。例如,计算来自图像[1] "ISIC_0000000_outRegions.jpg"和图像[1] "ISIC_0000000_Segmentation.jpg"的矩阵之间的相似度。我试过这个解决方案:

dice <- 1:10
for (f in seq_along(filessegIm)){
  segIm[f] <- filessegIm[f]
  grndTruth[f] <- filesgrndTruth[f]
  segIm[f] <- readImage(filessegIm[f])
  grndTruth[f] <- readImage(filesgrndTruth[f])
  res[f] = 2*nnzero(segIm[f]&grndTruth[f])/(nnzero(segIm[f]) + nnzero(grndTruth[f]))
}

然而,它无法正常工作。这个for循环仅在我使用第一个向量(filessegIm)时才有效,我做了一个测试,注释了行grndTruth[f] <- filesgrndTruth[f]grndTruth[f] <- readImage(filesgrndTruth[f]),然后for循环正在工作。这是错误输出:

  

validImage(x)中的错误:object必须是数组另外:警告   消息:1:在segIm中[f]&lt; - readImage(filessegIm [f]):number of   要更换的物品不是更换长度的倍数2:In   .loadFun(files,...):显示带有调试错误的回溯重新运行   validImage(x):object必须是数组

我非常感谢这个项目的帮助。谢谢!

  • 图书馆:Matrix和EBImage
  • IDE:RStudio 1.1.419
  • R版本:R版本3.3.3
  • 平台x86_64-pc-linux-gnu
  • 操作系统:Linux Debian Jessie 8.1

0 个答案:

没有答案