2016-12-08 46 views
0

我在我的Android應用程序中使用OpenCV來讀取像素值並確定在該特定像素的屏幕上是否存在新對象。現在,當我讀取像素值時,如果幀中有新對象或幀的整體亮度增加或減少,則RGB值可能會不同。有人可以提出一些可以用來區分它們的技術嗎?算法來區分給定像素的顏色變化和亮度變化

目前我比較RGB值的差異,如果R值增加或減少了更多的藍色和綠色,等等。準確度只有60-70%。

回答

0

Color類有一個名爲colorToHSV的靜態方法,它將執行RGB→HSV轉換。 HSV是色調/飽和度/數值,其中數值是亮度的另一個術語。

的簽名是:public static void colorToHSV (int color, float[] hsv)

這裏hsv[2]將是您正在尋找的亮度值。

0

我會建議在圖像上使用cvtcolor並將RGB圖像轉換爲Lab/Luv/HSV。我之前從事過一個類似的項目,爲了使它更加準確(93%的準確率),我們將所有可能的顏色保存到圖像中並訓練出一個分類器(SVM,NN等等;它們都非常容易在OpenCV中實現)與「groundtruth」,我們使用Luv色彩空間。我知道你不想糾正這個變化。我只是提到它,因爲我們對Luv的準確性最高(比HSV和Lab更高)。 See here請務必根據OpenCV將RGB轉換爲Lab,而不是this,因爲它們不一樣。 希望它有幫助。