horizon client 无法识别域_车牌识别仿射变换

同样是车牌识别,此次的车牌识别,需要进行连续两次的仿射变化,才能成功识别。

代码如下:

* 读图像
read_image (Chepai2, 'E:/halcon实战/chepai2.jpg')
* rgb图像转灰度图像
rgb1_to_gray(Chepai2, GrayImage)
* 1. 此次blob分析,主要是获得一个区域,从而得到区域的角度
* 阈值处理
threshold (GrayImage, Regions, 217, 255)
* 计算连通域,得到联通域
connection(Regions, ConnectedRegions)
* 特征直方图,通过height、area、width特征筛选区域
select_shape (ConnectedRegions, SelectedRegions, ['height','area','width'], 'and', [66.69,0,25.52], [87.47,1004.62,55.33])
* 将所有区域连成一个区域
union1(SelectedRegions, RegionUnion)
* 将区域转成矩形区域
shape_trans(RegionUnion, RegionTrans, 'rectangle2')
* 获得联通区域的角度
orientation_region(RegionTrans, Phi)
* 获取区域的中心点和面积
area_center(RegionTrans, Area, Row, Column)
* 2. 进行仿射变换,将图像转正
* 获得进行仿射变换的矩阵
vector_angle_to_rigid(Row, Column, Phi, Row, Column, 0, HomMat2D1)
* 仿射变换
affine_trans_image(GrayImage, ImageAffinTrans, HomMat2D1, 'constant', 'false')
* 3. 此次Blob分析,主要是从转正后的区域获得一个区域,从而能得到文字的倾斜角度
* 再次进行阈值处理
threshold (ImageAffinTrans, Regions2, 202, 255)
* 计算联通域,得到联通域
connection(Regions2, ConnectedRegions2)
* 特征直方图,通过height、area、width特征筛选区域
select_shape (ConnectedRegions2, SelectedRegions2, ['height','area'], 'and', [61.07,473.44], [106.36,1374.13])
* 将区域联合成一个区域
union1(SelectedRegions2, RegionUnion1)
* 听过联合区域,得到文字的倾斜角度
text_line_slant(RegionUnion1, ImageAffinTrans, 75, -0.523599, 0.523599, SlantAngle)
* 4. 再次进行仿射变换,将图像转正
hom_mat2d_identity (HomMat2DIdentity)
hom_mat2d_slant (HomMat2DIdentity, -SlantAngle, 'x', 0, 0, HomMat2DSlant)
affine_trans_image(ImageAffinTrans, ImageAffinTrans1, HomMat2DSlant, 'constant', 'false')
* 5. 此次Blob分析,得到需要被识别的字符区域
* 阈值处理
threshold (ImageAffinTrans1, Regions3, 204, 253)
* 计算连通域,获得连通域
connection(Regions3, ConnectedRegions3)
* 特征直方图,通过height、area、width特征筛选区域
select_shape (ConnectedRegions3, SelectedRegions3, ['height','area','width'], 'and', [42.5,493.24,20.86], [81.06,938.56,80.61])
* 对区域按列排序
sort_region(SelectedRegions3, SortedRegions, 'character', 'true', 'column')
* 6. 进行字符识别
* 翻转图像,将背景和前景反转
invert_image(ImageAffinTrans1, ImageInvert2)
* 读分类器
read_ocr_class_mlp('Document_0-9A-Z_NoRej.omc',OCRHandle2)
* 进行字符识别
do_ocr_multi_class_mlp(SortedRegions, ImageInvert2, OCRHandle2, Class2, Confidence2)
* 释放分类器资源
clear_ocr_class_mlp(OCRHandle2)

以上代码,处理的是如下的车牌图片:

c7e04b15b9375f819b683d3721a7c552.png

进行第一次仿射变换,将车牌图像进行第一次转正,得到如下图像:

a9339919d956e93273f2616439c8ddaa.png

我们可以看到,图像确实转正了。但是,在这个图像上,我们进行字符识别,会发现,无法正确的识别字符。

通过分析,通过将以上图像中的各个字符区域转成矩形区域,如下图所示:

2a605df89faa485925ada8b6ede5e18a.png

我们可以看到,某一些字符的矩形区域之间是重叠的,同时,我们也可以看到,确实就是这些有重复的字符区域,在识别的时候,出现识别出错的现象。所以,我们需要将这个图像再次进行转正处理。

进行第二次仿射变换,将车牌图像进行第二次转正处理,得到如下图像:

ddaee935314f37e4ea54ce9caf099102.png

再次对以上图像的字符区域,转成矩形区域,确认各个字符区域之间是佛还有重叠,如下图所示:

e1b930a654bd1296e61d43bef8d9f511.png

此时,各个字符之间没有重叠了。在这个图像的基础上进行字符识别,此时,已经可以正确的进行字符识别了,如下图所示:

196b44fa605830b7aa33fa6328304328.png

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值