定位

  • Blob分析
  • 模板匹配

仿射

使用单位矩阵求仿射矩阵

示例:affine_trans_region.hdev

  • 单位矩阵
    hom_mat2d_identity (HomMat2DIdentity)
  • 平移矩阵
    hom_mat2d_translate()
  • 旋转矩阵
    hom_mat2d_rotate(HomMat2DIdentity, -0.3, 256, 256, HomMat2DRotate)
    输入是原矩阵,输出是旋转矩阵,旋转角度是顺时针0.3度,旋转中心点是(256,256)
  • 缩放矩阵
    hom_mat2d_scale (HomMat2DRotate, 1.5, 0.5, 256, 256, HomMat2DScale)
    缩放点是(256,256),(1.5,0.5)表示x轴上缩放1.5倍,y轴上缩放0.5倍
  • 仿射操作

对区域仿射
affine_trans_region (Region, egionAffineTrans, HomMat2DScale, 'nearest_neighbor')
对图像仿射
affine_trans_image()
对XLD进行仿射
affine_trans_xld()
……

使用模板匹配

示例:check_blister.hdev

access_channel (ImageOrig, Image1, 1)
获取第一通道的图片
threshold (Image1, Region, 90, 255)
阈值化
shape_trans (Region, Blister, 'convex')
凸化
orientation_region (Blister, Phi)
测量偏移角度
area_center (Blister, Area1, Row, Column)
测量面积及中心点坐标
vector_angle_to_rigid (Row1, Column1, Phi, Row2, Column2, 0, HomMat2D)
获得图片绕(Row1,Column1)点旋转Phi后得到中心点为(Row2,Column2),偏移角度为0的图片所需要的仿射矩阵

affine_trans_image (ImageOrig, Image2, HomMat2D, 'constant', 'false')
将仿射矩阵应用于图片

车牌识别

1、借助助手快速识别
第一步:打开一张车牌图片
read_image (Image, 'F:/Code/picTest/CarNumber/3.jpg')
第二步:转化为灰度图片
rgb1_to_gray (Image, GrayImage)
第三步:利用助手打开新的OCR

并根据OCR中第2点,点击任意一个绿笔头(一般选第一个,正矩形)绘制需要读取的区域,右击鼠标确定
第四步:在OCR中第3点输入你所希望读取的文本内容

第五步:勾选OCR中第4点第一项

第六步:应用快速设置

最后得到车牌识别号

2、Blob分析+mlp分类器实现
第一步:读取图片
第二步:灰度化
第三步:翻转图片亮度
invert_image (GrayImage, ImageInvert)
第四步:对灰度图片阈值化
threshold (GrayImage, Regions1, 96, 204)
第五步:Blob分析提取车牌号,这里见halcon学习笔记(二)实现相机物体抓取得到仅含有车牌号的区域,注意这里运用到了多个特征选择

connection (Regions1, ConnectedRegions)
select_shape (ConnectedRegions, SelectedRegions, ['area','row'], 'and', [0,164.27], [2945.62,191.47])
select_shape (SelectedRegions, SelectedRegions1, ['area','ratio'], 'and', [0,0], [200,2.0846])
select_shape (SelectedRegions1, SelectedRegions2, ['area','ratio','column'], 'and', [0,1.5793,138.85], [200,2,500])


第六步:对区域进行排序sort_region (SelectedRegions2, SortedRegions, 'character', 'true', 'column')按照列对字母进行排序。
第七步:读取OCR分类器read_ocr_class_mlp ('Industrial_0-9A-Z_NoRej.omc', OCRHandle)这里需要注意的是要选'Industrial_0-9A-Z_NoRej.omc'字体,及数字0-9及字母A-Z,根据以后需求不同加以更改,每一个字体不同内容可以在OCR助手字体旁边的放大镜中看。

第八步:进行分类do_ocr_multi_class_mlp (SortedRegions, ImageInvert, OCRHandle, Class, Confidence)由于这是识别字是黑的,背景是白的。所以在第三步对图片进行了翻转。
最后得到分类结果

3、定位与区域分割
如果直接在RGB情况下阈值化效果不好,考虑颜色空间的转换,RGB转化为HSV

  • 读取图片
read_image (Image, 'F:/Code/picTest/CarNumber/4.jpg')
  • 分解RGB通道
decompose3 (Image, Red, Green, Blue)
  • 转化为HSV三种类型的图片
trans_from_rgb (Red, Green, Blue, Hue, Saturation, Intensity, 'hsv')
  • 对其中最明显的图片进行阈值分割
threshold (Saturation, Regions, 0, 90)
  • 打散
connection (Regions, ConnectedRegions)

一定要保证车牌区域是完整的,如果断开了,要么调用unionl算子将其联合成一个区域,要么先膨胀将其接上!!!
如果车牌字符与边框相连,要么重新阈值化找到没有连接的阈值;要么开运算打断

  • 选择车牌的大致区域
select_shape (ConnectedRegions, SelectedRegions, ['area','row'], 'and', [4041.92,186], [11826.4,354.42])
  • 填充孔洞
fill_up (SelectedRegions, RegionFillUp)
  • 剔除矩形外多余元素(视情况而定)
opening_rectangle1 (RegionFillUp, RegionOpening, 20, 30)
  • 剔除多余元素
opening_circle (RegionOpening4, RegionOpening4, 3.5)
  • 将形状转换成矩形
