图像编码概述
相关概念:
图像采集与ISP
色彩空间,从RGB到YUV。视频工程师发现,眼睛对于亮和暗的分辨要比对颜色的分辨更精细一些,也就是说,人眼对色度的敏感程度要低于对亮度的敏感程度
将数字视频转换为YUV,用4:2:0采样方式获得1/2的压缩率。
所谓编码算法,即寻找规律,构建模型。谁能找到更精准的规律,建立更高效的模型,谁就是厉害的算法。
视频里的冗余信息分类:
种类 | 描述 | |
---|---|---|
空间冗余 | 静态图像中存在的主要冗余 | |
时间冗余 | 帧序列中相邻帧包含相同的背景或物体 | |
构造冗余 | 是不是编码冗余或熵冗余 | |
知识冗余 | 由于先验常识导致的信息冗余 | |
视觉冗余 | 由于人视觉系统的不完美,察觉不到某些细微的变化,导致比(应忽略人不可察觉细微)理想编码更多的数据 | |
其他冗余 |
首先解决空间和时间冗余。
DCT
将N维实数变换为相应的系数,并可逆变换。
一维DCT
F ( u ) = 2 N c ( u ) ∑ i = 0 N − 1 f ( i ) c o s ( ( 2 i + 1 ) u π 2 N ) F(u) = \frac{2}{N}c(u)\sum_{i=0}^{N-1}f(i)cos(\frac{(2i+1)u\pi}{2N}) F(u)=N2c(u)i=0∑N−1f(i)cos(2N(2i+1)uπ)
归一化,
2
N
c
(
u
)
∑
i
=
0
N
−
1
f
(
i
)
c
o
s
(
(
2
i
+
1
)
u
π
2
N
)
\sqrt{\frac{2}{N}}c(u)\sum_{i=0}^{N-1}f(i)cos(\frac{(2i+1)u\pi}{2N})
N2c(u)i=0∑N−1f(i)cos(2N(2i+1)uπ)
f
(
i
)
f(i)
f(i)相当于数组的索引,表示第i个元素
c ( u ) = 1 ( 2 ) , u = 0 c ( u ) = 1 , u ≠ 0 c(u) = \frac{1}{\sqrt(2)}, u = 0 \\ c(u) = 1, u \not = 0 c(u)=(2)1,u=0c(u)=1,u=0
二维DCT
8x8 2D DCT
F
(
u
,
v
)
=
c
(
u
)
2
c
(
v
)
2
∑
m
=
0
7
∑
n
=
0
7
f
(
m
,
n
)
c
o
s
(
(
2
m
+
1
)
u
π
16
)
c
o
s
(
(
2
n
+
1
)
v
π
16
)
F(u,v) = \frac{c(u)}{2}\frac{c(v)}{2} \sum_{m=0}^7\sum_{n=0}^7f(m,n)cos(\frac{(2m+1)u\pi}{16})cos(\frac{(2n+1)v\pi}{16})
F(u,v)=2c(u)2c(v)m=0∑7n=0∑7f(m,n)cos(16(2m+1)uπ)cos(16(2n+1)vπ)
熵编码
熵编码需要离散信号的先验概率分布,该分布称为熵模型。
基于神经网络的编解码,将原始图像x转换为隐特征y,对该特征做熵编码。
注意区分y的边缘分布与熵模型,熵模型是参数化的。
神经网络学习获取估计熵模型的能力,即变分自编码器VAE。
Balle 2017的论文称与VAE相似。
量化
简单理解是从连续变量离散化为离散变量。
例子
JPEG 编码流程
图像分块,每块做DCT。
量化,使用一张精心设计的量化表,保留低频信息,去除高频信息。
zig-zag,每块的DC(直流部分)具体用Differential Pulse Modulation,相邻块间DC的差而非DC本身被压缩。
DPCM与RLE
霍夫曼编码与算术编码
JPEG 2000
Discrete Wavelet Transform是该技术的基础
JPEG 2000 包含Motion JPEG 2000,成为数字电影的视频编码标准。
视频编码
I帧:关键帧,自带全部信息的独立帧,完整画面。进行帧内编码。
P帧: 预测编码帧,对前面的I、P帧有依赖性。进行帧间编码。
B帧:双向预测编码帧,以前后帧为参考帧。不适合实时传输。
H264
x264代码
- 主函数:初始化参数
x264_param_t
,根据参数分配帧等内。
C语言
#define x264_encoder_glue1(x,y) x##y
质量评价
编码效果的评价包括主客观评价和客观评价。
客观评价指标
-
峰值信噪比( peak signal noise ratio)
P S N R = 10 l g [ ( 2 n − 1 ) M S E ] PSNR = 10lg[\frac{(2^n-1)}{MSE}] PSNR=10lg[MSE(2n−1)]
MSE为原图与编解码后图像的像素差的均方差;工程中首先求各张图像的MSE,再求多个数值的均值。 -
structural similarity
国际标准
ITU提出的H.26x系列
ISO/IEC提出的MPEG系列
1 Chroma Subsampling
Resolution of Cb Cr can be reduced by half or more.
Huffman coding.
Arithmetic encoding
Psychoacoustics
Psychovisuals
AI-codec
目标函数
L
o
s
s
=
λ
R
+
D
Loss = \lambda R+D
Loss=λR+D
编码参数
https://stackoverflow.com/questions/40668616/whats-the-difference-with-crf-and-qp-in-ffmpeg
qp、crf参数对比
https://slhck.info/video/2017/02/24/crf-guide.html
Constant Rate Factor is a little more sophisticated than that. It will compress different frames by different amounts, thus varying the QP as necessary to maintain a certain level of perceived quality.
进一步参考https://www.codenong.com/cs105772872/
QP参数的区间 0-51 https://www.vcodex.com/news/h264-quantization-parameter/
GPU并行编解码
https://stackoverflow.com/questions/44510765/gpu-accelerated-video-processing-with-ffmpeg
参考
- 数字视频编码技术原理
- A Concise Introduction to Data Compression ISBN-9781848000728