Halcon条码和二维码质量评级

news2024/11/5 18:36:17

   现在各行各业的人们都使用条码/二维码从生产阶段到销售点全程追踪他们

的产品。那么怎么验证生产出来的具有可读性,码的质量等级如何呢?

    其实ISO行业标准已经给出了如何评估码的质量等级的标准,以下三种主要验证标准用于确定一维条码、二维码和DPM码的质量。

  • 一维条码使用ISO 15416标准。

  • 印刷在标签上的二维码使用ISO 15415标准。

  • 二维DPM码使用ISO/IEC TR 29158标准(也称为AIM DPM标准)。

1 条码质量

    一维条码由一系列条与空组成,这些条与空基于宽度模式创建一组数据。每个单独的条或空被称为一个元素。一组形成特定模式的条与空称为字符。每种符号体系都拥有一组可转换为字符的不同模式。

    读取一维条码时,扫描线将横向穿过代码来测量反射率,以确定条与空的大小和模式。当扫描线在整个代码上移动时,光线在穿过空模块时会被反射,并被条模块吸收。从暗到亮的光路创建了扫描反射率剖面图(“SRP”)。当扫描线穿过较暗的条时,它将导致SRP下降至全局阈值以下;然后,当扫描线穿过较亮的空时,它将再次上升至全局阈值以上。

    图片中的虚线代表全局阈值,该阈值定义了划分明与暗的灰度值。

    每个参数均基于SRP被评级。理想情况下,相比条或空,SRP在大小上是一致的,准确地模仿了所读取的代码。此图片中的代码显示了具有缺陷和调制问题的代码示例。当扫描线穿过缺陷点时,光路开始下降,以一个凹陷使平滑的曲线被中断。此外,还有一个空不像其他空那样明亮,因此反射率剖面图不会达到与其他空元素相同的高度,这揭示了存在调制问题。

    使用ISO 15416标准评级过程,通过求取10条扫描线的平均值对一维条码进行评级。根据9个不同的参数对每条扫描线进行评级,以评估可读性。评级最低的参数将成为扫描线的扫描评级。然后求取所有扫描评级的平均值,以计算总体评级。

    ISO15416标准参数解释和常见解决方案如下:

    下面是代码测试:

create_bar_code_model ([], [], BarCodeHandle)
*如果需要输出质量,则要开启持久模式,
set_bar_code_param (BarCodeHandle, 'persistence', 1)
*最大解码个数
set_bar_code_param (BarCodeHandle, 'stop_after_result_num', 0)
*最小条形码宽度
set_bar_code_param (BarCodeHandle, 'barcode_width_min', -1)
*最小条形码高度
set_bar_code_param (BarCodeHandle, 'barcode_height_min', -1)
*最少字符数
set_bar_code_param (BarCodeHandle, 'min_code_length', 0)
*最少对比度
set_bar_code_param (BarCodeHandle, 'contrast_min', 10)

dev_close_window ()
dev_open_window (0, 0, 600, 600, 'black', WindowHandle)
set_display_font (WindowHandle, 16, 'mono', 'true', 'false')
dev_update_off ()
dev_set_draw ('margin')
dev_set_color ('green')
dev_set_line_width (3)

read_image (Image, 'C:/Users/Administrator/Desktop/bb.png')
dev_resize_window_fit_image (Image, 0, 0, -1, -1)
find_bar_code (Image, SymbolRegions, BarCodeHandle, 'Code 128', DecodedDataStrings)
area_center(SymbolRegions, Area, Row, Column)
get_bar_code_result (BarCodeHandle, 0, 'quality_isoiec15416_labels', Labels)
get_bar_code_result (BarCodeHandle, 0, 'quality_isoiec15416', Quality)

  quality_isoiec15416_labels可以得到质量参数,quality_isoiec15416可以得到质量参数值,如下:

