DCPM编码的原理及编程实现

DCPM编码的原理及程序实现

一、DCPM编码原理

1、预测编码

预测编码: 利用信源相邻符合之间的相关性

  • 根据某一模型利用以往的样本值对新样本进行 预测,然后将样本的实际值与其预测值相减得 到一个误差值,最后对这一误差值进行编码。
  • 如果模型足够好,且样本序列在时间上相关性 较强,则误差信号的幅度将远远小于原始信号 ,从而得到较大的数据压缩。

2、图片说明

在这里插入图片描述
在DPCM系统中有两个因素需要设计,一个是量化器,一个是预测器。理想情况下预测其和量化器应进行联合优化,实际中采用一种次优的设计方法:分别进行线性预测器和量化器的设计。在本次试验中我们采用固定预测器和均匀量化器,预测器采用左侧、上侧均可(代码中采用左侧),量化器采用8bit量化。

二、具体内容实现

1、c++语言程序

  1. 头文件 DCPM.h
#pragma once

#define DCPM_H_INCLUDED
#include"iostream"
#include"math.h"
#include"stdio.h"
#include"malloc.h"
using namespace std;
void DpcmEn(unsigned char* yBuff, unsigned char* preerr, unsigned char* level, int h, int w, int q) {
   
    int prediction;
    int err;
    int i;
    int j;
    int a;
    int b;
    for (i = 0; i < h; i++) {
   
        prediction = 128;
        err = yBuff[i * w] - prediction;
        a = (err + 128) / pow(2, 8 - q);
        if (a > pow(2, q) - 1) {
   
            a = pow(2, q) - 1;
        }
        if (a < 0) {
   
            a = 0;
        }
        preerr[i * w] = a;
        b = preerr[i * w] * pow(2, 8 - q) - 128 + prediction;
        if (b > 255) {
   
            b = 255;
        }
        if (b < 0) {
   
            b = 0;
        }
        level[i * w] &#
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值