2012-06-16 91 views
1

我需要使用Java檢測圖像中的所有紅色像素。做這件事的最好方法是什麼?僅檢測Java中的紅色像素

只有當紅色RGB值大於200時,假設像素是紅色的不夠好(請參閱this table)。

那麼有沒有更好的方法來做到這一點?還是有一些紅色的顏色rgb算法?

+0

如何定義紅色? –

+0

您在這裏提出兩個問題:一個是*,「如何確定某種顏色(用RGB值表示)看起來紅色?」*,另一個是*「您能用Java爲我編寫此程序嗎?」 *。第一個問題沒有問題,第二個問題沒有(因此我的downvote)......除非你證明你已經做了一些你自己的努力。 – stakx

回答

3

看看YCrCb色彩空間。

簡單算法:將RGB圖像轉換爲YCrCb,提取紅色通道並設置閾值。

+0

您能否提供一些紅色提取和應用閾值的代碼/僞代碼示例? –

3

將RGB轉換爲HSL,並將色相(H)分量閾值化。

+0

> 345或<15時色相值爲紅色?所以:'if(hsv [0] * 360> 345 || hsv [0] * 360 <15){'但是這並不能給出可接受的結果... – francisMi

+0

@francisMi:請更具體一些。什麼是不可接受的? –

+0

@OliCharlesworth檢查不可接受。 – ArtemStorozhuk

1

正如你所建議的,你可能想在HSB空間做一些比較。您可能希望根據您的期望值爲所有三個值定義適當的風險。

您可以使用Color.RGBtoHSB來獲取給定顏色的值。

http://docs.oracle.com/javase/7/docs/api/java/awt/Color.html#RGBtoHSB%28int%2C%20int%2C%20int%2C%20float%5B%5D%29

+1

1.4.2?請隨時加入我們*** 3千年!目前正在查看Java 7. –

+0

如果您搜索「Color.RGBtoHSB」,則1.4.2文檔是第一個鏈接。我發現大多數Java搜索都是這種情況 - 舊文檔首先出現。我必須在每次搜索後添加'7'來獲取它,以便提供最新的文檔,這非常可惜。 –

+0

使用一些URL(包括這個),您可以用「7」替換路徑中的「1.4.2」。 – finnw