首页 > 行业资讯 > 【条形码识别】基于形态学实现条形码识别附matlab代码

【条形码识别】基于形态学实现条形码识别附matlab代码

时间:2022-02-25 来源: 浏览:

【条形码识别】基于形态学实现条形码识别附matlab代码

天天Matlab 天天Matlab
天天Matlab

TT_Matlab

博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,完整matlab代码或者程序定制加qq1575304183。

收录于话题

1 简介

在信息时代的今天,随着计算机技术的发展,条形码作为一种简单、方便、廉价、高速的信息保存和传输技术,在世界各地应用广泛,是商品进入国际市场的通行证。本论文的研究基于一种全新的购物理念,即无需排队等待收银员,只需要将选购的商品放入"自助购物系统",便可自助购物买单。目前超市中广泛使用的条形码扫描器是基于光电识别原理制作的,虽然技术成熟、简单,但需收银员人工定位条形码区域,且对条形码质量要求严格,若条形码部分发生断裂、有污渍等现象,则不能正确识读条形码所携带的信息。更不能识读应用越来越广泛的二维条形码。而采用数字图像处理的方法,可首先改善图像质量,减少或消除由噪声、光照不均、图像模糊等带来的对条形码识读的影响,自动定位出条形码区域后再对其进行译码识别。采用图像处理的方法不仅能识读一维条码,也能识读二维条码。通过图像处理技术识读条形码是必然的发展方向。本论文提出了自助购物系统的概念,论述了EAN-13商品条形码的编码规则及技术特点,以及条形码图像识读系统的基本组成。分析了在获取条形码图像过程中存在的问题,针对图像中噪声、光照不均、模糊等问题,提出相应的数字图像处理算法和条形码图像识读方法。

2 部分代码

clc; close all; %启动定时器,测试软件性能 [filename,filepath]=uigetfile( ’*.jpg’ , ’打开文件’ );%gui中打开文件 filep=strcat(filepath,filename); %filep Image=imread(filep); tic; %读取图像并二值化 % Image = imread( ’0081.jpg’ ); level = graythresh(Image); %获取图像二值化的阈值 bw = im2bw(Image,level); %二值化处理 imshow(bw); t = 1 ; p = 1 ; [m n] = size(bw); %初步计数黑白条的书目 q = round(m/ 2 ); for i=q for j= 1 :n- 1 if bw(i,j)== 0 &&bw(i,j+ 1 )== 1 %颜色变化由黑色变成白色,黑条 x(t) = j; t = t+ 1 ; end end end if length(x)~= 30 || length(y)~= 30 display( ’扫码错误!’ ); return ; end if i~=round(m/ 2 ) display( ’该条形码已受损,但仍然可以正常扫描’ ); end %计算每个条—空的宽度,利用所记录在xy数组中的坐标值,对应相减 for ii= 1 : 30 if ii== 1 d(ii)=x(ii)-y(ii); %计算第一个条的宽度 d(ii+ 1 )=y(ii+ 1 )-x(ii); %计算第一个空的宽度 end if ii> 1 if ii> 1 &&ii< 30 d( 2 *ii) = y(ii+ 1 )-x(ii); %分别计算第 2 ~ 29 个空的宽度 d( 2 *ii- 1 )=x(ii)-y(ii); %分别计算第 2 ~ 29 个条的宽度 elseif ii== 30 d(ii* 2 - 1 )=x(ii)-y(ii); %总共有 59 个条-空,单独计算第三十个条的宽度 end end end j = 3 ; end if d==gen( 13 ) coding=gan; d= 1 ; end display([ ’解码:’ ,num2str(gen)]); %测试计时结束 toc;

3 仿真结果

4 参考文献

[1]乔连芝. 基于图像处理方式定位识别条形码[D]. 华南理工大学, 2011.

博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。

部分理论引用网络文献,若有侵权联系博主删除。

版权:如无特殊注明,文章转载自网络,侵权请联系cnmhg168#163.com删除!文件均为网友上传,仅供研究和学习使用,务必24小时内删除。
相关推荐