如何从图像中识别车辆牌照/车牌(ANPR)?[关闭]


70

我有一个允许用户上传汽车图像的网站,我想放置一个隐私过滤器以检测车辆上的车牌并使它们模糊。

模糊不是问题,但是是否有一个库或组件(首选开放源代码)可以帮助在照片中查找许可证?

注意事项;

  1. 我知道没有什么是完美的,这种类型的图像识别会带来假阳性和阴性。
  2. 我很高兴我们可以要求用户选择要模糊的区域,我们也将这样做,但是问题特别是关于以编程方式查找该数据;因此,诸如“请人检查每张图片”之类的答案无济于事。
  3. 这种软件方法在英国称为“自动车牌识别”,但我看不到它的任何实现为库。
  4. 尽管.Net是首选,但任何语言都很棒。

您也可以在SimpleLPR warelogic.com上

有什么网络服务可以做到这一点?发送图片当然会占用大量数据,但是可以在发送之前将其调整大小并设置为灰度。
Somatik 2012年

Answers:



32

编辑:我写了一个Python脚本

由于您的目标越来越模糊(为了保护隐私),因此第一步基本上需要一个高召回率的检测器。这是执行此操作的方法。随附的代码提示将OpenCV与Python结合使用。

  1. 转换为灰度。
  2. 应用高斯模糊。

    img = cv2.imread('input.jpg',1)
    img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    img_gray = cv2.GaussianBlur(img_gray, (5,5), 0)  
    

让输入图像如下。

在此处输入图片说明

  1. 应用Sobel滤镜以检测垂直边缘。
  2. 使用严格阈值或OTSU的二值化对结果图像进行阈值处理。

    cv2.Sobel(image, -1, 1, 0)
    cv2.threshold() 
    
  3. 使用合适的结构化元素进行形态学闭合操作。(我使用16x4作为结构元素)

    se = cv2.getStructuringElement(cv2.MORPH_RECT,(16,4))
    cv2.morphologyEx(image, cv2.MORPH_CLOSE, se)  
    

步骤5之后的结果图像。

在此处输入图片说明

  1. 查找此图像的外部轮廓。

    cv2.findContours(image, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE) 
    
  2. 对于每个轮廓,找到 minAreaRect()边界。

  3. 根据长宽比,最小和最大面积以及与水平线的角度选择矩形。(我使用2.2 <=长宽比<= 8,500 <=面积<= 15000,角度<= 45度)

所有minAreaRect()s以橙色显示,满足我们标准的一个以绿色显示。

在此处输入图片说明

  1. 在执行此步骤后,可能会出现误报,要对其进行过滤,请使用边缘密度。边缘密度定义为白色像素数/矩形中的像素总数。设置边缘密度的阈值。(我用0.5)

在此处输入图片说明

  1. 模糊检测到的区域。

在此处输入图片说明

您可以应用其他您认为合适的过滤器来提高召回率和精度。还可以使用HOG + SVM训练检测以提高精度。


这是一项很棒的工作,并且pyANPD.py库很好地检测了区域,但是您能否为非Pythonite提供一个关于如何模糊它们的指针?
愚蠢的行为


10

我碰到了用Java javaANPR编写的这个,我寻找ac#库。

我想要一个可以将摄像机对准某些帆船的系统,所有帆船上都有大的,可识别的数字,并让它们识别船并在驶过摄像机时发送一条推文。


我已经转换了几个类,但这将需要一些时间。
瑞安·奥尼尔

逐行转换从来都不是乐趣或快速的过程。
布鲁斯·麦克劳德

@Ryan您曾经完成转换吗?
罗兰·肖

抱歉,没有。似乎很受欢迎,但仍然下雪了。
瑞安·奥尼尔

看起来不错...如果您想在.NET上实现此功能,则可以使用IKVM或仅将其抽象到Web服务之后...
Mauricio Scheffer 2012年

8

几个月前,我已经对此进行了一些谷歌搜索。有相当多的论文关于这个话题,但我从来没有发现任何具体的开源实现。虽然有很多商业实现,但是它们都没有报价,因此它们可能非常昂贵。


谢谢,在一定要对Google视而不见之前,我没有看到研究论文。我会检查出来的。
Ryan O'Neill

我决定将其标记为答案,因为尽管它没有提供开放源代码解决方案,但它给了我足够的发展空间。
瑞安·奥尼尔

7
如果您找到或创建一个开源解决方案,请告诉我们!
Mauricio Scheffer


@Somatik:你能回答这个问题吗?
莫里西奥·谢弗




2

高性能ANPR图书馆- http://www.dtksoft.com/dtkanpr.php。这是商业用途,但是它们提供了试用密钥。


与OpenALPR相比,我测试了该库。无处可去!从我要测试的库中的15张图像中,OpenALPR检测到6张图像,该图像检测到0张图像。我想这个库非常依赖于相机的放置和光线条件。
XMight


-1

查看字符识别软件可能是可行的,因为那里有许多执行相同功能的库。我读取图像并将其存储。Micrsoft Office能够读取tiff文件并返回字母数字


-2

模糊不是问题,但是是否有一个库或组件(首选开放源代码)可以帮助在照片中查找许可证?

回答:CARMEN FreeFlow ANPR软件引擎(商用)


1
您确定“ CARMEN FreeFlow ANPR软件引擎”是开源的吗?
米奇·麦特

看起来不错,但是模糊不清让我吓了一跳(“软件受硬件加密狗保护,具有不同类型的接口(USB 2.0,PCI 2.1,PCIe(x1))”)。我不知道他们如何期望人们在托管环境中使用他们的软件,尤其是在虚拟化开始的时候。
瑞安·奥尼尔

如果您打算出售自己赚钱的产品,可以考虑将其视为一项投资。如果您认真对待它,可以随时与供应商联系,为您提供非加密的解决方案。 。
abmv

有人告诉我,基本许可证的价格约为500美元。理想的大小是每个字符16像素高。
Somatik 2012年

USB加密狗在虚拟环境中不是问题。您只需要一个简单的硬件服务器(可以运行Raspberry Pi)即可导出USB端口。有几种产品可以做到这一点,我使用ftusbnet取得了不错的效果。
Matthias Urlichs '17
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.