Halcon条码和二维码质量评级
现在各行各业的人们都使用条码/二维码从生产阶段到销售点全程追踪他们
的产品。那么怎么验证生产出来的具有可读性,码的质量等级如何呢?
其实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”图案相对侧的水平和垂直时钟图案(或轨迹)。时钟图案指定矩阵中模块的数量,并用于读码放置模块的网格。有关符号大小、编码和纠错的所有信息均由矩阵的大小决定。
读码过程如下:
采集图像。
软件使图像模糊化,以消除背景中的噪音或纹理。
计算模糊图像上的全局阈值。全局阈值是指用于确定单元格是更接近于白色还是黑色的设置值。
软件将其转换为黑白(亦称为“二进制”)图像。为了对图像进行二值化处理,软件会使用具有灰度值的模糊图像,然后将每个像素转换为黑色或白色。
软件将追踪线条,以找到“L”图案并寻找时钟图案。本质上,它是在查找定位图案。
基于时钟齿的间距,生成参照读码网格。
在网格相交处,绘制一个圆圈(光圈),并将所包含的光值与阈值进行比较,创建一个基于单元格颜色(称为“位流”)的二进制数据序列。
使用Reed-Solomon纠错功能对位流(数据序列)进行纠正。
将校正后的位流将转换为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可以得到质量参数值,如下:
Halcon条码和二维码质量评级相关推荐
- 条码条形码二维码检错系统供应
条码条形码二维码检错系统可防止因人为误操作.设备损坏等原因导致的错误,减少产品的退货返工,避免客户的投诉,提高工作效率.减少人力成本.适用于各种需要对条码进行检查的场合,如标签打印检查.装箱前对箱型 ...
- 微信小程序条码、二维码生成模块
代码地址如下: http://www.demodashi.com/demo/13994.html 一.前期准备工作 软件环境:微信开发者工具 官方下载地址:https://mp.weixin.qq.c ...
- ZPL 打印条码、二维码及小票(中文/汉字),生成条码、二维码图片【Asp.Net】-含示例代码
生成条码(图1).二维码(图2)图片及打印出二维码标签(图3)效果 图1 图2 ...
- OpenCV检测与识别条码、二维码
原文链接:http://www.juzicode.com/opencv-note-barcodedetector-qrcodedetector 在 zbar:给我来10G打码图片 一文中桔子菌介绍了 ...
- 条码打印软件中如何导出条码或二维码矢量文件到Coredraw和Ai
在通过coredraw或ai进行矢量设计时,我们经常会用到条码,虽然可以用上述软件直接生成一个条码或二维码,但约束多,更多情况下设计出来的条码识别等级也打不到A级.其实,大家完全可以先在条码打印软件中 ...
- Zxing条码扫描二维码扫描简化
最近需要用到条码扫描二维码扫描的功能,于是搜索到google开源项目zxing,项目地址:http://code.g....com/p/zxing/ 下载了源代码,项目太大了,很多东西都不需要用到,我 ...
- Android之条码扫描二维码扫描
Android之条码扫描二维码扫描 二维码条形码扫描,参考技术网址: 1.Apache License 2.0 开源的 ZXing项目的简化版 http://xinlanzero.iteye.com/ ...
- excel数据生成条码或者二维码并放在表格中(VBA)
最近做的项目要将一列数据生成条码和二维码,并打印 这是一个简单的表格操作嵌入式脚本目的是生成二维码或条码 直接上代码 Sub 批量生成二维码()Dim k As Long, i As Long, j ...
- H5 嵌入条码和二维码生成
效果动画演示 实现步骤 第一步:创建窗口"H5" 第二步:找到对应的H5处理页面(自己可以自行开发,或开发打印功能都可以的) Html5页面对应的页面代码如下: <!DOCT ...
最新文章
- 阿里云 云服务器 ECS——创建与绑定密钥对
- Java编程基础篇第四章
- windows平台搭建Mongo数据库复制集(类似集群)(一)
- springboot页面乱码问题
- 【C++基础学习】引起类模板被实例化情形总结
- python矩阵操作_Python中的矩阵操作
- 使用.NET为Window Mobile写自动化工具的无奈之处.
- React15.6.0实现Modal弹层组件
- python 核心编程 练习题
- php免杀书籍,php免杀教程【绝对原创+首发】
- word添加自定义样式(导入normal.dotm)
- wincc服务器不能创建项目,wincc不能创建和打开项目
- Xcelsius 使用XML做为数据源 ----利用ASP与数据库进行交互,即时刷新
- mysql 未找到 WinSxS_window_win7系统如何使用WinSxS工具安全删除WinSxS文件夹垃圾?,WinSxS文件:
WinSxS是系统文件Wi - phpStudy...
- 概率论中常见分布的数学期望、方差及特征函数推导 (一)离散型随机变量
- Lua实现简单的任务动画移动(Animator)
- idea使用lombok的时候无法找到log,编译时无法找到log
- Ubuntu 14.04更新源
- rust 局域网联机_Steam上有哪些值得推荐的可以多人局域网联机的游戏?
- 大创项目(记录自己的教训)
热门文章
- h5响应式布局、PC和移动端适配方案
- 2.STM32F427llHX(大疆A板) 点亮小灯(库函数版本)
- vsomeip第一课: vsomeip的安装和demo演示
- 有哪些平台是和连连支付合作的?连连支付可以跨境支付?
- pic单片机ccp脉冲捕捉c语言程序,PIC18F的CCP模块的捕捉模式实现电机测速的方法...
- 《pigcms v6.2最新完美至尊版无任何限制,小猪微信源码多用户微信营销服务平台系统》
- 《2021大数据产业年度最具投资价值企业》榜重磅发布丨金猿奖
- 百度地图SDK导航功能初始化错误
- go map fatal error:concurrent map read and map write
- squid代理服务之透明代理的配置方法