EBImage包括常用的图像处理和分析功能,像图像预处理,图像拼接等,本文以给细胞分裂染色图片添加边界为例,简单演示其用法:


# 安装S
BiocManager::install("EBImage")

1)载入示例


# 载入包
library(EBImage)

# 加载示例,细胞分裂的一个案例
nuc = readImage(system.file('images', 'nuclei.tif', package='EBImage'))
cel = readImage(system.file('images', 'cells.tif', package='EBImage'))

# 读取图片
cells = rgbImage(green=1.5*cel, blue=nuc)
# 显示图片到当前设备
display(cells, method = "raster", all = TRUE)

2)二值化处理


# 定义窗口阈值
nmask = thresh(nuc, w=10, h=10, offset=0.05)
# 打开图片
nmask = opening(nmask, makeBrush(5, shape='disc'))
# 对图像进行填充
nmask = fillHull(nmask)
# 执行图像二值化处理
nmask = bwlabel(nmask)
display(nmask, method = "raster", all=TRUE)

3)寻找边界


# 选择cel元素大于0.1的
ctmask = opening(cel>0.1, makeBrush(5, shape='disc'))
# 在图像中找到相邻区域之间的边界
cmask = propagate(cel, seeds=nmask, mask=ctmask)

display(ctmask, method = "raster", all=TRUE)

4)图像组合拼接


# 绘制边界
segmented = paintObjects(cmask, cells, col='#FFFFFF')
# 组合
segmented = paintObjects(nmask, segmented, col='#FFF2CC')

display(segmented, method = "raster", all=TRUE)

处理起来很方便,相比较PS/AI可能更方便,但是这个需要对图像基础的一些处理方法有一点了解。

参考资料:

1.https://bioconductor.org/packages/release/bioc/vignettes/EBImage/inst/doc/EBImage-introduction.html