二维行程编码(2D RLE)

二维行程编码和一维行程编码类似,只是具有相同字符的长度值表示的是包含相同字符的正方形的边长。即编码时,水平方向和垂直方向的符号数必须相同。下面通过例子加以说明。

  例子:

图7-10 二维行程编码

  编码过程:对于左边的8*8的图像,从左到右,从上到下,一行一行扫描、编码。

  遇到已经被编码的字符,要跳过,到下一个未被编码的字符。

  第一步: X方向有3个符号05,但Y方向只有2个符号05,所以,正方形的大小只能取2*2,即边长为2,编码为:05 02

  第二步: X方向有1个符号05,Y方向虽然有2个符号05,但正方形的大小只能取1*1,即边长为1,编码为:05 01

  第三步: X方向有1个符号10,Y方向有2个符号10,正方形的大小只能取1*1,即边长为1,编码为:10 01

  第四步: X方向有4个符号21,Y方向有6个符号21,正方形的大小取4*4,即边长为4,编码为:21 04

  第一行的编码已经结束,转到第二行。由于第二行的前二个字符也已经被编码,所以跳过,对第三个字符开始编码。

  第五步: X方向有1个符号05,Y方向有1个符号05,正方形的大小取1*1,即边长为1,编码为:05 01

  第六步: X方向有1个符号10,Y方向有7个符号10,正方形的大小取1*1,即边长为1,编码为:10 01

  由于第二行的后四个字符21已经被编码,所以跳过,转到第三行。

  第七步: X方向有4个符号10,Y方向有6个符号10,正方形的大小取4*4,编码为:10 04

  由于第三行的后四个字符21,和第四行的8个字符,第五行的前4个字符都已经被编码,所以跳过,转到第五行的后4个字符。

  第八步: X方向有2个符号21,Y方向有2个符号21,正方形的大小取2*2,编码为:21 02

  第九步: X方向有2个符号31,Y方向有4个符号21,正方形的大小取2*2,编码为:31 02

  由于第六行的8个字符都已经被编码,所以跳过,转到第七行。

  第十步: X方向有4个符号10,Y方向有2个符号10,正方形的大小取2*2,编码为:10 02

  下面按同样的方法编码,得:10 02, 15 01,31 01, 31 02, 15 01, 31 01

你可能感兴趣的:(vc++)