2 二维码质量

    质量良好的二维码的特点在于黑模块与白模块之间具有高对比度,边线清晰,并且比例理想。即使是微小的瑕疵,也可能导致代码出现问题。

    Data Matrix符号体系可能是最常见的二维码。它可以在每个模块中实现最高的数据密度,尤其是对于较小的符号而言,因此评级质量至关重要。定位图案由实心的左侧和底侧组成,其形成“L”图案及“L”图案相对侧的水平和垂直时钟图案(或轨迹)。时钟图案指定矩阵中模块的数量,并用于读码放置模块的网格。有关符号大小、编码和纠错的所有信息均由矩阵的大小决定。

    读码过程如下:

  1. 采集图像。

  2. 软件使图像模糊化,以消除背景中的噪音或纹理。

  3. 计算模糊图像上的全局阈值。全局阈值是指用于确定单元格是更接近于白色还是黑色的设置值。

  4. 软件将其转换为黑白(亦称为“二进制”)图像。为了对图像进行二值化处理,软件会使用具有灰度值的模糊图像,然后将每个像素转换为黑色或白色。

  5. 软件将追踪线条,以找到“L”图案并寻找时钟图案。本质上,它是在查找定位图案。

  6. 基于时钟齿的间距,生成参照读码网格。

  7. 在网格相交处,绘制一个圆圈(光圈),并将所包含的光值与阈值进行比较,创建一个基于单元格颜色(称为“位流”)的二进制数据序列。

  8. 使用Reed-Solomon纠错功能对位流(数据序列)进行纠正。

  9. 将校正后的位流将转换为ASCII值,以显示代码中的数据。

    ISO15415标准评级过程如下:

    ISO15415标准参数解释和常见解决方案如下:

    下面是代码测试:

read_image (Image1, 'C:/Users/Administrator/Desktop/board/ecc200_disturbed_002.png')
create_data_code_2d_model ('Data Matrix ECC 200', [], [], DataCodeHandle)
find_data_code_2d (Image1, SymbolXLDs, DataCodeHandle, ['stop_after_result_num'], [2], ResultHandles, DecodedDataStrings)
get_data_code_2d_results (DataCodeHandle, 0, 'quality_isoiec15415_labels', ResultValues)
get_data_code_2d_results (DataCodeHandle, 0, 'quality_isoiec15415', ResultValues2)

  quality_isoiec15415_labels可以得到质量参数,quality_isoiec15415可以得到质量参数值,如下:

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/95847.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

毕业设计 - 基于Java EE平台项目管理系统的设计与实现【源码+论文】

文章目录前言一、项目设计1. 模块设计2. 实现效果二、部分源码项目工程前言 今天学长向大家分享一个 java web项目: 基于Java EE平台项目管理系统的设计与实现 一、项目设计 1. 模块设计 从管理员角度看: 用户登入系统后,可以修改管理员的密码。同时具有以下功能…

最全的SpringMVC教程,终于让我找到了

1. 为啥要学 SpringMVC&#xff1f; 1.1 SpringMVC 简介 在学习 SpringMVC 之前我们先看看在使用 Servlet 的时候我们是如何处理用户请求的&#xff1a; 配置web.xml <?xml version"1.0" encoding"UTF-8"?> <web-app xmlns"http://xmln…

