基于DM642的JPEG压缩初步设计

来源:互联网 发布:微盘程序源码 编辑:程序博客网 时间:2024/05/24 23:14
 
JPEG材料整理
 
处理目标:将1600*1200大小的YUV 4:2:0 8bit文件压缩成为JPEG文件,并通过网口传输。
 
编码参数设定
设定视频图像的基本信息,包括:
视频起始帧号:
视频结束帧号:
当前帧位置:
图像的宽:
图像的高:
采样格式:4:4:4,4:2:2,4:2:0或灰度……
图像色彩类型:单分量或多分量
DCT类型:
量化质量(5~95):
量化类型(整型、浮点):
是否使用自有量化表:
 
PS:量化质量系数(quality)的测定:
Quality<50: quality=5000/quality
Quality>50: quality=200-quality*2
对与量化系数的处理是:(basictable[i]*quality+50)/100
 
l       图像预处理
对于已采样好的4:2:0图像,我需要将其处理成适合做JPEG的大小。
1.       将它的宽和高分别扩展为8的倍数,便于分块。
Jpeg_frame_expandborder_mod8()
CCD目前采入图像为1688*1236 
2.       设定分块方法。
 
PS:考虑是否要将8bit数据扩展为16bit进行运算呢?TI IMGLIB中提供了IMG_pix_expand函数,对于一帧1600Í1200图像进行扩展的运算量为3Í(1600Í1200Í1.5)/16+15= 540,015.
 
l       前向DCT变换
TI的IMGLIB里提供了IMG_fdct_8Í8()函数(16位输入),一帧1600Í1200图像运算量约为76*((1600*1200*1.5)/64)+50=3,420,050.
目前对FDCT的优化方法主要有:
 
 
l       量化
         TI的IMGLIB里提供了IMG_quantize()函数(16位输入),一帧1600Í1200图像运算量约为64/16Í((1600*1200*1.5)/64)*8+26= 1,440,026.
         JPEG对DC和AC提供不同的量化表,JPEG标准给量化表给出了建议,标准本身也支持使用用户自定义的量化表。
 
l       行程编码
JPEG对与DC和AC系数采用不同的处理方法。
对DC系数采用DPCM编码,去除DC中的冗余,因为图像中的DC系数通常变化是连续的。
对AC系数采用Zigzag扫描,对扫描结果进行行程编码。
 
l       熵编码
JPEG建议使用huffman编码或算术编码。多份资料显示算术编码并不能对编码效果有显著提高暂定采用huffman编码。使用huffman编码,JPEG支持对DC和AC系数采用不同的huffman表。
 
原创粉丝点击