您当前的位置: 首页 >  人工智能

暂无认证

  • 0浏览

    0关注

    92582博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

人工智能|车牌定位简介

发布时间:2019-12-12 00:00:00 ,浏览量:0

欢迎点击「算法与编程之美」↑关注我们!

本文首发于微信公众号:"算法与编程之美",欢迎关注,及时了解更多此系列文章。

问题描述

1.当拍摄一张包含车牌信息的照片时,往往还含有一些不必要的信息,这些信息在人眼中很容易被过滤,但是对于电脑来说,分辨出非有用信息是非常困难的,所以需要为电脑设计一些方法,帮助它去除无用信息,也就是提取需要的车牌区域。

解决方案

2.1 方法原理

提取车牌区域的原理是先将图片中车牌区域的轮廓表示出来,再去除一些不必要的区域,然后将轮廓连通的区域进行填充,最后利用车牌的面积、长宽比例的特点,将车牌区域在原图中划分出来

2.2 步骤

2.2.1图像预处理

图像预处理主要是对图像灰度化和二值化,灰度化图像后更有利于不必要信息的去除,在选择灰度化方法时,可以采用电视工业标准,二值化后的图像则有利于Canny算法的轮廓提取。

2.2.2提取轮廓边缘

边缘的提取主要是采用Canny算法,将图像区域中边缘点提取出来,Canny算法的图像增强步骤中有几种专门的算子,对于车牌区域的提取,一般选用soble算子。

2.2.3去除部分轮廓

去除部分轮廓的原理是先通过闭操作将图像的轮廓进行填充,再通过开操作将图像中的不满足车牌区域特点的轮廓过滤掉,部分Python代码如下: 

#进行闭运算

kernel = np.ones((5, 15), np.uint8)#设置结构元素

    closingimg = cv.morphologyEx(DT, cv.MORPH_CLOSE, kernel)

    cv.imshow('closingimg', closingimg)

    cv.waitKey(0)

    cv.destroyAllWindows()

    # 进行开运算

    opening_img1=cv.morphologyEx(closingimg,cv.MORPH_OPEN, kernel)

    cv.imshow('opening_img', opening_img)

    cv.waitKey(0)

    cv.destroyAllWindows()

    # 再次进行开运算

    Kerne2 = np.ones((25, 5), np.uint8)#设置新的结构元素

    opening_img2=cv.morphologyEx(opening_img1,cv.MORPH_OPEN, kerne2)

    cv.imshow('opening_img2', opening_img2)

    cv.waitKey(0)

    cv.destroyAllWindows()

上述部分代码是运用闭操作和开操作的python代码,由于图像预处理和Canny算法提取图像轮廓之前已经有讲解,这里就省略了那一部分得大量代码。实验结果如下:

    

图2.2.3.1 原始车牌图像 

图2.2.3.2 去除一些区域的轮廓图

2.2.4 提取车牌部分轮廓

提取车牌轮廓可以根据车牌得长宽比例和面积特点,将图像中的车牌部分标准出来,需要对得到的图像进行寻找、绘制轮廓的操作,这个步骤可以使用cv2中findContours和drawContours函数来完成;最后通过绘制的轮廓在原图中相应位置上进行车牌区域提取。

结语

3.本方法适合用于正面拍摄的车牌图片,可以有效的将车牌区域提取出来,需要注意的是,一些图片的效果可能会不理想,这跟图片拍摄的环境和角度都有关系,同时,结构元素的选取也可以变动,这也造成了提取效果的不同,所以对于车牌提取的算法还需要不断的进行优化。

END

实习编辑   |   王文星

责       编   |   饶龙江

 where2go 团队

   

微信号:算法与编程之美          

长按识别二维码关注我们!

温馨提示:点击页面右下角“写留言”发表评论,期待您的参与!期待您的转发!

关注
打赏
1653961664
查看更多评论
立即登录/注册

微信扫码登录

0.3674s