首页 > 其他分享 >CCITT G3/G4 1D/2D编码

CCITT G3/G4 1D/2D编码

时间:2023-04-13 15:14:51浏览次数:45  
标签:编码 CCITT G4 G3 EOL a1 a0 b1

CCITT G3/G4 1D/2D指:

  CCITT Group3(T.4) 1D(纯1维);

  CCITT Group3(T.4) 2D(至少一行1维(第一行开始连续行),剩余行2维);

  CCITT Group4(T.6) 2D(纯2维);

针对纯黑色(0)和白色(1)的位图编码方案;

 

 

 

CCITT Group3(T.4) 1D:

  1维编码;

  每行以12位EOL(0000 0000 0001)码字开头;最后行编码结束后RTC(6个EOL)结尾;

  每行根据游程长度值参考对应的终止码表或者补给码表编码,必须有终止码例如128长度编码为(补给码128+终止码0),如果行第一位是黑色则在当前行开头加0长的白色;

EOL 编码数据 EOL 编码数据 ··· 编码数据 RTC

例如:

  111100110000

游程长度为:3白,2黑,2白,4黑

对应编码:1000,11,0111,011

结果为:1000110111011

 

例如:

  00000111111001011111

 

游程长度为:0白,5黑,6白,2黑,1白,1黑,5白

对应编码:00110101,0011,1110,11,000111,010,1100

结果为:0011010100111110110001110101100

 

  如果游程长度不在表中,则取小于并最接近长度的值,取差值匹配表中数字,如果任然没有匹配,则继续用差值与小于并最接近差值的值取差值,再匹配,反复直到匹配终止码。

 

例如:长度5294白色

  5294 - 2560 =  2726                      (小于并最接近5294的是2560)

  2726 - 2560 = 166       (小于并最接近2726的是2560)

  166 - 128 = 38          (小于并最接近166的是2560,结果38在数据表中)

对应编码:2560,2560,128,38

对应编码:000000011111,000000011111,10010,00010111
结果为:0000000111110000000111111001000010111

 

CCITT Group3(T.4) 2D:

  1维2维混合编码,第1行开始连续最少1行进行1维编码,后续以2维编码;

        2维编码:以前一行原数据作为参考行对当前编码行编码;

  每行以12位EOL(0000 0000 0001)码字开头加1个标记位,标识下一行是使用1维(1)还是2维(0)编码;最后一行RTC(6个(EOL + 1))结尾;

  

EOL+0或+1 编码数据 EOL+0或+1 编码数据 ··· 编码数据 RTC

 

编码参考位:

        a0:编码线上的参考或起始变化元素。在编码行的开始处,a0被设置在位于该行上的第一个元素之前的假想的白色变化元素上。在编码行的编码期间,a0的位置由先前的编码模式定义;

        a1:编码行上a0右边的下一个变化元素;

        a2:编码线上a1右边的下一个变化元素;

        b1:a0右侧参考线上的第一个变化元素,其颜色与a0相反;

        b2:参考线上b1右边的下一个变化元素;

  当没有对应颜色时对应当前行末尾+1位置;例如a0后面都是白色则a1,a2都是末尾+1位置;

 

编码模式:

  1.通过模式:当b2在a1左侧时;b2对应编码位位置作为下一次编码的a0位置;编码写入码字0001

 

例如:

  参考线:  0  0  1  1  0  1  0  0  0  0  0

                  b1   b2

  编码线:  1  1  1  1  1  1  1  0  0  0  1

        a0              t  a1         a2

  t位置作为a0进行下一此编码。

 

  2.垂直模式:当a1和b1相对距离<=3时;当a1在b1下方V(0),当a1在b1左,相对距离(VL(1),VL(2),VL(3)),在右(VR(1),VR(2),VR(3));a1位置作为下一次编码的a0位置;

例如:

  参考线:  1  0  0  0  1  1  1  0  0  0  0  0

           b1         b2

  编码线:  1  0  0  1  1  1  1  1  1  0  0  0  1

        a0  a1    a2  

  编码线黑色0开头,前面加入一列白色1作为a0,码字V(0);a1位置作为下一次编码的a0位置。

 

  3.水平模式:当既不是通过模式也不是垂直模式时,a2作为下一次编码的a0位置;码字为001+M(a0a1)+M(a1a2);M(a0a1)表示a0a1长度的一维编码,M(a1a2)表示a1a2长度的一维编码;

