预览加载中,请您耐心等待几秒...
1/9
2/9
3/9
4/9
5/9
6/9
7/9
8/9
9/9

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

基于halcon的车牌的图像识别 其实车牌图像识别从技术上已经比较成熟,从理论上来说无外乎就是如下几个步骤: 灰度化:实际就是对原始车牌图片进行预处理,把彩色图片转化为黑白图片,然后对不符合指定阙值范围的灰度值进行过滤。车牌定位:这是技术难点之一,根据我的经验,定位车牌位置对于车牌的准确识别而言实际上就成功了60%。很多车牌识别的产品都对车牌的定位预留了很多配置参数,例如截取原始图片的位置参数、车牌的长宽比例、大小等等,这些都是为了提高车牌定位的准确率。字符分割:车牌定位后是字符分割,本人使用的识别过程是:对定位的车牌位置进行降噪处理=>边界模糊=>从右向左找出前6个封闭的图形=>剩余的封闭图形综合为一个图形进行汉字的识别。字符识别:就是根据字符模板进行模板匹配,因此需预先建立相应的字符模板。基于图像进行字符识别也可配置很多参数来大大提高字符的识别率。例如限定车牌头的字符,车牌各位字符的识别优先级等等。 以下通过大车黄牌号码为例,看看车牌识别的效果。1、原始图片如下图所示: 2、限定车牌识别区域,本例中将裁剪掉上下左右各10%的区域: get_image_pointer1(FullImage,Pointer,Type,Width,Height)gen_rectangle1(Rectangle,Height*0.1,Width*0.1,Height*0.9,Width*0.9)reduce_domain(FullImage,Rectangle,Image) 看看裁剪结果: 3、把选中的区域灰度化,方便后续处理: decompose3(Image,Red,Green,Blue)trans_from_rgb(Red,Green,Blue,Hue,Saturation,Intensity,'hsv') 灰度化后的效果图: 4、灰度阙值过滤,本例中只选中灰度值在100至255之间的区域,可根据实际情况进行相应的设置,然后进行降噪处理: threshold(Saturation,HighSaturation,100,255)remove_noise_region(HighSaturation,OutputRegion,'n_48') 过滤降噪后的效果,和实际的位置很接近了吧! 5、根据预定义的车牌长宽比例等查找符合特定特征的区域: 代码 connection(OutputRegion,ConnectedRegions1)closing_rectangle1(ConnectedRegions1,RegionClosing1,10,10)select_shape(RegionClosing1,ASelectedRegions,'area','and',3000,9000)select_shape(ASelectedRegions,HSelectedRegions,'height','and',30,90)select_shape(HSelectedRegions,SelectedRegions,'width','and',60,180) 效果图如下,分割成了多个区域哈: 6、呈现出车牌区域的灰度化图像: reduce_domain(Hue,SelectedRegions,HueHighSaturation) 效果如下,是不是和实际位置一致啊! 7、对上述车牌的精确区域进行阙值过滤,主要是为了去掉车牌周围的黑色边框: threshold(HueHighSaturation,Region,30,50) 效果图如下: 8、填充有字符而没有在上述算法中被选中的内部区域: closing_rectangle1(Region,RegionFillUp,20,20) 填充后的相关效果图如下: 9、根据选中的上述区域,从原始图片中加载该区域: reduce_domain(Image,RegionFillUp,TruckTagImage) 效果图如下,车牌又出现了哈 10、确定识别区域字符的偏移角度,根据摄像机位置的不同其倾斜度也会有所不同(根据分割算法的不同,其实此步骤可以省略): connection(RegionFillUp,ConnectedReducedRegions)text_line_orientation(ConnectedReducedRegions,TruckTagImage,30,-0.523599,0.523599,OrientationAngle) 11、显示真实的车牌位置图像,主要是方便调试: dev_display(TruckTagImage) 效果图如下: 12、进行字符分割,过滤掉非字符区域: 代码 segment_characters(RegionFillUp,TruckTagIm