shape_trans (RegionOpening4, RegionTrans, 'rectangle2')
  • 得到区域的偏转角度
    orientation_region (RegionTrans, Phi)

  • 计算区域面积和中心点坐标
    area_center (RegionTrans, Area, Row, Column)

  • 得到摆正图片的仿射矩阵
    vector_angle_to_rigid (Row, Column, Phi, Row, Column, 0, HomMat2D)

  • 仿射矩阵应用于图片
    affine_trans_image (Image, ImageAffineTrans, HomMat2D, 'constant', 'false')

  • 仿射矩阵应用于区域
    affine_trans_region (RegionTrans, RegionAffineTrans, HomMat2D, 'nearest_neighbor')

  • 从图片中截取该矩形区域
    reduce_domain (ImageAffineTrans, RegionAffineTrans, ImageReduced)

  • 将截取的区域转化为灰度图片
    rgb1_to_gray (ImageReduced, GrayImage)
    ……后续操作即前面提到的Blob分析得到车牌字符,最后分类器识别字符

显示

smallest_rectangle1 (RegionOpening2, Row1, Column1, Row2, Column2)
count_obj (RegionOpening2, Number)
for i := 1 to Number by 1disp_message (WindowHandle, Class[i-1], 'image', Row2[i-1], Column1[i-1], 'green', 'false')
endfor

Halcon学习笔记(五)几何定位+仿射+车牌识别相关推荐

  1. Halcon学习笔记02——透视形变的车牌识别

    1程序流程 整体流程如下图所示: 首先通过RGB→HSV在颜色空间进行Blob分析提取车牌区域,提取区域如下图所示: 可以发现图片出现了透视变换,由于拍摄视角未正视车牌,因此矩形的车牌变成了斜四边形. ...

  2. Halcon 学习笔记五:几何定位+仿射变换+测量

    Halcon 学习笔记五:几何定位+仿射变换+测量 定位流程 例子一 例子二(药片的定位) 例子三(充电宝定位) 例子四(车牌定位) 其他 定位流程 blob分析 模板匹配 (仿射变换成标准的形状) ...

  3. opencv学习笔记五--文件扫描+OCR文字识别

    opencv学习笔记五--文件扫描+OCR文字识别 文件扫描 定义函数 边缘检测 获取轮廓 变换 OCR文字识别 环境配置 代码 文件扫描 # 导入工具包 import numpy as np imp ...

  4. Halcon学习笔记(九)——OCR实战练习 倾斜日期检测、倒着的字符检测

    第四-八讲 OCR实战练习 在基于之前的例程分析之上,这里做具体应用,比如,食品包装袋上倾斜的日期识别,温度计上倒着的字符识别等. 倾斜日期识别 首先,对于这样一幅图片,怎样实现对日期的提取? 法一: ...

  5. Halcon学习笔记:select_points_object_model_3d(3D对象模型阀值分割)

    Halcon学习笔记:select_points_object_model_3d 3D对象模型阀值分割 This example program shows how to use the operat ...

  6. 【AngularJs学习笔记五】AngularJS从构建项目开始

    为什么80%的码农都做不了架构师?>>>    #0 系列目录# AngularJs学习笔记 [AngularJs学习笔记一]Bower解决js的依赖管理 [AngularJs学习笔 ...

  7. Halcon基于形状的几何定位函数说明

    Halcon基于形状的几何定位函数说明 1. create_shape_model(Template: : //reduce_domain后的模板图像 NumLevels,//金字塔的层数,可设为&q ...

  8. Halcon 学习笔记八:颜色识别

    Halcon 学习笔记八:颜色识别 一.图像处理需要的知识 二.图像处理的预处理和分割过程 二.颜色识别的方法 三.例子一 四.例子二 五.例子三 一.图像处理需要的知识 1.图像处理基础(rgb(h ...

  9. python函数是一段具有特定功能的语句组_Python学习笔记(五)函数和代码复用

    本文将为您描述Python学习笔记(五)函数和代码复用,具体完成步骤: 函数能提高应用的模块性,和代码的重复利用率.在很多高级语言中,都可以使用函数实现多种功能.在之前的学习中,相信你已经知道Pyth ...

最新文章

  1. postgresql日常操作命令
  2. 华为手机像素密度排行_2020上半年手机芯片十大排行:华为麒麟990第四,骁龙865第一...
  3. sarscape 将dem文件转化成stl_STL源码剖析 阅读笔记(一)介绍
  4. php 禁止ajax 重复请求,js ajax请求防止重复提交
  5. Java序列化的这三个坑千万要小心
  6. 马尾物联网企业主导或参与制定修订各级标准达60项
  7. NYOJ 取石子总结
  8. 关于Lattic Diamond软件安装不成功问题(license问题)
  9. linux zip unzip 命令
  10. python 有道翻译,python 实现有道翻译功能
  11. Nopcommerce kendo UI Roxy Fileman控件的汉化
  12. 解决Samba服务无法访问 网络名不再可用的问题
  13. 深入浅出实现Electron音量调节功能
  14. 如何看待ICCV 2021接收论文被指抄袭?
  15. 大学生家乡网页设计作业模板下载 南京城市网页设计作业成品 静态HTML旅游景点网页制作下载_网页设计代码
  16. Win11封杀盗版office!不用找新密钥,这200套全行业终极模板够你用一辈子,一会儿删...
  17. 陈老师排课12A版的手工调课的方法
  18. Java多线程案例之线程池
  19. Python-混合高斯分布(GMM)的应用及K-S检验
  20. 奇偶页不同页眉页脚设置

热门文章

  1. 论文笔记:FEDformer: Frequency Enhanced Decomposed Transformer for Long-term Series Forecasting
  2. 厨房秤程序开发,芯片供应
  3. oracle parameter文件
  4. zephyr笔记 2.4.1 信号量
  5. C++定义一个Dog类
  6. 微服务(3)——分布式组件
  7. pta习题2-2 阶梯电价
  8. GLONASS卫星导航
  9. 朋友圈唯美的心灵鸡汤语录,句句经典入心
  10. 外行对程序员误会有多深!