您现在的位置:首页 >> 图像处理 >> 内容

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

时间:2023/2/6 21:02:51 点击:

  核心提示:09_014_m,包括程序操作录像+word论文...

1.完整项目描述和程序获取

>面包多安全交易平台:https://mbd.pub/o/bread/Y56bm51r

>如果链接失效,可以直接打开本站店铺搜索相关店铺:

点击店铺

>如果链接失效,程序调试报错或者项目合作可以加微信或者QQ联系。

2.部分仿真图预览



3.算法概述

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

4.部分源码

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

%图片转换为灰度图

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

09_014_m

作者:我爱C编程 来源:我爱C编程
本站最新成功开发工程项目案例
相关文章
  • 没有相关文章
相关评论
发表我的评论
  • 大名:
  • 内容:
本类固顶
  • 没有
  • FPGA/MATLAB商业/科研类项目合作(www.store718.com) © 2025 版权所有 All Rights Reserved.
  • Email:1480526168@qq.com 站长QQ: 1480526168