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 | |