pdf417解码译码
2022-02-15 15:38:13 1 举报
pdf417码解码译码完整流程图
作者其他创作
大纲/内容
icodelen;%不是最后一个码字
符号为ll
mode=3
i=times
mode10%其他模式转到文本模式
判断PDF417的层数
mode=12;
str2:译码结果numlen:数字码字个数cache:要解码的码字newcache:15个码字一组
codelen=decode1(1)
decode1(i+1)900;%后一个码字要改模式=最后一个文本模式码字
str3=char(num);%数字串转字符串
%获取每个黑白块的宽度code(i,t)=j-markt++;mark=j;
premode(1)==1
%字节模式%ingnor
mode10%文本模式?
解码码字装换
%newSx=Sx+外加框newSx(2:m+1)=Sx%确定峰值,并统计层数newSx(i)newSx(i-1)&&newSx(i)newSx(i+1)
i=1:15:numlen
N
tc_uc(decode2(text_i)+1?
Y
disp(pdf417_main(imname))记录相关时间
mode=2/3?
用边缘算子提取图像边缘
开始
mode~=2%其他模式转到数字模式
decode1(i+1)=900;%后一个码字要改模式=最后一个数字模式码字
textmode.mfunction str2 = textmode(decode2)
提取码字
去除最左边和最右边的标识符,留下中间的带有信息的码字
text(textlen)=tcbyte(1);%高位text(textlen+1)=tcbyte(2);%低位textlen+=2;%text长度加2
otherwise
case 901 or case924
text_i=1:textlen
结束
plot(time)计算平均时间
将cache每15个进行分组
mode=13
str3=nummode(num);%译码num中的数字码str=strcat(str,str3);%连接
将此码字对应字符连接到str2的尾部
str2=textmode(text);%译码text中字符对str=strcat(str,str2);%连接
pdf417_decode.mfunction decode1 = pdf417_decode(a)
case 900
分离高地位字符保存到tcbyte
符号为ps
相关数据avgtime : 计算平均时间times: 计算次数t1:每次开始时刻t2:每次结束时刻time[]:每次运行时间
a:图片topso:边缘提取算子lefso:边缘提取算子edge:边缘图像edge2:水平边缘Sx:水平投影k:层数+1(k包括上下边)edge3:垂直边缘decode1:有效码字
a:图像decode1:解码结果codelen:带解码码字长度mode:当前解码模式tcbyte:字符对str:译码结果str2:最后文本译码结果str3:最后数字译码结果text:要文本译码的字符对textlen:最后文本译码长度num:要数字译码的码字numlen:最后数字译码长度
mode=2
根据mode判断相应的子模式
解码decode1=pdf417_decode(a)
水平投影Sx()要做平滑处理,避免在峰值处相邻两点值一样,干扰后面判断峰值
取8个数转换成码字
mode=3;%字节模式
pdf417.m
mode=2;numlen=1;%初始化numlen为1
nummode.mfunction str2 = nummode(cache)
i=2:codelen
%计算900进制转10进制num = num+newcache(j)*sym(9^(15-j))*(100^(15-j));
大写字母模式
%数字模式num(numlen)=decode1(i);%记录数字numlen++;%num长度加1
switch(decode1(i))
结束子模式
mode=premode(2); premode(1)=0;
pdf417_main.mfunction str = pdf417_main(imname)
mode==11or12or13or14?
符号为ml
mode=11;%初始化mode为11textlen=1;%初始化textlen为1
case 902
收藏
0 条评论
下一页