[附源码]Python计算机毕业设计国际美容会所管理系统Django(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程 项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等…

Jetpack Compose中的动画

Jetpack Compose中没有沿用Android原有的View动画和属性动画&#xff0c;而是新创建了一套全新的动画系统API&#xff0c;这是理所当然的&#xff0c;因为旧的动画系统主要是基于View体系的&#xff0c;而Compose中需要针对的是Composable可组合函数进行处理&#xff0c;那么势…

他文献查到凌晨两点,我用Python十分钟搞定!

大家好&#xff0c;我是爱学习的王饱饱。 对于应届毕业生来说&#xff0c;今年一定是难熬的一年。本来找工作、写论文就已经是两座大山了&#xff0c;还要面临论文无指导的额外压力。 这让我想到了去年毕业的表弟&#xff0c;当时他为了完成论文&#xff0c;摔烂了三个鼠标。…

Jsp服装商城包安装调试

(https://img-blog.csdnimg.cn/78351365dac24f6185cb69ee3a804ba1.png)jsp mysql新季服装商城 功能&#xff1a;前台会员中心后台 前台&#xff1a; 1.服装展示 图文列表 新闻列表 详情 2.注册登录 管理登陆 3.加入购物车 会员中心&#xff1a; 1.个人账户 查看 修改个人…

一个新的React项目我们该如何配置

最近组长让我负责一个新的项目&#xff0c;项目的技术栈是React typescript redux and design&#xff0c;一个工龄1年的小白菜只能先去github找开源项目看看他们做了哪些配置&#xff0c;然后去百度这些配置改如何安装。下面就是我记录一个新的React项目配置的过程。 安装…

知识图谱有哪些应用领域?

知识图谱通常应用于自然语言处理和人工智能领域&#xff0c;常用于提高机器学习模型的准确性和效率。它还可以用于数据挖掘、信息检索、问答系统和语义搜索等领域。近年来知识图谱在电子商务、金融、公安、医疗等行业逐步开始落地&#xff0c;在这些行业的渗透、深入中&#xf…

部门还有谁在? 已经没几个人了~

正文大家好&#xff0c;我是bug菌&#xff5e;终于熬过了阳性的第三天&#xff0c;症状相对没之前那么痛苦了&#xff0c;打算要家里面的兄弟帮忙处理点事情&#xff0c;一个电话打过去&#xff0c;没想到整个部门都没几个人了&#xff0c;病毒的毒性是减弱了&#xff0c;这传染…

Linux进程概念(一)

Linux进程概念冯诺依曼体系结构操作系统操作系统是什么操作系统与硬件的关系操作系统如何管理硬件数据操作系统与软件的关系操作系统的安全操作系统的服务系统调用和库函数概念进程的基本概念什么是进程如何查看进程进程常见的调用冯诺依曼体系结构 常见的计算机&#xff08;台…

牛客题霸sql入门篇之条件查询(三)

牛客题霸sql入门篇之条件查询(三) 3 高级操作符 3.1 高级操作符练习(1) 3.1.1 题目内容 3.1.2 示例代码 SELECT device_id,gender,age,university,gpa FROM user_profile WHERE gendermale AND gpa>3.53.1.3 运行结果 3.1.4 考察知识点 AND关键字表示会筛选出符合左右两…

java DDD领域分层架构设计思想

1为什么要分层 高内聚&#xff1a;分层的设计可以简化系统设计&#xff0c;让不同的层专注做某一模块的事低耦合&#xff1a;层与层之间通过接口或API来交互&#xff0c;依赖方不用知道被依赖方的细节复用&#xff1a;分层之后可以做到很高的复用扩展性&#xff1a;分层架构可…

正则表达式总结

React15前的渲染方式 React15以前&#xff0c;React是用全量渲染的方式进行页面渲染&#xff0c;每次更新都需要整个页面重新渲染。全量当数据量大的时候&#xff0c;页面就会掉帧卡顿。 为什么需要React Fiber 为了解决上述React15带来的卡顿问题&#xff0c;我们不能让一个…

PG::PyExp

nmap -Pn -p- -T4 --min-rate1000 192.168.115.118 nmap -Pn -p 1337,3306 -sCV 192.168.115.118 1337端口是ssh服务&#xff0c;3306是数据库&#xff0c;没有web服务&#xff0c;只能尝试进行爆破。 由于不知道ssh用户名&#xff0c;所以尝试root用户爆破3306端口。 hydra …

昆仑万维或将引领国内 AIGC 技术发展

AIGC 发展历程 如果说 2021 年是元宇宙元年&#xff0c;那么 2022 年绝对可以称作 AIGC 元年。自从 Accomplice 于 2021 年 10 月推出 Disco Diffusion 以来&#xff0c;AIGC 受到了前所未有的关注&#xff0c;相关产品和技术更是以井喷之势快速更新迭代。 AIGC&#xff08;A…

C++ Reference: Standard C++ Library reference: Containers: map: map: rend

C官网参考链接&#xff1a;https://cplusplus.com/reference/map/map/rend/ 公有成员函数 <map> std::map::rend C98 reverse_iterator rend(); const_reverse_iterator rend() const; C11 reverse_iterator rend() noexcept; const_reverse_iterator rend() const noe…

Unity - 搬砖日志 - MatierlaPropertyDrawer 中的参数如何匹配 - 自定义 Attribute 的参数提取

环境 Unity : 2020.3.37f1 搬一下砖&#xff0c;并记录&#xff0c;免得后续重新搬砖 完成的测试shader Shader "Unlit/TestMyEnuMatAttributeShader" {Properties{_MainTex ("Texture", 2D) "white" {}[MyEnumMatAttribute] _TestProp (&quo…

前端CSS实现苹果官网文字渐入效果

效果 分析 文字是从左到有慢慢呈现出来&#xff0c;不是整体消失和出现&#xff0c;那么肯定不能使用透明度。 我们可以想到渐变文字&#xff0c;然后通过改变背景的位置来控制文字的显示与隐藏。 渐变文字 渐变文字该如何实现呢&#xff1f;这是实现这个效果的关键步骤。 其…

计算机毕设Python+Vue校园闲置物品管理系统的实现(程序+LW+部署)

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

看了那么多SSM整合,这一篇真的很用心。

1.邂逅 SSM 前言 记得大二上学期老师第一次讲 SSM 整合的时候&#xff0c;自己竟然浑浑噩噩睡过去了。 平时上课不好好听讲&#xff0c;后来听说期末要交大作业了&#xff0c;只能被迫去网上自学。 不对。。。少打个S&#xff0c;不过这真的是我第一次搜 SSM 的资料&#xff0…