m基于EAN13字符编码规则的一维条形码条码宽度计算和数字译码matlab仿真

1.算法仿真效果

matlab2022a仿真结果如下:


2.算法涉及理论知识概要

条码技术是在计算机的应用实践中产生和发展起来的一种自动识别技术,条码应用技术就是应用条码系统进行的信息处理技术。条码技术的研究始于20世纪中期,是继计算机技术应用和发展应运而生的。随着70年代微处理器的问世,标志着“信息化社会”的到来,它要求人们对社会上各个领域的信息、数据实施正确、有效、及时的采集、传递和管理。因此如何代替人的视觉、人的手工操作、或者在复杂的环境中正确、迅速地获取信息并加以识别,成为人们普遍关心和有关人员精心研究的课题。通俗的说条形码是指在浅色衬底上印有深色矩形的线条(也称条码)排列而成的编码,其码条和空白条的数量和宽度按一定的规则(标准)排列。条形码是由一组规则排列的条、空、相应的数字组成。这种用条、空组成的数据编码可以供机器识读,而且很容易译成二进制数和十进制数。这些条和空可以有各种不同的组合方法,构成不同的图形符号,即各种符号体系,适用于不同的应用场合。条码系统是由条码符号设计、制作及扫描阅读组成的自动识别系统。微电子技术和激光技术的发展使得条码识别系统越来越受到人们的关注。条码是迄今为止最经济、实用的一种自动识别技术。


2.1一维条码概述

条码可分为一维条码(One Dimensional Barcode, 1D) 和二维码(Two Dimensional Code, 2D)两大类,目前在商品上的应用仍以一维条码为主,故一维条码又被称为商品条码,二维码则是另一种渐受重视的条码,其功能较一维条码强,应用范围更加广泛。通常一个完整的条码是由两侧空白区、起始字符、数据字符、校验字符、终止字符组成,以一维条码而言,其排列方式通常如表1所示:



1、空白区


位于条码两侧无任何符号及资讯的白色区域,主要用来提示扫瞄器准备扫瞄。


2、起始字符


指条码符号的第一位字码,用来标识一个条码符号的开始,扫瞄器确认此字码存在后开始处理扫瞄脉冲。


3、数据字符


位于起始字符后面的字码,用来标识一个条码符号的具体数值,允许双向扫瞄。


4、校验字符


用来判定此次阅读是否有效的字码,通常是一种算术运算的结果,扫瞄器读入条码进行解码时,先对读入各字码进行运算,如运算结果与检查码相同,则判定此次阅读有效。


2.2EAN-13码符号的特征

(1)条码符号的整体形状为矩形。由一系列互相平行的条和空组成,四周都留有空白区。


(2)条空分别由1-4个同一宽度的的深或浅颜色的模块组成。深色模块用“1”表示,浅色模块用“0”表示。


(3)在条码符号中,表示数字的每个条码字符仅由两个条和两个空组成,共7个模块。


(4)除了表示数字的条码字符外,还有一些辅助条码字符,用作表示起始、终止的分界符和平分条码符号的中间分隔符。


(5)条码符号可设计成既可供固定式扫描器全向扫描,又可用手持扫描设备识读的形式。


(6)条码符号的大小可在放大系数的两个极限值所决定的尺寸之间变化,以适应不同印刷工艺的需求及用户对印刷面积的要求。


(7)对一个特定大小的条码符号所规定的尺寸称为名义尺寸,放大系数的范围0.8-2.0。


(8)供人识别的字符规定采用OCR-B字符。


2.3EAN-13码符号的特征

EAN-13条码的一个字符。条、空宽度的定义如下:图中C1、C2、C3、C4表示每个字符中四个相邻条、空的宽度,T表示一个字符的宽度。



设一个字符中单位模块的宽度为n,则单位模块的宽度:


n=T/7


T=C1+C2+C3+C4


由于条码条、空宽度C1、C2、C3、C4已知,设条码条、空分别占单位模块的个数为mi,则:


mi=ci/n(其中i取1、2、3、4)


因此,由mi可知道条码的编码。例如:


(1)若m1=2、m2=2、m3=2、m4=1;


条码的排列为条-空-条-空,


则可知条码编码为1100110,是右侧偶性字符1;


(2)若m1=1、m2=2、m3=1、m4=3;


条码的排列为空-条-空-条,


则可知条码编码为0110111,是右侧奇性字符8。


3.MATLAB核心程序

%图片转换为灰度图

if size(bar_image,3) == 3

bar_image       = rgb2gray(bar_image);

else

bar_image       = bar_image;    

end

subplot(222);imshow(bar_image/0.5);title('原始图像的灰度图');

%添加噪声

bar_image_noise = imnoise(bar_image,'salt & pepper',noise_level);

subplot(223);imshow(bar_image_noise/0.5);title('加入噪声后的图像');

%进行中值滤波

bar_image_filter= medfilt2(bar_image_noise,[filter_area filter_area]);

subplot(224);imshow(bar_image_filter/0.5);title('滤波之后的图像');




%% 参数初始化

%% 参数初始化

%% 参数初始化

%二值化参数

level = 0.8;

%左边和右边数据编码

codes = [3211,2221,2122,1411,1132,1231,1114,1312,1213,3112;

1123,1222,2212,1141,2311,1321,4111,2131,3121,2113];

%第一位数据编码     

first_codes = [31,20,18,17,12,6,3,10,9,5];   

%求灰度图的大小

[height,width]      = size(bar_image_filter);

%二值化参数

bar_image_filter_10 = im2bw(bar_image_filter,level);



%% 条码检测

%% 条码检测

%% 条码检测


%检测59根条形码

l = 0;   

for i=1:height

k = 1;

l = l+1;


for j=1:width-1

%比较同一行相邻两点的颜色是否一致

if bar_image_filter_10(i,j)>bar_image_filter_10(i,j+1) | bar_image_filter_10(i,j)< bar_image_filter_10(i,j+1)  

Y_position(l,k) = j; %记录坐标

k = k+1;        

end

if k>61

l = l-1;

break

end

end


if k<61

l = l-1;

end

end



[height,width] = size(Y_position);


if height<=1

disp('无效的条形码');

else

%条形码的宽度

bar_width = func_Tiaox_width(Y_position,height,width);

%条形码的宽度

[bar_sum2,Left_bar_number,Right_bar_number]=func_eachwidth(bar_width,height);


bar_number      = '';

bar_fist_number = 0;

first           = 2;

%左边编码查出条形码编码

.......................................................................

end

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,457评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,837评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,696评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,183评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,057评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,105评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,520评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,211评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,482评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,574评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,353评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,213评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,576评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,897评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,174评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,489评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,683评论 2 335

推荐阅读更多精彩内容