我正在寻找一种计算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必须是数组
我非常感谢这个项目的帮助。谢谢!