2013-10-26 58 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”查找边缘(图像中光线或颜色的显着变化),借此可以更轻松地判断形状特征。这意味着你可以在这种图像中更容易地找到矩形。

当您找到矩形时,您可以在这些矩形内检查一些其他“特征”,以确保矩形是板状还是其他形状的物体,而不是内容中的板状物。例如直方图或任何其他方法。

希望这有助于

干杯