2013-08-16 54 views
2

好吧,假設我已正確地檢測並封裝肖像圖片的頭髮的alghoritm。檢測肖像圖像中的頭髮顏色

我怎樣才能(高正確性),區分顏色?

我知道這看起來很簡單,但主要的問題是,根據拍攝照片的環境光線條件或(較少的情況)後效果處理,一系列「金髮碧眼」,「黑色」 「棕色」和「紅色」變化很大,假定爲正值,有時候沒有檢測到正確的值。 (通過一個金髮黑色的例子)。

使用opencv(或任何其他工具,因爲我已經有頭髮),我應該使用哪種預處理算法或方法來「規範化」這類問題並最小化錯誤?

非常感謝。

+0

要區分顏色,HSV色彩空間通常是一個不錯的選擇,因爲您可以直接獲取色調。 – ChronoTrigger

+0

你解決了這個問題? – Suisse

回答

1

我認爲你可以使用機器學習方法進行顏色分類。 只聽到顏色樣本(您可以將顏色直方圖作爲輸入向量)以及一些類(顏色名稱)的訓練分類器(例如SVM或神經網絡)。我認爲這將是處理光線變化,噪點,陰影等問題的好方法。我認爲最好使用一些先進的色彩空間L * a * b *或HSV。

可能你需要在輸入向量中包含一些參考historgam(用於獲取有關照明條件的數據)。例如,你可以從面部得到它(不是最好的解決方案)。

+0

謝謝,我已經讀了一點,實際上我應該使用(如選項)YCbCr,省略Y. 採取頭髮顏色範圍的一些樣本,並讓他們在YCbCr空間,然後與孤立(也在YCbCr)每張照片的頭髮。 對嗎? 謝謝 – voskyc

+0

不,我的意思是例如:你有顏色直方圖矢量{1,2,3,42,4,2,6},你可以指定標籤,例如「黃色」。你有很多這樣的對子。然後你可以使用這些數據來訓練分類器。訓練後,它會從你的直方圖矢量得到你的顏色名稱。 –

+0

在這裏你可以閱讀有關在類似問題中使用ML:http://lear.inrialpes.fr/pubs/2009/VSVL09/verbeek09tip.pdf –

1

我不相信你可以使用頭髮區域進行任何預處理。我只是憑直覺說這個。

這是一個想法。直方圖均衡化是一種着名的預處理方法,可以將照明效果克服一些。所以你可以做的是,把你的圖像分成彩色通道,對每個通道應用直方圖均衡,然後合併通道得到直方圖均衡圖像。我認爲這會很有用。

我已經在Matlab上實現了它,在Lena上試了一下。您可以從here下載。

+0

你能再次分享代碼嗎?謝謝 – Suisse