- 213
- 0
- 约2.89千字
- 约 6页
- 2017-01-28 发布于重庆
- 举报
JPEG编码器实验报告代码分析
实验报告实验目的通过阅读JPEG编码器代码,了解编码原理、编码过程和代码实现。实验要求详细阅读JPEG编码器代码,结合编码原理,了解整个代码实现的过程输入bmp文件,在VC6.0下跑通代码,查看编码器的压缩倍数对有些模块进行单步跟踪调试,详细了解其过程实验原理JPEG编码的基本过程如下像素阵列分块(分为8*8小块)进行DCT离散余弦变换进行Z字形扫描,将二维阵列变为一维数列进行量化熵编码(Huffman编码)封装为JPG文件本次试验所用bmp转jpg编码器的编码步骤读取bmp文件信息,创建并打开jpg文件8*8分块及色彩空间变换(RGB转YCbCr)快速离散余弦变换FDCT量化Z字形扫描使用差分脉冲编码调制对直流系数DC进行编码使用游程长度编码对交流系数AC编码霍夫曼熵编码代码分析整个代码过程可分为三个部分文件操作对编码所用信息表进行初始化(int_all)主编码器进行编码(main_encoder)主函数分析int main(int argc, char *argv[]){char BMP_filename[64];char JPG_filename[64];WORD width_original,height_original; //the original image dimensions, // before we made them divisible by 8BYTE len_filename;bitstring fillbits; //filling bitstring for the bit alignment of the EOI(end of image) markerif (argc1) {创建并打开jpg文件strcpy(BMP_filename,argv[1]);if (argc2) strcpy(JPG_filename,argv[2]);else { // replace .bmp with .jpgstrcpy(JPG_filename, BMP_filename);len_filename=strlen(BMP_filename);strcpy(JPG_filename+(len_filename-3),jpg);//从后三位开始拷贝jpg.}}else exitmessage(Syntax: enc fis.bmp [fis.jpg]); //BMP_filename=;load_bitmap(BMP_filename, width_original, height_original);//加载bmp文件信息fp_jpeg_stream = fopen(JPG_filename,wb);//创建jpg文件流init_all();//初始化函数,初始化量化、霍夫曼及亮度色差转换表等,为编码做准备SOF0info.width = width_original;SOF0info.height = height_original;//写入图像的宽和高writeword(0xFFD8); // SOI,写入图像开始标志write_A PP0info();// write_comment(Cris made this JPEG with his own encoder);写入jpg文件信息write_DQTinfo();//写入量化表write_SOF0info();//写入帧开始write_DHTinfo();//写入霍夫曼表write_SOSinfo();//写入扫描开始信息// init global variablesbytenew = 0; // current bytebytepos = 7; // bit position in this bytemain_encoder();//主编码函数// Do the bit alignment of the EOI markerif (bytepos = 0) {fillbits.length = bytepos + 1;fillbits.value = (1(bytepos+1)) - 1;writebits(fillbits);}writeword(0xFFD9); // EOI写入图像结束标志释放内存free(RGB_buffer);free(category_alloc);free(bitcode_alloc);fclose(fp_jpeg_stream);}init_all()函数分析void init_all(){set_DQTinfo();//设置量化表信息,进行Z字形重排set_DHTinfo();//设置霍夫曼表信息init_Huffman_tables();//初始化霍夫曼表set_numbers_category_and
原创力文档

文档评论(0)