2011-03-30 32 views
8

我正在做一些圖像處理,雖然我覺得我對自己的方法有一個很好的想法,但是我沒有太多的運氣來找到我應該使用哪個庫在R中專門做這件事。R中的圖像處理/顏色檢測:我應該使用哪個庫?

我有一個類似圖像的大型數據庫,其中每個都有白色背景上的任意數量的各種大小的彩色斑點。我最終希望找到紅色,綠色和藍色值,並計算特定日期的所有圖像中所有彩色像素的平均RGB亮度。這意味着能夠以某種方式區分彩色像素和近白色像素並存儲它們的值。

我想我想要做的是創建color histograms爲許多測試圖像,看看直方圖的峯值,以確定什麼構成「白色」或「彩色」像素的閾值,然後循環遍佈每個像素圖像找到與我的閾值相匹配的彩色圖像(我知道如何讀取圖像並獲取像素RGB值)。

在我的首選語言Python中,聽起來好像我使用PIL中Image模塊的直方圖方法,但我不知道R等價物(這可能僅僅是我的谷歌福;搜索結果主要針對「R」,如「紅色」而不是語言,我確實發現這個:R: Histogram,但是我不知道它是否相關/如何使用它)。

如果有可能是從信號/圖像處理領域一個更好的方法,我很樂意聽到這一點。

TL; DR:如何使圖像的顏色直方圖,或特定顏色值否則選擇像素,使用R'

(相關但不R-具體:How to calculate the amount of "green spots" in an image?

+0

也許RPY可以幫助你嗎? http://rpy.sourceforge.net/ – tkerwin 2011-03-30 18:47:15

+0

@tkerwin - 我想,但我必須這樣做純R.如果真的沒有合適的函數在R I可能會最終用Python寫的東西來確定的閾值,然後將其硬編碼到我的R腳本中。 – Beekguk 2011-03-30 18:50:37

+0

爲什麼你想扔掉關於聯合關係的所有信息?我建議你把它看作是一個三維分類(或可能是集羣)問題。 – hadley 2011-03-31 15:41:29

回答

4

有上CRAN優異 '銳美' 軟件包。

試試這個:

library(rimage) 
x <- read.jpeg(system.file("data", "cat.jpg", package="rimage")) 
par(mfrow=c(1,3)) 
hist(x[,,1]) 
hist(x[,,2]) 
hist(x[,,3]) 
+0

''Package'rimage'已從CRAN存儲庫中刪除.' – zx8754 2017-11-13 19:17:28

5

還有的R接口ImageJ的(這是我在過去的距離使用一次,它是用Java編寫的出色的圖像分類軟件)通過Bio7 package

更多信息,其他鏈接:

http://www.r-bloggers.com/image-data-and-classification-with-r/

http://www.r-bloggers.com/plots-in-r-and-the-imagej-visualization/

http://www.r-bloggers.com/image-classification-limits-part-2/

+0

這看起來像一個我以前不知道的漂亮整潔的軟件!我已經使用ImageJ來做類似的事情,但這不是很大程度上的手動嗎?我正在尋找可以在相當大的圖像數據庫上自動運行的命令行工具。 – Beekguk 2011-03-31 17:38:31

+0

添加了一些鏈接,包括使用它時的內存限制。它基本上是R和ImageJ之間的接口,所以它應該讓你自動化。 – 2011-03-31 18:43:53

+0

我還發現了CRAN上的[RImageJ](http://cran.r-project.org/web/packages/RImageJ/index.html)包,它直接提供了ImageJ和R的綁定。 – Beekguk 2011-04-15 17:42:20