例如:

  参考线:  0  0  0  0  0  1  1  0  0  0  1

                          b1        b2

  编码线:  1  1  1  0  0  0  0  1  1  1  1

        a0       a1          a2

  M(a0a1) = 3 => 1000;

  M(a1a2) = 4 => 011;

  编码结果:0011000011;

例如:

          -1     第1列

  参考线:  1  1  1  1  1  1  1  0  0  0  1  1

                           b1         b2

  编码线:  1  0  0  1  1  1  1  1  1  0  0  0  1

        a0  a1    a2  

  编码线黑色0开头,前面加入一列白色1作为a0;此种情况M(a0a1)=1;

  M(a0a1) = 0 => 00110101;

       M(a1a2) = 2 => 11;

  编码结果:0010011010111;

通过模式   001
水平模式   001+M(a0a1)+M(a1a2)
垂直模式 V(0) 1
VR(1) 011
VR(2) 000011
VR(3) 0000011
VL(1) 010
VL(2) 000010
VL(3) 0000010
     

标签:编码,CCITT,G4,G3,EOL,a1,a0,b1
From: https://www.cnblogs.com/RedSky/p/17314898.html

相关文章

  • 一文读懂面试官都在问的Log4J2漏洞
    CVE-2021-44228漏洞简介ApacheLog4j2是一个基于Java的日志记录工具,当前被广泛应用于业务系统开发,开发者可以利用该工具将程序的输入输出信息进行日志记录。2021年11月24日,阿里云安全团队向Apache官方报告了ApacheLog4j2远程代码执行漏洞。该漏洞是由于ApacheLog4j2某些功......
  • logback&log4j2异步日志
    Springboot项目默认使用的是logback做日志。在qps比较高的时候我们希望日志异步打印,同步打印日志可能造成打日志都影响性能。下面研究其用法。1.logback0.logback配置<?xmlversion="1.0"encoding="UTF-8"?><configuration><!---日志存放位置--><!--1.......
  • C#添加log4日志
    第一步导入log4net在vs的程序包管理器控制台中执行命令NuGet\Install-Packagelog4net-Version2.0.0第二步加帮助类HttpHelperusingSystem;usingSystem.Reflection;usinglog4net;usinglog4net.Config;namespacePuYangHiqs{publicclassLogger{......
  • H3C F100-C-G3 SNMP 配置
    1、登录设备2、配置system-viewsnmp-agentcommunityreadsimpleAdmin-123snmp-agentsys-infoversionv2cv3snmp-agenttarget-hosttrapaddressudp-domain172.16.24.110paramssecuritynameAdmin-123v2csnmp-agenttrapsourceVlan-interface102#指定监......
  • MyBlog3:4月5日
    MyBlog3:4月5日LeetCode239滑动窗口最大值importjava.util.LinkedList;//leetcodesubmitregionbegin(Prohibitmodificationanddeletion)classSolution{publicint[]maxSlidingWindow(int[]nums,intk){if(k<1||nums==null||nums.length<......
  • Spring4+Hibernate4事务小记
    学习Spring+Hibernate,非常强大的框架,为了追新,就直接从最高版本开始学习了,这要冒很大的风险,因为网上可查到的资料大多是针对旧版本的,比如Spring3,Hibernate3。根据我的测试,记......
  • Spring4 MVC Hibernate4集成
    一、   本文所用环境Spring4.0.3.RELEASEHibernate4.3.5.FinalMysql二、   工程目录 三、   Maven添加依赖用Maven创建项目,pom.xml如下:ViewCode四、  ......
  • Log4j|3-23
    Log4j是一种非常流行的日志框架,最新版本是2.x。Log4j是一个组件化设计的日志系统,它的架构大致如下:log.info("Usersignedin.");││┌──────────┐┌......
  • AcWing3696 -- topsort & 贪心
    1.题目描述给定我们一些有向边和无向边,判断在将所有无向边确定方向后,能否生成一个有向无环图2.思路思路其实真的非常简单。我根据题目给定的有向边做一次\(top......
  • 【漏洞复现】Apache Log4j2 lookup JNDI 注入漏洞(CVE-2021-44228)
    【漏洞复现】ApacheLog4j2lookupJNDI注入漏洞(CVE-2021-44228)0x01漏洞描述ApacheLog4j2是一个基于Java的日志记录工具,是对Log4j的升级,它比其前身Log4j1.x......