×

EZW编码器源代码

消耗积分:3 | 格式:rar | 大小:85 | 2010-02-09

王飞云

分享资料个

EZW编码器源代码

该源代码包含有6个文件:
EZW.H - EZW编码器头文件
EZW.C - EZW编码器文件
MATRIX2D.H   MATRIX2D.C - 编码器数据结果定义和数据操作
FIFO.H  FIFO.C - 扫描方式定义:先入先出原则
LIST.H  LIST.C - 零树结构定义和操作
UNEZW.C - EZW解码器
这里,读者重点要掌握的是EZW.C和LIST.C中的内容,充分理解零树的概念。
--------------
EZW编码器
#define debug
#include "ezw.h"
#include "fifo.h"
#include "list.h"
#include "matrix2d.h"
#include
#include
#include
//工作矩阵matrix_2d *M;
//误差值char error;
//用于统计某一数据流中1和0的个数int zeroes, ones;
//编码数据流的输出文件FILE *ezw_file;
//输出字节及编码标志位unsigned char output_byte, mask;
//建立一个数据流输出的文件头ezw_file_header header;
void load_data(matrix_2d *m)
{ int row, col;
 for (row=0; row<8; row++)
 {for (col=0; col<8; col++)
  {//进行工作矩阵的赋值m->m[row][col] = example[row][col];
  }}}
/* * Puts a bit in the output stream.*/
void put_bit(char bit)
{//如果放入的比特为是1,统计1的个数;反之统计0的个数
 if (bit=='1')
 {output_byte |= mask;
  ones++;}
 else zeroes++; mask >>= 1;
  if (mask==0)
 {fwrite(&output_byte,sizeof(output_byte),1,ezw_file);
  output_byte = 0;  mask = 0x80; }}
/* * Puts dominant-pass and subordinate-pass codes in the output stream. */
void output_code(int code)
{//对于一个已经量化且编码后的数据,来判断它的类型。其类型有6种,正如在头文件中定

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !