如何加载保存为tiff文件的二进制轮廓的XY坐标?

问题描述:

我使用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命令,但是当我将图像转换为jpegs(或从头开始制作jpegs)时,它们最终会在轮廓周围留下浅色像素作为噪点。我尝试了包tiffrtiff,但是它们的输出不是tiff黑色部分的XY坐标,我对输出不熟悉,不知道如何将它们转换为XY坐标。如何加载保存为tiff文件的二进制轮廓的XY坐标?

谁能帮我做这些事情之一(或多个!):

  • 上传的TIFF至R的格式Momocs可以读通过tiffrtiff上传
  • 转换TIFF数据转换成格式 Momocs可以阅读
  • 获取XY矩阵坐标在 值图像TIFF全黑像素的
  • 转换二进制图像以TIFF一个二进制图像jpeg

在此先感谢您的帮助!

通过指定arr.ind=TRUE,您可以使用R的函数which轻松提取满足特定条件的像素的XY坐标矩阵。为了说明这种方法,我使用BioconductorEBImage直接从提供的URL加载示例PNG文件。 readImage是R包中提供的功能的包装,因此除了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