最近要完成一个任务:对8*8的一块图片数据进行zig-zag编码. 
目前我也实现了zig-zag扫描,但不知道如何对扫描后的数据进行编码,在网上找了很久也没找到这方面的东西.请问高手们:zig-zag编码是怎么样的? 先谢谢了! 
比如原始数据是: 
int data[8][8]={ 
5  1  0  0  1  0  0  1 
0  0  4  0  5  0  4  0 
4  2  3  5  2  0  0  0 
2  0  0  1  1  0  0  0 
1  0  1  0  0  0  0  0 
4  5  2  1  2  0  0  0 
0  0  0  0  0  0  0  0 
2  0  0  0  1  3  0  0 }
 
经过zig-zag扫描后生成的数据是: 
int zigzag[64]={ 
 5  1  0  4  0  0  0  4 
 2  2  1  0  3  0  1  0 
 5  5  0  0  4  0  5  1 
 1  2  0  0  1  4  0  1 
 0  2  0  2  0  0  1  0 
 0  0  0  0  0  0  2  0 
 0  0  0  0  0  0  0  0 
 0  1  3  0  0  0  0  0 } 

解决方案 »

  1.   

    就是蛇行取数据嘛,jpeg文档里面有图。
    坐标(0,0)->(1,0)->(0,1)->(2,0)->...
      

  2.   


    我也想要代碼可以跟我說一下可以把二維編成一維的zigzag 代碼嗎?
      

  3.   

    #include<stdio.h>
    #include<math.h>
    #include<stdlib.h>
    int main()
    { int a[3][3]={{1,2,3},{4,5,6},{7,8,9}};
      int b[6];
      int i,j,m, k=0;
      for(i=0;i<3;i++)
     { for(j=0;j<3;j++)
     { printf("%d\t",a[i][j]);
     }
     printf("\n");}
      for(i=0;i<3;i++ )
      {j=0;
       for(m=0;m<=i;m++)
     { b[k]=a[i-m][j+m]; 
      k=k+1;
    }
      }
      printf("\n");
      for(k=0;k<6;k++)
      {printf("%d\t",b[k]);
      }
      system("pause");
      return 0;
    }
    这是小的代码,你只要将数组的大小换成你想要的大小就行了