数据压缩实验报告4 DPCM编码

数据压缩实验一实验报告 阅读详情

1.DPCM编码原理
DPCM是差分预测编码调制的缩写,是比较典型的预测编码系统。在DPCM系统中,需要注意的是预测器的输入是已经解码以后的样本。之所以不用原始样本来做预测,是因为在解码端无法得到原始样本,只能得到存在误差的样本。因此,在DPCM编码器中实际内嵌了一个解码器,如编码器中虚线框中所示。在这里插入图片描述
2.部分关键代码
(1)量化

unsigned char quantization(int bits, int x) 
{
	int k = 0;
	switch (bits) 
	{
	case 1:
		k = (int)((x + 255) / 255.5);
		break;
	case 2:
		k = (int)((x + 255) / 127.75);
		break;
	case 4:
		k = (int)((x + 255) / 31.9375);
		break;
	case 8:
		k = (int)((x + 255) / 2.0);
		break;
	default:
		cout << "error" << endl;
		exit(0);
		break;
	}
	return (unsigned char)temp;

(2)反量化

int inverse_quantization(int bits, unsigned char x)
 {
	int k = (int)x;
	switch (bits)
	 {
	case 1:
		k = (int)((k * 255.5 + 127.75) - 255 + 0.5);
		break;
	case 2:
		k = (int)((k * 127.5 + 63.75) - 255 + 0.5);
		break;
	case 4:
		k = (int)((k * 31.9375 + 15.96875) - 255 + 0.5);
		break;
	case 8:
		k = (k * 2) - 255;
		break;
	default:
		cout << "error" << endl;
		exit(0);
		break;
	}
	return k;
}

(3)DPCM编码

    for (int j = 0; j < h; j++)
     {
        for (int i = 1; i < w; i++)
        {
            ybuff_pre_d[j * w + i] = ybuff[j * Width + i] - ybuff_rebuild[j * w + i - 1];
            ybuff_pre[j * w + i] = quantization(bits, ybuff_pre_d[j * w + i]);
            int k;
            k = ybuff_rebuild[j * w + i - 1] + inverse_quantization(bits, ybuff_pre[j * w + i]);
            if (k > 255)
                k = 255;
            else if (k < 0)
                k = 0;
            ybuff_rebuild[j * w + i] = (unsigned char)k;
         }
     }

(4)计算PSNR

double psnr(int bits, int w, int h, int* x) 
{
	double psnr = 0;
	double mse = 0;
	for (int i = 0; i < w * h; i++) 
		mse += pow(*(x + i), 2);
	mse = mse / (w * h);
	psnr = 10 * log10(pow((pow(2, bits) - 1), 2) / mse);
	return psnr;
}

3.实验结果图(左边为原始图像,中间为预测误差图像,右边为重建后的图像)
在这里插入图片描述
在这里插入图片描述
(后续的Huffman编码捣鼓了半天没弄出来,目前只能先写到这里了)

数据压缩 DPCM编码 DPCMcoding实验原理在一个DPCM系统中,有两个因素需要设计:预测器和量化器。理想情况下,预测器和量化器应进行联合优化。实际中,采用一种次优的设计方法:分别进行线性预测器和量化器的优化设计。 在本次实验中,我们采用固定预测器和均匀量化器。预测器采用左侧、上方预测均可。 量化器采用8比特均匀量化。预测编码基本原理 信源的相邻符号通常是相关的。 相邻像素具有相关性。 预测编码: 利用信 阅读详情

相关推荐

数据压缩编码方法

经典的数据压缩算法 三大类:预测编码、变换编码、统计编码 常用的解除相关性的措施是预测和变换,其实质都是进行序列的映射。 一般,预测编码有可能完全解除序列的相关性,但须确知序列的概率特性;变换编码一般只解除矢量内部的相关性,但它可有许多可供选择的变换方法,以适应不同的信源特性。 一、预测编码: 若有一个离散信号序列,序列中各离散信号之间有一定的关联性,则利用这个序列中若干个信号作为依据

xinianbuxiu的博客 1万+

数据压缩实验三 Huffman编解码算法实现与压缩效率分析

一、实验原理 1、Huffman编码 Huffman  Coding(哈夫曼编码)是一种无失真的编码方式,是可变字长编码(VLC)的一种。 Huffman编码基于信源的概率统计模型,它的基本思路是:出现概率大的信源符号编长码,出现概率小的信源符号编短码,从而使平均码长最小。 在程序实现时常使用一种叫树的数据结构实现Huffman编码,由它编出的码是即时码。 2、Huffman编码方法

zgyggy的博客 3810

数据压缩实验4-DPCM编码

一、实验原理 1.      预测编码 预测编码是根据离散信号之间存在着一定关联性的特点,利用前面一个或多个信号预测下一个信号进行,然后对实际值和预测值的差(预测误差)进行编码。如果预测比较准确,误差就会很小。在同等精度要求的条件下,就可以用比较少的比特进行编码,达到压缩数据的目的。 2.      DPCM编解码原理 DPCM(Differential Pluse Code

fang_na的博客 903

《数据压缩》实验报告一·YUV2RGB实验

yuv转rgb格式实验报告

ininw的博客 486

数据压缩试验四:使用 DPCM 编码进行图像压缩

使用 DPCM 编码进行图像压缩 基本原理 DPCM,即差分脉冲编码调制(Differential Pulse Code Modulation),通过对图像进行预测编码并缩减图片预测误差的动态范围来实现图像的压缩。本次试验中只对亮度信号 Y 通道进行编码压缩,将图片的第一列像素值作为原始参考值进行预测,通过与左侧的像素值取差计算预测误差,然后进行量化编码。以下为 DPCM 编码端与解码端的原理图 ...

Zachary_Chia的博客 1593

实验(四)DPCM编码的实现和分析

DPCM编码原理简介 DPCM全称差分脉冲编码调制(Differential Pulse Code Modulation),是一种利用相邻像素的相关性去除空间冗余信息达到压缩目的的算法。 其中xn为输入信号,Q为量化器,dn=pn+xn为预测误差,P为延时器。 本实验采用前向预测,即每个像素左边的像素,大致算法如下: 以8bit图像为例,收到的灰度取值为[0,255],与前一个像素作差和得到误差...

weixin_43175007的博客 2810

数据压缩实验报告3 LZW编解码

写在前面:本次实验由老师写好了LZW编码的代码,先理解了已有代码之后,自己再写解码代码时比较容易。下面给出完整的代码以及实验结果 bitio.h(全部由老师给出,自己写了一些注释) /* * Declaration for bitwise IO * * vim: ts=4 sw=4 cindent */ #ifndef __BITIO__ #define __BITIO__ #inclu...

Tangent_Chase的博客 662

实验四——DPCM编码

一.实验原理     DPCM是差分预测编码调制的缩写,是比较典型的系统。在DPCM系统中,需要注意的是预测器的输入是已经解码以后的样本。之所以不用原始值来做预测,是因为在解码端无法得到原始样本,只能用存在误差的解码之后的数据,因此DPCM编码器中实际内嵌了一个解码器。     在一个 DPCM系统中,有两个因素需要设计:预测器 和量化。理想情况下系统中,预测器和量化采取联合优化的方式。而在实

zj_jane的博客 1257

数据压缩原理与应用 DPCM编码

一.实验原理1.预测编码 本次实验采用的是DPCM编码,DPCM是差分预测编码调制的缩写,是比较典型的预测编码系统。 预测编码是利用信源相邻符号之间的相关性进行编码的一种编码过程,一般的图像前后像素都会存在一定的关联性,而且前后像素的差值(预测误差)将小于原像素的值,所以仅仅存储预测误差将会大大降低数据率。根据某一模型利用以往的样本值对新样本进行预测,然后将样本的实际值与其预测值相减得到一个误差

lanee_lee的博客 2001

数据压缩实验四:DPCM编码

一、基本原理 DPCM是差分预测编码调制的缩写,是比较典型的预测编码系统。在DPCM系统中,需要注意的是预测器的输入是已经解码以后的样本。之所以不用原始样本来做预测,是因为在解码端无法得到原始样本,只能得到存在误差的样本。因此,在DPCM编码器中实际内嵌了一个解码器,如编码器中虚线框中所示。 二、实验流程 1. 读入BMP文件,转化为YUV文件并提取Y分量; 2. 对该灰度图像

namino_的博客 671

数据压缩(八)——DPCM编码

用DPCM编码输出预测误差图像和重建图像。将预测误差图像写入文件并将该文件输入Huffman编码器,得到输出码流、给出概率分布图并计算压缩比。将原始图像文件输入Huffman编码器,得到输出码流、给出概率分布图并计算压缩比。 DPCM编码原理 DPCM是差分预测编码调制的缩写,是比较典型的预测编码系统。在DPCM系统中,需要注意的是预测器的输入是已经解码以后的样本。之所以不用原始样本来做预测...

weixin_45430791的博客 723

数据压缩实验4——DPCM编码

数据压缩实验3——DPCM编码一、DPCM原理二、代码实现1、重要代码讲解2、整体代码展示三、实验结果 一、DPCM原理 预测编码是根据某一模型利用以往的样本值对于新样本值进行预测,然后将样本的实际值与其预测值相减得到一个误差值,对于这一误差值进行编码。如果模型足够好且样本序列在时间上相关性较强,那么误差信号的幅度将远远小于原始信号,从而得到较大的数据压缩结果。 预测编码方法分线性预测和非线性预测编码方法。线性预测编码方法,也称差值脉冲编码调制法,简称DPCM。 encoder图中输入信号Xn是某一像素点的

weixin_45756474的博客 509

数据压缩实验报告

数据压缩实验报告 内容完整 实验目的 实验步骤 实验结果

实验四 DPCM编码

一、实验原理 1、预测编码 预测编码利用的是信源相邻符号间的相关性。根据某一模型利用以往的样本值对新的样本值进行预测。然后将样本的实际值与预测值相减得到一个误差值,最后对这一误值进行编码。如果模型足够好且样本序列在时间上相关性比较强,则误差信号的幅度将远远小于原始信号,从而得到较大的数据压缩。 一个好的预测器的预测误差通常满足0周围高峰值的分布。 2、量化(标量量化和矢量量化) 量化是用

zsy2415535899的博客 5841

哈夫曼实现文件压缩的实验报告

报告中不仅有完整的哈夫曼树实现文件的压缩和解压缩功能,还有算法的结构流程图和主函数的简单结构图,程序中有中文注释,可读性比较强,文末还附有本人的心得体会

《用哈夫曼编码实现文件压缩》实验报告

《用哈夫曼编码实现文件压缩》实验报告 只是一个报告~~~

DPCM编码

实验原理 预测编码的原理 在数字图像中,如果不是随机的噪声,那么每个像素与其周围的像素都会存在着一定的关联,像素值很大程度上依赖于其邻域中其它像素的值。也就是预测误差(在这个实验中用当前像素值与前一个像素值的差来表示)应该非常接近,通常比单个的像素值要小。因此如果只存储预测误差,由预测误差也可以重构出原图像,而且这样可以降低图像中的冗余信息,实现图像的压缩。   如果用前面几个样值的线性

qq_37641650的博客 6992
上一篇: 数据压缩实验报告3 LZW编解码
下一篇: 数据压缩作业 最小二乘法、梯度下降法、牛顿法、高斯牛顿法
タン
博客等级 码龄8年 15粉丝 14原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值