使用多规格和R进行批处理图像分析
是否可以使用R通过多规格(或任何其他程序-不包括ImageJ)而不是单个图像分析来运行一批图像 如果是这样,怎么办 我通过以下链接附上了我想要的图片: "" “” “编辑”图像是“ms485_a7c5,c3aR 40x gm 1.tif”的副本,带有我正在搜索的突出显示框 蓝色圆圈周围的黑匣子是我正在寻找的一组数据,特别是它们在图像中的数量以及它们覆盖的图像面积百分比。 合并后的蓝色和棕色区域周围的红色框也是我特别想要的,它们的值与上面所需的值相同。 最后,图像中的棕色区域也是我要寻找的,但仅限于图像中覆盖的%区域 我能够在多规格上对1张图像进行分析,但我需要在1000多张图像上进行分析,我无法做到这一点,因为我不熟悉R或其他编码程序使用多规格和R进行批处理图像分析,r,batch-processing,imaging,R,Batch Processing,Imaging,是否可以使用R通过多规格(或任何其他程序-不包括ImageJ)而不是单个图像分析来运行一批图像 如果是这样,怎么办 我通过以下链接附上了我想要的图片: "" “” “编辑”图像是“ms485_a7c5,c3aR 40x gm 1.tif”的副本,带有我正在搜索的突出显示框 蓝色圆圈周围的黑匣子是我正在寻找的一组数据,特别是它们在图像中的数量以及它们覆盖的图像面积百分比。 合并后的蓝色和棕色区域周围的红色框也是我特别想要的,它们的值与上面所需的值相同。 最后,图像中的棕色区域也是我要寻找的,但仅限
提前感谢所以,我不知道这会让你走多远,但在你的记忆范围内,一次处理一张图像应该是可行的。概述的方法是应用于图像的最基本阈值。可以采用更加复杂的方法:
library(raster)
i <- brick("./data/ms485_a7c5_c3aR_40x_gm_1.tif")
names(i) <- c("r", "g", "b")
## Plot image:
plotRGB(i)
没有理由不假设您可以从命令行执行所需的操作。但是,仅仅将R用作批处理工具可能比它的价值更麻烦。你想解决什么样的图像处理任务?我认为你需要在这个过程中更加明确,否则你将得不到任何关于替代方案或好方法的具体建议。我关注的是细胞成像而不是卫星成像,但它有相同的原理。我有1000多张相同4种颜色(棕色、蓝色、白色和棕色重叠的蓝色)的图像,我试图观察这些细胞覆盖的表面积。我发现,与ImageJ相比,Multi Spec具有更好的优势,因为我希望在每个新图像中使用相同波长的颜色。如果需要更多信息,请发表评论。这些图片有多大?它们的格式是什么?“颜色”是固定的/分类的还是处理RGB图像?我想知道的是,您是否需要外部工具,或者是否可以直接使用
光栅
软件包…。@forrest.Stevens这些图像大约为15MB,尺寸为2600x2060像素。颜色也是固定的。有没有办法把我感兴趣的图片和属性(颜色)上传到这里?谢谢你可以将它们添加到figshare或从Dropbox链接,但你最好的选择是模拟类似的数据。听起来您想要的东西可以在R本身的几行代码中完成。你基本上只需要按颜色计算像素数?
## Here you could use a more sophisticated classification method:
#k <- kmeans(i[], centers=4, iter.max = 100, nstart = 4)
#c <- raster(i)
#c[] <- c$cluster
## Instead we'll just set some simple thresholds:
c1 <- (i$r < 170 & i$g < 140 & i$b > 150)*1 ## Blues
c2 <- (i$r > 150 & i$g > 150 & i$b > 150)*2 ## Lights
c3 <- (i$r < 170 & i$g < 150 & i$b < 140)*3 ## Darks
## Plot the classified data so you see what you're summarizing below:
plot(c, add=T, legend=F, col=c(
rgb(255, 255, 255, maxColorValue=255),
rgb(100, 100, 180, maxColorValue=255),
rgb(220, 220, 220, maxColorValue=255),
rgb(120, 100, 90, maxColorValue=255)
))
## And calculate your summary stats by class:
t <- table(c[])
names(t) <- c("Unclassified", "Blues", "Lights", "Darks")
t
## Unclassified Blues Lights Darks
## 283887 220042 4475129 376942
## Or we can calculate those cell counts as percentages of pixels:
t/ncell(c) * 100
## Unclassified Blues Lights Darks
## 5.300355 4.108327 83.553566 7.037752
## To summarize distinct patches within your classified "Blues":
library(SDMTools)
## Calculate stats, and count all patches for "Blues":
class_stats <- ClassStat(c1, cellsize=1, bkgd=0)
class_stats$n.patches
## [1] 1858
## Only count patches larger than 10 pixels:
image_clusters <- ConnCompLabel( c1 )
patch_stats <- PatchStat(image_clusters, cellsize=1)
sum(patch_stats[patch_stats$patchID>0,]$n.cell > 10)
## [1] 462