如何从图像中识别车辆牌照/车牌(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.