DPCM编码
来源:互联网 发布:境外电视台直播软件 编辑:程序博客网 时间:2024/06/05 23:52
实验原理
预测编码的原理
在数字图像中,如果不是随机的噪声,那么每个像素与其周围的像素都会存在着一定的关联,像素值很大程度上依赖于其邻域中其它像素的值。也就是预测误差(在这个实验中用当前像素值与前一个像素值的差来表示)应该非常接近,通常比单个的像素值要小。因此如果只存储预测误差,由预测误差也可以重构出原图像,而且这样可以降低图像中的冗余信息,实现图像的压缩。
如果用前面几个样值的线性组合来预测当前的样值,称为线性预测,只用前一个样值进行预测,就称为 DPCM
DPCM
编码器
解码器
在一个DPCM系统中需要设计两个部分
预测器 量化器
理想情况下,应同时优化预测器和量化器,但 实际应用中,采用一种次优化方法 在这种方法中,量化电平数必须足够大 (M>=8)才能获得好的性能
实验流程及代码分析
1. 写入BMP文件,利用实验2的程序将其转化为YUV文件,并提取Y部分。
2. 对该灰度图像进行预测,计算预测误差(预测器的输入为上一个样点的重建值)。
3. 对预测误差进行8bit均匀量化。
4. 对量化后的预测误差进行反量化,求出重建值。
5. 将预测误差图像写入文件,并将该文件输入Huffman编码器,得到输出码字的必要信息。将原始灰度图像输入Huffman编码器,得到码字必要信息。比较两种系统(DPCM+熵编码和仅进行熵编码)之间的编码效率
for ( int i = 0; i < height; i++) { float yp=128;//yp为预测值 for (int j = 0; j < width; j++) { float m=(float)*(yBuf+i*width+j)-yp;//差值 m/=2;//量化 *(q+i*width+j)=(u_int8_t)(m+128);//量化误差 //m*=2;//反量化 *(yBuf+i*width+j)=(u_int8_t)(m+yp);//重建后的样本 yp=(float)*(yBuf+i*width+j);//更新预测值 } } //将重建后的值写入文件 fwrite(yBuf, 1, width*height, yuv1File); ++videoFramesWritten; //将量化误差写入文件 fwrite(q,1,width*height,qFile);
实验结果分析
实验结论
对于相邻像素相关性高的灰度图像,量化误差集中在 0 附近,DPCM+熵编码的系统性能最优
- DPCM编码
- DPCM编码
- 实验四-dpcm编码
- 数据压缩 DPCM编码
- 实验四 DPCM编码
- 【实验五】DPCM编码
- 实验四 DPCM编码
- 实验4 DPCM编码
- 实验四:DPCM编码
- 进入编码(RLC,DPCM)
- DPCM差分预测编码
- 数据压缩实验四:DPCM编码
- 数据压缩实验4-DPCM编码
- 数据压缩实验四:DPCM编码
- DPCM
- DPCM
- DPCM
- 标准DPCM编码(Matlab实现)
- 如何给项目划分模块
- 正则表达式
- 记录一些笔记
- FFmpeg 源代码简单分析:avformat_network_init ()
- tomcat ssl配置 证书基于阿里平台申请的免费铁门塞克证书
- DPCM编码
- 一.BeautifulSoup 多进程抓取智联招聘信息,并且存储到mongodb
- 移除链表倒数第n个元素
- 慕客网学习总结:mysql数据库,操作数据表中的记录
- 冬令时和夏令时及国外时间处理
- 003 JavaWeb之JavaScript入门
- 无人艇操纵系统研究
- 四种mysql存储引擎
- ajax获得json对象数组 循环输出数据