matlab中如何去除车牌边框,关于图像处理:如何使用Matlab在车牌中进行本地化?...

我想开发一个可以识别车牌的matlab程序。

但是在此之前,我必须在" CAR"图像中对板进行定位。

怎么做?

我已经读过很多论文,这些论文都提到了诸如改进的Hough变换,底帽,垂直拖尾,Gabor滤波之类的方法。

我有2个示例代码,但结果图像错误。

这是我的第一个代码,但结果错误。

I = imread('DSC_0512.JPG');

BW = im2bw(I,0.4);

se = strel('rectangle', [2 20]);

BW_opened = imclose(BW,se);

figure, imshow(BW_opened,[])

s=regionprops(BW_opened,'Area','BoundingBox');

[hh,ii] = sort([s.Area],'descend');

out = imcrop(I,s(ii(2)).BoundingBox);

figure,imshow(out);

这是我的第二个代码,结果也是错误的...

I = imread('DSC_0512.JPG');

r = I(:,:,1);  %red plane

g = I(:,:,2);  %green plane

b = I(:,:,3);  %blue plane

BW = (r >= 230) & (r <= 260) & (g >= 160) & (g <= 240) & (b >= 160) & (b <= 240);

s = regionprops(BW, 'Area', 'BoundingBox');

[HH, ii] = sort([s.Area], 'descend');

out = imcrop(I, s(ii(1)).BoundingBox);

imshow(out);

这是我的图像的例子

请帮助我..任何建议?

基于Haar特征的Viola-Jones算法被广泛用于物体检测。它在面部检测中特别受欢迎。

您可以在Wikipedia上找到有关该算法的概述,并在此处获取原始的2001 Viola and Jones论文:(http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.10.6807)

它是在Matlab的计算机视觉系统工具箱中实现的,更具体地说,vision.CascadeObjectDetector系统对象可以完成此任务。

示例代码可以在这里找到:http://www.mathworks.com/matlabcentral/fileexchange/29437-viola-jones-object-detection

到目前为止,一切都很好。但是这里有个要注意的地方:afaik,Matlab仅提供面部,眼睛,上身等的分类器,但不提供车牌的分类器。因此,您需要自己训练算法。因此,您将需要带注释的培训样本。这些是车牌位置已知的图像。 trainCascadeObjectDetector函数进行该训练。

虽然我同意@Sebastian的方法。我确实相信Viola-Jones算法在对图像进行仿射和投射失真时效果不佳。这对于面部来说是正确的,对于任何其他对象也应该相同。

如果您要实施的系统可以确保大多数情况下车牌始终对准摄像机。这会很好。

可能值得探讨的另一种方法是基本文本检测。相同的有多种算法。因为我们可以安全地假设车牌上总是包含文字。您可以使用MSER功能算法查找此文本。您可以在此处找到MATLAB实现。 。一旦检测到文本。使用空间局部性,提取图像中车牌的位置应该足够容易。唯一可能失败的情况是车牌损坏了。

你可能感兴趣的:(matlab中如何去除车牌边框)