Image and Video Processing课程学习(一)图像压缩

最近在学习图像处理,课程是杜克大学的Image and Video Processing: From Mars to Hollywood with a Stop at the Hospita,原课程带中文字幕来自Coursera,此外B站有英文字幕的版本(看的话直接在两个网站搜名字就好了)。

本文仅仅是自己对所学内容的梳理,如果想学习请务必观看原视频,看不懂的话可以再来贴下讨论

第一章没什么内容,所以我从图像压缩开始~

这一部分主要讲了JPEG图像的压缩规则,整个过程分为取样、DCT、量化、编码4个部分,原视频是从后往前讲的。
在这里插入图片描述

编码

编码规则较简单,霍夫曼编码,整个过程就是先算出所有值的比重(下图一),给比重的值编码的位数小,接着按照比重分布往下排编码位数(下图二)。这样就比给所有的像素都赋予一样位数的编码要节省很大空间。在这里插入图片描述在这里插入图片描述

量化

量化和重分类规则较像,说白了就是划分很区间,把相应区间像素值用该区间表示,比如0~9用0表示,10—19用1表示此类。区间分的越大,量化结果就越小。此外,JPEG采用的均匀区间。

DCT(离散余弦变换)

啥时图像压缩,图像压缩说白了就是用少量的要素用表示一张图像,比如每8*8部分的像素可以用一个值(系数)替代?没错,这就是我们想要的图像压缩,怎么替代呢?教授提出了KLT变换,我们熟知的主成分分析就是KLT变换的一个特例。但是我们用主成分分析的都知道,做主成分分析(PCA)要用原图像来求第一主成分啊,我们难道要拿到原图像再去算么?麻烦!于是教授又提出了离散余弦变化。
说实话,我之前是没有信号处理这方面基础知识的,于是花点时间恶补了一下傅里叶变换。我建议大家如果不熟悉的也可以去补一下(知乎有科普,B站有公式推导),再进行后面的学习。而我们要做的类似于二维傅里叶变换(大致原理参见下图一,就是用有限的排布去尽量贴合原图像)。那么为什么不傅里叶变换反而又要用离散余弦变换呢?教授又给出了原因(下图二):离散余弦变化和傅里叶不同的是前者是取后者的一个子集,也就是把余弦那部分信号拿出来了,在周期变化是呈现偶函数的特征,即对称。对称有个好处,看起来是连续的,适合图像的特性,毕竟图像一般只有存在边界的时候像素差别才会很大。
在这里插入图片描述
在这里插入图片描述

取样

又回到熟知的88取样环节了哦,为什么是88呢,首先先测试取像块是不是越大越好。
下图从左到右分别为原图,22,44,88,都是按照不同块级进行离散余弦变换并取25%的系数显示。看结果,嗯,取样块是越大越好,但是,那我们为什么不采用1616或更大呢?
在这里插入图片描述
教授给了两个原因:
1.计算机处理小块图像会更快
2. 当块太大时,块里内容关联性会降低(马尔科夫链),于是离散余弦变换效果会下降。

无损压缩

无损压缩,流程见下图二。大致原理就是设计一个预测器,能根据像素周围像素值预测该像素值,再计算误差,之后不保存该像素值而是保存误差。这样子需要保存的数据量会大大降低(见下图二)。此外,视频的无损压缩思想也很相似,和用周边像素相似,视频某一帧的像素用其他帧像素来预测,只储存误差。
在这里插入图片描述
在这里插入图片描述

游程编码

这个就非常简单了,在此不表