2016-03-06 62 views
2

如何獲取圖像的直方圖值作爲參數。 根據this,可以檢索這些值,因爲hist()返回一個值。 通過圖像獲取直方圖的值

其餘的代碼工作正常。然而,空返回到直方圖(完整的代碼):

library(EBImage) 
image = readImage("cat.png") 
grayImage <- channel(image,"gray") 
grayScaled = floor(grayImage * 255) 
histogram <- hist(grayScaled) 

> histogram 
NULL 

包EBImage在這裏使用。所以我想得到像直方圖$計數的強度或計數,但變量直方圖爲空。

回答

0

EBImage已經註冊了一種通用hist()因爲在這裏可以看到:

library("EBImage") 
findMethodSignatures(hist) 
    x   
[1,] "AffyBatch" 
[2,] "ANY"  
[3,] "Image" 

這就是爲什麼當你調用hist(grayScaled)你不能返回histogram -class對象的原因。 這取決於你想要什麼了一點,但您可以訪問image對象的.Data插槽(其中包含了矩陣)和情節,在返回所需的對象:

histogram <- hist(imageData(grayScaled)) 
+2

我還想到運行直方圖之前拆卸包的:'分離(「包:EBImage」,卸載= TRUE)'。 – Konrad

+0

不錯的想法,在我的例子中,它產生相同的結果。你知道hist如何識別數據插槽,而不需要註冊「image」的類定義? –

+0

我得到[this](http://pastebin.com/B2b7xSXG)。 – Konrad

1

EBImage版本開始4.13.5,方法hist() for Image對象返回一個(列表)histogram-class對象。對於色彩模式爲Grayscale的圖像,結果爲histogram類的單個對象,對於Color圖像,結果是一個帶有與紅色,綠色和藍色通道對應的元素的命名列表,如以下示例所示。

library(EBImage) 

file = system.file("images", "sample-color.png", package="EBImage") 
image = readImage(file) 

h = hist(image) 

str(h) 

該功能目前在軟件包的devel分支中可用。它可以從GitHub獲得:

devtools::install_github("aoles/EBImage")