资源简介
matlab一维条形码识别程序,条码为通用的EAN一13条码
代码片段和文件信息
%%------------条码识别,建立宽度序列--------------%%%
%EAN-13条码字符集特点:A/B子集为白开头黑结尾,C子集为黑开头白结尾
%:一个字符由2个条和2个空构成,故A/B子集就是白黑白黑,C子集就是黑白黑白
function [numberbar1]=barcognition(Iheightwidth)
bar=zeros(1width);
znum = zeros(1width);
onum = zeros(1width);
%%%-----------------少数服从多数校正----------------%%%
for i=1:height
for j=1:width
if(I(ij)==0)
znum(1j)=znum(1j)+1;%统计每一列0的个数
else
onum(1j)=onum(1j)+1;%统计每一列1的个数
end
end
end
%%决定宽度序列的二进制码
for i=1:width
if(znum(1i)>onum(1i))
bar(1i)=0;
else
bar(1i)=1;
end
end
%00011000--010
%1000000001100000--10000100
%1111111001111100--1110110
%1111100111111100--1101110
%11000001111111000-1001110
%1000111100000000--1011000
%1100001111111000--1001110
%11001100011--10101
%001111111110011---0111101(3)
%0011111001111111--0110111(8)
%00000110000011111-0010011(2)
%0011111111100111--0111101(3)
%0011001111111111--0101111(6)
%0011111110011111--0111011(7)
%0011000--010
%%--------------校正条形码宽度序列------------------%%
%%%-------------------奇偶校正---------------------%%%
zcout=0;
ocout=0;
count=1;
bar1=zeros(1width+10);
for i=1:width
if(bar(1i)==0)
if(ocout==1) %删补,让它成偶数
bar1(1count)=1;%补上1个1;
count=count+1;
elseif(ocout>8) %4/5
for i=1:(ocout-8)
count=count-1;
end
end
ocout=0;
zcout=zcout+1;
bar1(1count)=0;%累加0
count=count+1;
end
if(bar(1i)==1)
if(zcout==1) %判断前面有多少个0
bar1(1count)=1;%补上1个1;
count=count+1;
elseif(zcout>8) %多于8个的,删除多余的
for i=1:(ocout-8)
count=count-1;
end
end
zcout=0;
ocout=ocout+1; %字符1计数
bar1(1count)=1;
count=count+1;
end
end
number=count-1;
%%-----------------字符集分类-------------------%%
%开始数据(3010),左侧数据(6)中间符(510101),右侧数据(6),结束符(3)
data =zeros(159); %起始符有3个字符
ldata =0; %白黑白黑
count1=1;
oflag=false;
zflag=false;
stflag=true;
for i=1:number
if(stflag==true)
if(bar1(1i)~=0)%判断是否为0,如果不是0则不开始统计数据
continue;%跳过去
else
stflag = false;
end
end
if(bar1(1i)==0)
if(oflag==true)
count1=count1+1;%1切换到0,表示白到黑,换一种类型
oflag=false;
end
zflag=true;
data(1count1)=data(1count1)+1;
%count=count+1;
elseif(bar1(1i)==1)
if(zflag==true)
count1=count1+1; %换一种类型
zflag=false;
end
oflag=true;
data(1count1)=data(1count1)+1;
%count=count+1;
end
end
%[number] = findchar(a1b1a2b2pos)
max = count1-1;
%pos = 0;
%[numvalid]=findchar(data(11)data(12)data(13)‘head‘);
%左侧数据
lnumber=0;
pos =1;
for i=4:4:24
[lnumlvalid]=findchar(data
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 100129 2014-06-03 10:12 codebar\01.jpg
文件 51108 2014-05-27 09:57 codebar\02.jpg
文件 63640 2014-05-27 09:53 codebar\03.jpg
文件 71104 2014-05-21 15:53 codebar\12.jpg
文件 72537 2014-06-03 11:34 codebar\123.jpg
文件 7873678 2014-06-03 11:25 codebar\bar.mp4
文件 3574 2007-11-12 19:43 codebar\barcognition.m
文件 6448 2014-05-21 10:26 codebar\bw3.jpg
文件 8209 2014-06-03 15:18 codebar\codebar.m
文件 8048 2014-05-21 16:35 codebar\codebarreg.m
文件 2409 2007-11-12 19:30 codebar\findchar.m
文件 19608 2014-06-03 10:13 codebar\hs_err_pid7668.log
文件 2354 2014-05-21 16:36 codebar\I5.jpg
文件 1087 2007-11-08 10:32 codebar\ImageEdgePoint.m
文件 4382 2014-06-03 12:00 codebar\imagefilter.m
文件 9683 2007-11-10 15:04 codebar\point2line.m
文件 1282 2007-11-12 19:48 codebar\readme.txt
文件 1110 2007-11-09 15:27 codebar\ThretholdOptimize.m
文件 2359350 2007-11-07 10:12 codebar\w16.bmp
文件 2359350 2007-11-07 10:11 codebar\w7.bmp
文件 2359350 2007-11-07 10:11 codebar\w8.bmp
相关资源
- Spatial Econometrics MATLAB 软件包是将New
- jpg 2 rgb565 matlab code 实现将jpg格式的图
- matlab S-function 编写的离散状态空间表
- matlab重现 正弦信号 重复控制器
-
matlab radar simuli
nk system matlab雷达系统 - matlab图像质心提取
- 基于博弈论的认知无线电无线资源分
- surf算法的matlab代码
- RBF and svm matlab code matlab回归预测的源
- msd CPM多符号检测算法调制解调
- BP神经网络进行多分类matlab代码 (c
- matlab遗传算法 决车辆路径最优化问题
- matlab频域自适应滤波器(FDAF)演示
- reliefF算法的matlab源代码
- ECG心电信号matlab仿真画图
- matlab变色龙聚类算法(chameleon-cluste
- Haar-like特征提取功能
- EOF分解
- matlab叠前反演的代码
- 基于svm dtc 的船舶电力推进系统仿真模
- 各种决策树(tree)分类的代码
- RSSI的无线定位matlab代码
- 解决含有运动力学约束的路径规划问
- 基于人工势场法做的matlab路径规划算
- 无线传感器网络分簇路由算法的matl
- matlab求解图像灰度梯度
- Dollar的人体行为识别的代码(cuboids
- libsvm SVM分类器
- 剪切波变换 (shearlet transform)
- 稀疏表示分类算法SRC在ORL人脸库上的
评论
共有 条评论