2013-10-26 93 views
1

我想識別圖像上的一個白色像素。我不知道如何重新調整它,因爲汽車的顏色比汽車牌的白色更「白」。我寫了一個可運行的代碼,但我必須用鼠標選擇一個車牌點,然後找到了carplate,我可以在它周圍畫一個矩形。 您是否有任何想法如何自動找到carplate的一個白色像素?用Matlab找到車牌白色像素

下面是代碼:

clear all; 
close all; 

I= imread('volvo_frame_0001.bmp'); 

figure, imshow(I) 

level=0.5; 

BW=im2bw(I,level); 
figure, imshow(BW); 

BW2 = bwselect(BW,4); 
figure, imshow(BW2); 
hold on; 

C = corner(BW2); 

min_x = min(C(:,1)); 

max_x = max(C(:,1)); 

min_y = min(C(:,2)); 

max_y = max(C(:,2)); 


figure, imshow(I); 
hold on; 

BoxPolygon = [min_x, max_y; max_x, max_y; max_x, min_y; min_x, min_y; min_x, max_y;]; 
line(BoxPolygon(:, 1), BoxPolygon(:, 2), 'Color', 'g'); 
+0

LPR是極其困難的,不能簡單地識別在車牌白像素來解決。要通過使用適度簡單的方法讓LPR工作,您必須對輸入圖像有嚴格的限制。什麼是您的汽車圖像的設置,圖像中是否只有一輛汽車?這輛車是從後面直接拍攝的嗎?牌照是否總是位於圖像的某個部分?圖像分辨率高嗎?什麼是照明條件?不知道你正在使用什麼樣的輸入,不可能給你指導。 – mags

回答

2

其實你的問題的答案是應用領域稱爲車牌識別(LPR),在這裏您可以找到上百個,如果我們不說成千上萬,節目無論是在Matlab或任何其他語言,如this免費的Matlab代碼。

無論如何,如果你堅持從頭開始編寫代碼,我建議你不要去尋找白色像素!因爲像素值在寬範圍內(0 - 256^3),而「顏色標籤」是不能簡單分配給像素的術語,因此無法判斷像素是否爲白色(請參閱this作爲示例事實)。相反,你最好使用其他板塊的「特徵」。如板是一個「矩形」的事實,是一個具有相同的「比例」的側面。此後,您可以使用「canny」查找邊緣(圖像中光線或顏色的顯着變化),藉此可以更輕鬆地判斷形狀特徵。這意味着你可以在這種圖像中更容易地找到矩形。

當您找到矩形時,您可以在這些矩形內檢查一些其他「特徵」,以確保矩形是板狀還是其他形狀的物體,而不是內容中的板狀物。例如直方圖或任何其他方法。

希望這有助於

乾杯