我正在使用R包Momocs
来比较我在ImageJ中跟踪并保存为二进制图像tiff的形状轮廓。例如:one outline of snail teeth。 Momocs需要一个X和Y坐标矩阵,我无法从图像转换到坐标。
一方面:ImageJ可以选择另存为... XY坐标,但这仅适用于选择。我可以使用棒工具来选择轮廓,但它包围了一个像素宽的轮廓,例如:直线将具有长矩形的坐标,描述该线的两侧。这让我在double-vision (image example of one tooth close-up)看到了我的蜗牛,可能会对分析产生不利影响。
另一方面:Momocs有import_jpg1
命令,但是当我将图像转换为jpeg(或从头开始制作jpeg)时,它们最终会在轮廓周围出现浅色像素作为噪声。我尝试了包tiff
和rtiff
,但是它们的输出不是tiff黑色部分的XY坐标,而且我对输出不够熟悉,无法理解如何将它们转换为XY坐标。
任何人都可以帮我做一件(或多件!)这些事情:
Momocs
格式将tiffs上传到R可以阅读tiff
或rtiff
上传的tiff数据转换为格式
Momocs
可以阅读提前感谢您的帮助!
答案 0 :(得分:1)
通过指定which
,您可以使用R的函数arr.ind=TRUE
轻松提取符合特定条件的像素的XY坐标矩阵。为了说明这种方法,我使用Bioconductor包 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中的图像数据,例如操作,过滤和显示图像的功能。请参阅包vignette以获取概述。