最近要完成一个任务:对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 }
目前我也实现了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 }
坐标(0,0)->(1,0)->(0,1)->(2,0)->...
我也想要代碼可以跟我說一下可以把二維編成一維的zigzag 代碼嗎?
#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;
}
这是小的代码,你只要将数组的大小换成你想要的大小就行了