Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用多规格和R进行批处理图像分析_R_Batch Processing_Imaging - Fatal编程技术网

使用多规格和R进行批处理图像分析

使用多规格和R进行批处理图像分析,r,batch-processing,imaging,R,Batch Processing,Imaging,是否可以使用R通过多规格(或任何其他程序-不包括ImageJ)而不是单个图像分析来运行一批图像 如果是这样,怎么办 我通过以下链接附上了我想要的图片: "" “” “编辑”图像是“ms485_a7c5,c3aR 40x gm 1.tif”的副本,带有我正在搜索的突出显示框 蓝色圆圈周围的黑匣子是我正在寻找的一组数据,特别是它们在图像中的数量以及它们覆盖的图像面积百分比。 合并后的蓝色和棕色区域周围的红色框也是我特别想要的,它们的值与上面所需的值相同。 最后,图像中的棕色区域也是我要寻找的,但仅限

是否可以使用R通过多规格(或任何其他程序-不包括ImageJ)而不是单个图像分析来运行一批图像

如果是这样,怎么办

我通过以下链接附上了我想要的图片: "" “”

“编辑”图像是“ms485_a7c5,c3aR 40x gm 1.tif”的副本,带有我正在搜索的突出显示框

蓝色圆圈周围的黑匣子是我正在寻找的一组数据,特别是它们在图像中的数量以及它们覆盖的图像面积百分比。 合并后的蓝色和棕色区域周围的红色框也是我特别想要的,它们的值与上面所需的值相同。 最后,图像中的棕色区域也是我要寻找的,但仅限于图像中覆盖的%区域

我能够在多规格上对1张图像进行分析,但我需要在1000多张图像上进行分析,我无法做到这一点,因为我不熟悉R或其他编码程序


提前感谢

所以,我不知道这会让你走多远,但在你的记忆范围内,一次处理一张图像应该是可行的。概述的方法是应用于图像的最基本阈值。可以采用更加复杂的方法:

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