2012-10-10 57 views
1

我有連續圖像採集和具有攝像機的背景上的白色紙(面對相機)檢測紅,綠和藍通過消除背景

只用白色背景是生產由於一個偏綠的藍色色調的圖像到在其中產生輸出作爲GREEN以下代碼

green = im(:,:,2); 
    red = im(:,:,1); 
    if sum(green(:)) > sum(red(:)) 
     disp('green'); 
    else 
     disp('red'); 
    end 

房間的燈泡是否有任何的方式來CANCEL用於處理僅顏色對象的白紙背景將被放置在攝像機前??

物體的顏色會變成紅色,綠色和藍色方塊

+0

如果它是一個固定的物體,測量環境的顏色和減去折扣從最初的彩色閱讀 –

回答

1

您是綠色或紅色的測試方式是根本性的缺陷 - 你需要尋找使用合適的閾值的主色,否則你會得到錯誤的陽性。例如。

threshold = 0.7; % determine a suitable threshold empirically 
blue = sum(sum(im(:,:,3))); 
green = sum(sum(im(:,:,2))); 
red = sum(sum(im(:,:,1))); 
total = red + green + blue; 
if (red/total > threshold) 
    disp("red"); 
elseif (green/total > threshold) 
    disp("green"); 
elseif (blue/total > threshold) 
    disp("blue"); 
else 
    disp("indeterminate colour"); 
end 
+0

憑什麼我應該考慮的門檻? – podon

+0

'red。/ sum'的結果是一個數組,我們怎樣才能比較一個整數的閾值? – podon

+0

對不起 - 草草未經測試的代碼 - 它是爲了說明一個概念,而不是一個隨時可用的代碼片段 - 希望它現在已經修復。正如評論中所述,您需要憑經驗確定閾值,因爲它取決於您的特定系統。從0.7開始,看看它是怎麼回事... –