IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> OCR识别中级篇,Halcon实战项目讲解四,环形字符OCR识别 -> 正文阅读

[人工智能]OCR识别中级篇,Halcon实战项目讲解四,环形字符OCR识别

Halcon程序及其讲解。
个人学习笔记
在这里插入图片描述
read_image (Image, ‘D:/shijue/学习笔记/OCR识别/OCR环形字符识别.png’)
rgb1_to_gray (Image, GrayImage)
threshold (GrayImage, Regions, 0, 222)
shape_trans (Regions, RegionTrans, ‘outer_circle’)
*外接圆
complement (Regions, RegionComplement)
*补集
connection (RegionComplement, ConnectedRegions)
select_shape (ConnectedRegions, SelectedRegions, ‘area’, ‘and’, 0, 186779)
smallest_circle (Regions, Row, Column, Radius)
smallest_circle (SelectedRegions, Row1, Column1, Radius1)
*极坐标转化拉直
polar_trans_image_ext (GrayImage, PolarTransImage,Row, Column, rad(60),rad(420), Radius-50,Radius1+20, 1440, 100, ‘bilinear’)
mirror_image (PolarTransImage, ImageMirror1, ‘column’)
invert_image (ImageMirror1, ImageInvert)
scale_image (ImageInvert, ImageScaled, 7.08333, -1502)
binary_threshold (ImageScaled, Region, ‘max_separability’, ‘light’, UsedThreshold)
connection (Region, ConnectedRegions1)
dilation_rectangle1 (ConnectedRegions1, RegionDilation, 5, 5)
union1 (RegionDilation, RegionUnion)
connection (RegionUnion, ConnectedRegions2)
select_shape (ConnectedRegions2, SelectedRegions1, ‘area’, ‘and’, 466.35, 2000)
intersection (SelectedRegions1, Region, RegionIntersection)
sort_region (RegionIntersection, SortedRegions, ‘character’, ‘true’, ‘row’)
read_ocr_class_mlp (‘Industrial_0-9A-Z_NoRej.omc’, OCRHandle)
do_ocr_multi_class_mlp (SortedRegions, ImageMirror1, OCRHandle, Class, Confidence)
smallest_rectangle1 (SortedRegions, Row1, Column1, Row2, Column2)
dev_display (ImageMirror1)
dev_get_window (WindowHandle)
disp_message (WindowHandle, Class,‘ImageMirror1’, Row1, Column1, ‘green’, ‘false’)
stop ()
实现效果
在这里插入图片描述

单步具体讲解:
read_image (Image, ‘D:/shijue/学习笔记/OCR识别/OCR环形字符识别.png’)
//读图
rgb1_to_gray (Image, GrayImage)
//rgb转灰度图。
threshold (GrayImage, Regions, 0, 222)
//灰度阀值提取,选择圆圈部分。
在这里插入图片描述

shape_trans (Regions, RegionTrans, ‘outer_circle’)
//将内部区域进行填充,用于求取最大圆的半径和圆心坐标
complement (Regions, RegionComplement)
//对灰度阀值后的图像进行取补集
connection (RegionComplement, ConnectedRegions)
//断开
select_shape (ConnectedRegions, SelectedRegions, ‘area’, ‘and’, 0, 186779)
//选择最小的圆,用于求内圈圆的半径和圆心
在这里插入图片描述

smallest_circle (Regions, Row, Column, Radius)
//求取最大圆的圆心和半径
smallest_circle (SelectedRegions, Row1, Column1, Radius1)
//求取最小圆的圆心和半径
*极坐标转化拉直
polar_trans_image_ext (GrayImage, PolarTransImage,Row, Column, rad(60),rad(420), Radius-50,Radius1+20, 1440, 100, ‘bilinear’)
//将圆形图像进行极坐标转化。GrayImage:输入的图像。PolarTransImage:输出的图像。Column:最大圆。rad(60):开始点【由于从0度开始,字符段出现断开的现象,所以可以自由选取开始点】。rad(420):结束点【如果我们只需要获取一部分的字符段,则可以控制终止点进行提取】。Radius-50:为最大直径-50像素的区域。Radius1+20:为最小直径+20的区域。【目的是去除除了所需要字符的多余部分】。1440:图像拉直后存放的窗口的长度。100:图像拉直后存放图像窗口的宽度。‘bilinear’:双线性转化。
mirror_image (PolarTransImage, ImageMirror1, ‘column’)
//极坐标转化的图像为逆时针,所以拉直后进行横向镜像翻转。
在这里插入图片描述

invert_image (ImageMirror1, ImageInvert)
//灰度转化,将暗的部分变亮,将亮的部分变暗。方便后面提取字符
scale_image (ImageInvert, ImageScaled, 7.08333, -1502)
//灰度直方图缩放提取,直接提取字符部分,有噪声不影响
binary_threshold (ImageScaled, Region, ‘max_separability’, ‘light’, UsedThreshold)
//快速二值化去除噪声
connection (Region, ConnectedRegions1)
//断开
dilation_rectangle1 (ConnectedRegions1, RegionDilation, 5, 5)
//膨胀形成的样子应该可以看清楚单个字符没有断开的地方
在这里插入图片描述

union1 (RegionDilation, RegionUnion)
//形成一个连通域
connection (RegionUnion, ConnectedRegions2)
//在断开
select_shape (ConnectedRegions2, SelectedRegions1, ‘area’, ‘and’, 466.35, 2000)
//特征选择,去除不需要的部分。一定需要保证单个字符为一个连通域即可
在这里插入图片描述

intersection (SelectedRegions1, Region, RegionIntersection)
//取交集。对单个连通域与拉直二值化翻转后的图像进行取交集
在这里插入图片描述

sort_region (RegionIntersection, SortedRegions, ‘character’, ‘true’, ‘row’)
//排序
read_ocr_class_mlp (‘Industrial_0-9A-Z_NoRej.omc’, OCRHandle)
//读取分类器。工业字体。由于halcon的自带分类器没有&这个字符,所以在没有特殊必须需要的情况,可以跳过&的识别,如果需要,则可以复制一份分类器,自己在原有的基础上使用OCR助手进行添加符号
do_ocr_multi_class_mlp (SortedRegions, ImageMirror1, OCRHandle, Class, Confidence)
//分类器识别
//显示部分
smallest_rectangle1 (SortedRegions, Row1, Column1, Row2, Column2)
dev_display (ImageMirror1)
dev_get_window (WindowHandle)
disp_message (WindowHandle, Class,‘ImageMirror1’, Row1, Column1, ‘green’, ‘false’)
stop ()
在这里插入图片描述

总结:对于环形字符而言,OCR识别和其他状态的字符一样,第一摆正字符。对于环形字符来说,先获取到最大圆,在获取到最小圆,然后对这个区域进行拉直,然后剩下和其他OCR识别的套路是一样的。在遇到特

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-02-07 13:43:59  更:2022-02-07 13:45:39 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 20:26:51-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码