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表。