我使用R包Momocs
来比较我在ImageJ中跟踪的形状的轮廓,并将其保存为二进制图像序列。例如:蜗牛齿的一个轮廓。Momocs需要一个X和Y坐标的矩阵,我很难从图像转换到坐标。
一方面: ImageJ可以选择将.XY坐标,但这只适用于选择。我可以使用魔杖工具来选择轮廓,但它包围了一个像素宽的轮廓,例如一条直线将有一个长方形的坐标,描述直线的两侧。这让我在双视(一颗牙齿近距离的图像例子)上看到了我的蜗牛牙,可能会对分析产生不利影响。
另一方面: Momocs有一个import_jpg1
命令,但是当我将图像转换为jpegs (或者从头开始制作jpegs )时,它们最终会以浅色像素作为轮廓周围的噪声。我尝试了包tiff
和rtiff
,但是它们的输出不是tiff黑色部分的XY坐标,而且我对输出还不太熟悉,无法理解如何将它们转换为XY坐标。
有人能帮我做一个(或多个!)其中:
Momocs
可以读取的格式将tiff上传到Rtiff
或rtiff
上传的tiff数据转换为Momocs
可以读取的格式提前感谢您的帮助!
发布于 2017-10-12 20:35:14
通过指定which
,您可以很容易地提取满足某些标准的像素的XY坐标矩阵,并使用R的函数arr.ind=TRUE
。为了说明这种方法,我使用生物导体包http://www.bioconductor.org/packages/EBImage直接从提供的URL加载示例PNG文件。readImage
是R包( jpeg、png和tiff )中提供的函数的包装器,因此除了png之外,它还会打开JPEG和TIFF文件。
### Install EBImage
# source("https://bioconductor.org/biocLite.R")
# biocLite("EBImage")
img <- EBImage::readImage("https://i.stack.imgur.com/ZFTxu.png")
mat <- which(img==0, arr.ind=TRUE, useNames=FALSE)
head(mat)
## [,1] [,2]
## [1,] 121 53
## [2,] 120 54
## [3,] 118 55
## [4,] 119 55
## [5,] 117 56
## [6,] 116 57
EBImage提供了广泛的工具来处理R中的图像数据,这可能是您感兴趣的,例如操作、过滤和显示图像的功能。有关概述,请参见包格列奈特。
https://stackoverflow.com/questions/46677109
复制相似问题