前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >R语言实现肿瘤细胞计数

R语言实现肿瘤细胞计数

作者头像
一粒沙
发布2019-10-17 22:27:49
2K1
发布2019-10-17 22:27:49
举报
文章被收录于专栏:R语言交流中心R语言交流中心

今天给大家介绍一个病理图像中肿瘤细胞计数的图像处理包CRImage。此包对R语言的版本要求比较高,必须是不低于3.6版本的R语言才可以安装。安装需要的前期准备:

代码语言:javascript
复制
install.packages("e1071")
install.packages("sgeostat")
install.packages("jpeg")
install.packages("png")
install.packages("locfit")
install.packages("fftwtools")
BiocManager::install("EBImage")
BiocManager::install("CRImage")

如果不把以上的包安装完整,那么就会报下面的错误:

接下来我们看下如何使用:

首先是数据的载入,我们这里用到的图像是此包自带的图像数据,需要用到函数readImage。

此函数支持jpeg, png, 以及tiff格式的图像数据。

看下实例:

代码语言:javascript
复制
f = system.file("extdata","exImg2.jpg", package="CRImage")
img=readImage(f)

display(img)

然后图像各颜色空间(HSV,LAB)之间的转化,需要用到函数convertRGBToHSV,convertRGBToLAB,convertHSVToRGB,convertLABToRGB。通过函数名称我们可以直接看出对应的功能。那我们看下他们之间的区别:

代码语言:javascript
复制
imgHSV=convertRGBToHSV(img)
代码语言:javascript
复制
imgLAB=convertRGBToLAB(img)

接下来就是灰度图像的阈值设置,需要用到函数createBinaryImage对设置的阈值进行过滤,实例如下:

代码语言:javascript
复制
imgG=EBImage::channel(img,"gray")
代码语言:javascript
复制
whitePixelMask=img[,,1]>0.85 &img[,,2]>0.85 & img[,,3]>0.85
imgB=createBinaryImage(imgG,img,method="otsu",numWindows=4,whitePixelMask=whitePixelMask)

以上通过设置阈值会增大目标与噪音的色差。

接下来是图像的标记,需要用到函数segmentImage

代码语言:javascript
复制
segmentationValues=segmentImage(f,maxShape=800,minShape=40,failureRegion=2000,threshold="otsu",numWindows=4)
image=segmentationValues[[1]]#原始图像
segmentedImage=segmentationValues[[2]]#标记好的图像
imageFeatures=segmentationValues[[3]]#图像获取的一些特征值

当然,如果直接对病理图像中细胞进行分类,不一定靠谱,此刻此包还引进机器学习的算法,首先是创建训练集数据,我们可以先人工获取标注的数据,然后构建分类器,这里用到的算法是支持向量机:

代码语言:javascript
复制
f = system.file("extdata", "trainingData.txt",package="CRImage")
trainingData=read.table(f,header=TRUE)
代码语言:javascript
复制
classifierValues=createClassifier(trainingData)
classifier=classifierValues[[1]]

接下来我们看下我们构建的分类器的效果:

代码语言:javascript
复制
f = system.file("extdata","exImg2.jpg", package="CRImage")
classesValues=classifyCells(classifier,filename=f,KS=TRUE,maxShape=800,minShape=40,failureRegion=2000)

肿瘤细胞结构的标注:

代码语言:javascript
复制
exImg=readImage(f)
cellularity=calculateCellularity(classifier=classifier,filename=f,KS=TRUE,maxShape=800,minShape=40,failureRegion=2000,classifyStructures=FALSE,cancerIdentifier="c",numDensityWindows=2,colors=c("green","red"))

上面的热图主要是指的图中肿瘤细胞的分布,颜色越深代表肿瘤细胞的数量在这个位置越多。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-10-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 R语言交流中心 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档