JPEG编码中的DCT与量化

本文详细介绍了JPEG编码中的核心步骤——8×8的二维DCT变换和量化。通过实例展示了从读取8×8亮度数据块,到进行DCT变换、量化、逆量化,再到逆DCT变换的完整过程,帮助理解JPEG图像压缩算法。
摘要由CSDN通过智能技术生成

研一上很快过去了,留下了若干课程资料的文件夹。最近整理一下这些资料,挑选一些有用的课程作业贴到博客里面来。

1. 简介

JPEG是最常用的有损图像压缩算法,而8×8的二维DCT(离散余弦变换)变换和量化又是该算法中的核心步骤。本文作业的例子,是针对一个8×8的数据块进行正反二维DCT变换、量化和反量化。

2. 作业题目

逐个读入8×8(十六进制文本串格式的)亮度数据块,依次进行二维DCT变换、量化(采用标准亮度量化表)、逆量化和逆二维DCT变换。输出原始数据、变换后的数据、量化表、量化后的数据、逆量化的数据和反变换的数据。

3. 过程

这里写图片描述
这里写图片描述

4. 源码

/*
 * main.cpp
 *
 *  Created on: 2016.10.17
 *  Author: liboyang
 */
#include <iostream>
#include <stdlib.h>
#include <math.h>
#include <fstream>
#include <string>
#include <iomanip>
#define MAXSIZE 64
#define COL 8
#define ROW 8
#define PI 3.1415926
using namespace std;

int Char2Int(char c);

void getIntInput(int index, int counterRow, string input);

void DCT(int index);

void IDCT(int index);

void Quantisation(int index);

void inverseQuantisation(int index);


string inputString[4][ROW];
int inputInt[4][ROW][COL];
double outputDCT[4][ROW][COL];
double outputIDCT[4][ROW][COL];
double outputQuan[4][ROW][COL];
double outputInverseQuan[4][ROW][COL];
int quantisationChart[ROW][COL]= {
        {
  16,11,10,16,24,40,51,61},
        {
  12,12,14,19,26,58,60,55},
        {
  14,13,16,24,40,57,69,56},
        {
  14,17,22,29,51,87,80,62},
        {
  18,22,37,56,68,109,103,77},
        {
  24,35,55,64,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值