2017-10-10 80 views
1

我使用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

在此先感謝您的幫助!

回答

0

通過指定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