视频图像帧内编码实验1
- 格式:doc
- 大小:328.46 KB
- 文档页数:7
视频编码多媒体数据量大的特点给多媒体存储和传输带来了很大的障碍,多媒体数字压缩技术的出现使多媒体存储和传输成为可行。
压缩编码技术主要利用了数据之间的冗余、人类的心理感知的冗余等原理,使人们在降低多媒体数据大小的情况下,还能够获得很好的音视频质量。
视频编码属于压缩编码,它将原始视频进行编码从而获得一定压缩比和质量的编码后视频。
目前视频编码标准主要有MPEG-1、MPEG-2、MPEG-4,以及可视电话会议电视的H.261、H.264等等,采用的一些压缩技术有分层编码、多描述编码等等。
⏹MPEG-4标准与编码器XVIDMEPG-4的目标是针对极低码率(<64kbps),这是视频压缩标准的最后一个比特率范围。
MPEG-4与MPEG-1、MPEG-2的最根本区别是,MPEG-4是基于内容的压缩编码方法,它将一幅图像按内容分割成子块,将感兴趣的物体从场景中截取出来,进行编码处理,同时基于内容或物体截取的子块内信息相关性强,可以产生高压缩比效果。
另外,基于物体的子块,其运动的估计和表示就有可能使用物体的刚性运动或非刚性运动模型来描述,它比基于宏块的描述要高效的多。
MPEG-4具有高压缩性、基于内容交互以及基于内容分级扩展,具有基于内容方式表示的视频数据。
它引入了视频物体(VO)和视频物体平面(VO Plane)等概念来实现基于内容表示。
基于内容分级扩展使用了分层可扩展和精细可扩展编码FGSC技术,它将视频分为基本层和增强层,在基本码率之上的任何带宽增加都可以得到视频质量的改善,这对适应网络状态随时变化的特性十分有益。
Xvid是一种视频编解码器(codec),它是一款开放源代码的MPEG-4视频编解码器,创建于2001年,通过GPL协议发布。
Xvid关注MPEG-4视频压缩,早期的Xvid version0.9x版本实现了MPEG-4 simple profile(SP)的编解码,而在1.0版本中引入了MEPG-4 的advanced simple profile(ASP),其中包括了所有高级编码工具,如1/4像素运动补偿和GMC等等。
视频编码之I帧、P帧、B帧
视频传输原理
视频是利⽤⼈眼视觉暂留的原理,通过播放⼀系列的图⽚,使⼈眼产⽣运动的感觉。
单纯传输视频画⾯,视频量⾮常⼤,对现有的⽹络和存储来说是不可接受的。
为了能够使视频便于传输和存储,⼈们发现视频有⼤量重复的信息,如果将重复信息在发送端去掉,在接收端恢复出来,这样就⼤⼤减少了视频数据的⽂件,因此有了H.264视频压缩标准。
在H.264压缩标准中I帧、P帧、B帧⽤于表⽰传输的视频画⾯。
I帧⼜称帧内编码帧,是⼀种⾃带全部信息的独⽴帧,⽆需参考其他图像便可独⽴进⾏解码,可以简单理解为⼀张静态画⾯。
视频序列中的第⼀个帧始终都是I帧,因为它是关键帧。
2、P帧
P帧⼜称帧间预测编码帧,需要参考前⾯的I帧才能进⾏编码。
表⽰的是当前帧画⾯与前⼀帧(前⼀帧可能是I帧也可能是P帧)的差别。
解码时需要⽤之前缓存的画⾯叠加上本帧定义的差别,⽣成最终画⾯。
与I帧相⽐,P帧通常占⽤更少的数据位,但不⾜是,由于P帧对前⾯的P 和I参考帧有着复杂的依耐性,因此对传输错误⾮常敏感。
B帧⼜称双向预测编码帧,也就是B帧记录的是本帧与前后帧的差别。
也就是说要解码B帧,不仅要取得之前的缓存画⾯,还要解码之后的画⾯,通过前后画⾯的与本帧数据的叠加取得最终的画⾯。
B帧压缩率⾼,但是对解码性能要求较⾼。
总结:
I帧只需考虑本帧;P帧记录的是与前⼀帧的差别;B帧记录的是前⼀帧及后⼀帧的差别,能节约更多的空间,视频⽂件⼩了,但相对来说解码的时候就⽐较⿇烦。
因为在解码时,不仅要⽤之前缓存的画⾯,⽽且要知道下⼀个I或者P的画⾯,对于不⽀持B帧解码的播放器容易卡顿。
图像编码是一种广泛应用于数字图像处理中的技术。
其中,哈夫曼编码作为一种优秀的编码算法,被广泛应用于图像压缩领域。
本文将对哈夫曼编码技术在图像编码中的应用进行详细解析。
一、哈夫曼编码的原理哈夫曼编码是一种变长编码算法,它通过将出现频率较高的字符用较短的编码表示,而将出现频率较低的字符用较长的编码表示,从而实现对数据的高效编码。
在图像编码中,每个像素点都可以看作是一种字符,其灰度值即表示该字符的频率。
二、图像编码的需求在图像编码中,我们往往需要将图像的原始数据进行压缩,以便存储和传输。
而压缩的核心思想就是通过减少冗余信息来减少数据的存储和传输量。
哈夫曼编码正是解决这一需求的有效方法之一。
三、基于哈夫曼编码的图像编码方案在图像编码中,我们可以将哈夫曼编码应用于两个方面:图像压缩和图像解压缩。
1. 图像压缩在图像压缩中,我们首先需要对图像进行离散余弦变换(Discrete Cosine Transform, DCT),将图像从空域变换到频域。
然后,我们将变换后的图像进行量化,将高频部分进行舍弃。
接下来,我们将量化后的图像进行分块,并统计每个像素值出现的频率。
最后,利用哈夫曼编码算法对出现频率进行编码,生成一个哈夫曼编码表。
这个编码表包含了每个像素值对应的变长编码,从而实现了对图像数据的高效压缩。
2. 图像解压缩在图像解压缩中,我们首先需要读取压缩后的图像文件,并解析出哈夫曼编码表。
然后,我们根据哈夫曼编码表对压缩数据进行解码,恢复出原始的像素值。
接下来,我们对解码后的数据进行逆量化和逆离散余弦变换,将图像从频域变换到空域。
最后,我们将逆变换后的图像数据进行重建,得到原始的图像。
四、哈夫曼编码的优势和应用哈夫曼编码作为一种变长编码算法,与传统的定长编码相比,具有如下优势:1. 数据压缩率高:哈夫曼编码可以根据字符的频率灵活选择编码长度,从而大大减少了数据的存储和传输量,实现了高效的数据压缩。
2. 无损压缩:哈夫曼编码是一种无损压缩算法,可以保证压缩后的数据与原始数据完全一致。
视频编码与HEVC中帧内编码的简要介绍作者:李晨曦来源:《数码设计》2019年第09期摘要:视频编码又称视频压缩。
随着多媒体时代与网络时代的到来,用户对数字媒体的要求越发提高。
由于未经压缩的视频数据过于庞大,视频压缩技术应运而生并随着软硬件设备的迭代而逐渐进化。
本文以H.264/AVC编码器原理为基础简单介绍了视频编码的基本原理,并与新一代视频编码标准H.255/HEVC的帧内编码模块进行了比较。
关键词:视频编码;HEVC;H.264;帧内编码中图分类号:TP13;;;;; 文献标识码:A;;;;; 文章编号:1672-9129(2019)09-0056-03A brief introduction of video coding and intra coding in HEVCChenxi Li(School of Computer Science, Southwest Petroleum University, Chengdu Sichuan 610500, China)Anstract: Video coding is also known as video compression. With the advent of the multimedia and network era, users' demands for digital media have increased. Since uncompressed video content is too large, video compression technology has emerged and evolved with the iteration of hardware and software. This paper briefly introduces the basic principle of video coding and compares it with the intra-frame coding module of the new generation video coding standardH.265/HEVC.Key words: Video coding; H.264/AVC; H.265/HEVC; intra coding1; 视频压缩简介隨着多媒体时代的到来,用户对视频质量与传输速度的要求也越来越高。
一种新的用于屏幕图像编码的HEVC帧内模式陈先义;赵利平;林涛【摘要】由于传统编码方式对屏幕图像的编码效果不佳,该文根据屏幕图像包含大量非连续色调内容的特点,在HEVC(High Efficiency Video Coding)基础上,提出一种新的帧内编码模式称为帧内串匹配(Intra String Copy, ISC)。
基本思想是在HEVC的编码单元(Coding Unit, CU)级别上,引入字典编码工具:编码时,在一定长度的字典窗口内,利用散列表,对当前CU内的像素,进行串搜索和匹配;解码时,根据像素串匹配的距离和匹配长度,在重建缓存内复制相应位置像素重建当前CU像素。
实验结果表明,在编码复杂度增加很少的情况下,对于典型的屏幕图像测试序列,在全帧内(All Intra, AI),随机接入(Random Access, RA),低延迟(Low-delay B, LB)3种配置下,有损编码模式比HEVC分别节省码率15.1%,12.0%,8.3%,无损编码模式分别节省码率23.3%,14.9%,11.6%。
%Because of the poor effect of the traditional coding methods on the screen content coding, considering the screen content is rich in non-continuous tone content, a new intra coding mode based on High Efficiency Video Coding (HEVC), which is called Intra String Copy (ISC), is proposed. The basic idea is adopting the dictionary coding tool on the HEVC Coding Unit (CU) level. When encoding, the current CU pixels are searched and matched in a certain length dictionary window by using Hash table. When decoding, according to the pixels string matching distances and lengths, the current CU pixels in the reconstruction cache are restored by copying the corresponding position pixels. Experiment results show that with little coding complexity increase than HEVC, for typical screen contenttest sequences, ISC can achieve lossy coding bit-rate saving of 15.1%, 12.0%, 8.3% for All Intra (AI), Random Access (RA), and Low-delay B (LB) configurations, respectively, and lossless coding bit-rate saving of 23.3%, 14.9%, 11.6% for AI, RA, and LB configurations.【期刊名称】《电子与信息学报》【年(卷),期】2015(000)011【总页数】6页(P2685-2690)【关键词】高效视频编码;屏幕图像编码;字典编码;散列表【作者】陈先义;赵利平;林涛【作者单位】同济大学超大规模集成电路研究所上海 200092;同济大学超大规模集成电路研究所上海 200092; 嘉兴学院数理与信息工程学院嘉兴 314000;同济大学超大规模集成电路研究所上海 200092【正文语种】中文【中图分类】TN919.8随着云计算、移动云计算、远程桌面和无线显示技术的发展,如何在低码率下使屏幕图像在电脑屏幕、手机屏幕、电视屏幕和其它客户端上高质量地显示,吸引了学术界和工业界的关注。
视频编码技术是将视频信号进行压缩以减小文件大小和提高传输效率的一种技术。
在视频编码中,运动模式分析与检测是其中一个重要的步骤。
本文将从基本概念、运动估计算法、运动检测方法以及应用方面进行分析与讨论。
一、基本概念1. 运动模式:视频中物体的运动状态可以用运动模式来描述,常见的运动模式包括静止、匀速、加速、减速等。
2. 运动矢量:运动矢量是描述运动模式的一种数学表示,用于表示物体在图像上的移动距离和方向。
3. 帧间编码:帧间编码是一种视频压缩技术,通过对连续视频帧之间的差异进行编码,进而减少数据的冗余性。
二、运动估计算法1. 块匹配法:块匹配法是一种常用的运动估计算法。
它将图像分为多个块,通过在参考帧和当前帧中找到最佳匹配块来计算运动矢量。
2. 光流法:光流法是通过分析像素间的亮度变化来计算运动矢量。
光流法利用了连续帧之间像素的亮度一致性约束,得到了更精确的运动估计结果。
3. 形状一致性法:形状一致性法是基于物体的形状信息来进行运动估计的方法。
它对每个对象的边界进行分析,通过比较形状的相似性来计算运动矢量。
三、运动检测方法1. 基于像素的运动检测:基于像素的运动检测方法是根据像素的亮度变化来判断物体的运动状态。
当像素的亮度超过一定的阈值时,认为该像素存在运动。
2. 基于特征点的运动检测:基于特征点的运动检测方法使用物体的特征点(如角点、边缘等)来进行运动检测。
通过比较特征点在连续帧之间的位置变化,可以推测物体的运动状态。
3. 基于背景差分的运动检测:基于背景差分的运动检测方法将当前帧与背景帧进行比较,利用像素的差异来判断是否存在运动。
四、应用方面1. 视频编码压缩:运动模式分析与检测可以用于视频编码的压缩过程,通过对图像中运动物体的运动矢量进行编码,减少冗余数据,从而实现更高效的压缩。
2. 视频监控与安防:运动模式分析与检测可以应用于视频监控和安防系统中。
通过检测视频中异常的运动模式,可以快速发现异常事件,提高安全性。
视频图像帧内编码实验
一、 实验目的
1. 了解多媒体通信中图像压缩技术
2. 熟悉视频帧内压缩编码过程
3. 掌握二维DCT 变换算法
二、 实验原理
视频帧内编码有多种模式,最基本的是基于8×8块的DCT 顺序编码,将一帧图像分为8×8的块,然后按照从左至右、自上而下的顺序,对块进行DCT 、量化和熵编码。
其编、解码框图如下:
图1 基于DCT 的顺序编码框图
图2 基于DCT 的顺序解压缩框图
视频帧内压缩编码算法的主要步骤:
1) 正向离散余弦变换(DCT)。
2) 量化(quantization)。
3) Z 字形扫描(zigzag scan)。
DCT 解码器
IDCT
逆量化器
熵解码器
量化表
熵编码表
压缩图像数重构图像
DCT
熵编码器
量化表
熵编码表
压缩图像数据
源图像数据
基于DCT 的编码器
图像子块
量化器
4) 使用差分脉冲编码调制(differential pulse code modulation ,DPCM)
对直流系数(DC)进行编码。
5) 使用行程长度编码(run-length encoding ,RLE)对交流系数(AC)进行
编码。
6) 熵编码(entropy coding)。
三、 实验内容
按照上述压缩过程实现一幅图像的压缩,图像编码流程如下:
图3 JPEG 图像编码流程
1. DCT 变换
对8×8的图像数据块进行二维DCT 的变换,把能量集中在少数几个系数上,从而达到数据压缩的目的。
: DCT 变换公式:
DCT 反变换公式:
输入原图像
8×8二维DCT 变换
量化
DC 系数差分编码 AC 系数游程编码
熵编码
生成压缩图像
文件保存
输出原图像
8×8二维IDCT 变换
逆量化
DC 系数解码
AC 系数解码码
熵解码
读取压缩图像文件
表说明
量化表
16
)12(cos
16
)12(cos
),()()(4
1),(7
07
π
π
υv y u x y x f v C y C u F x y ++=
∑∑
==
其中:
二维DCT 变换可以分解为行和列的一维DCT 变换的组合运算,也可将8×8的块分为更小的子块,直接对二维数据进行2维快速余弦变换。
2. 量化
量化表达式为:
其中 T(u ,v)是推荐的量化矩阵,详见附录1量化矩阵表 3. 熵编码
对直流DC 系数和交流AC 系数分别采用不同的压缩编码算法 1)
DC 系数编码:
把所有子块的DC 系数集合在一起,采用差分编码的方法表示。
编码步骤为:
a ) 将初始值设为128,对相邻块的DC 系数F(0,0)进行差分运算
b )将差分值改写为[size,value] (尺寸,幅值)的符号对。
尺寸取2
的对数加1
c ) 按照表2、3对该符号对进行编码
2)
AC 系数编码 AC 系数编码步骤为:
a ) 以块为单位,从AC01开始对块内的量化数据进行Z 形行程
扫描,记录两个非零值的大小和其间连续零的个数
b )将扫描结果改写为[RunLength ,level](行程、幅度)的符号对,
其中RunLength 代表该非零值和它前一个值之间0的个数,以(EOB)表示块结束。
c ) 按照表3对上述的符号对进行编码。
若符号在表中查不到对
应码字,用ESC 码表示,然后按表4,5对RunLength 和level 进行编码。
4. 对编码后的图像数据进行解码,与原始图像数据进行比较。
16
1216
124
1707
π
π
v y u x v u F v C u C y x f u v )(cos
)(cos
),()()(),(++=
∑∑
==⎪⎩
⎪
⎨⎧≠==
0v u, 0v u, 12
1
)()
(v C u C ⎥
⎦
⎤⎢⎣⎡=),(),(),(ˆv u T v u F NINT v u F
四、实验要求
1.根据实验内容要求编写编解码程序,所用编程语言自选,实验完成后提交
完整源程序,并在关键处加上详细批注
I=imread('cameraman.tif')
I=im2double(I) %转换图像矩阵为双精度型。
J=dct2(I);
T=dctmtx(8) %产生二维DCT变换矩阵
a1=[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 81 104 113 92;
49 64 78 87 103 121 120 101;
72 92 95 98 112 100 103 99 ];
for i=1:8:200
for j=1:8:200
P=I(i:i+7,j:j+7);
K=T*P*T';
I2(i:i+7,j:j+7)=K;
K=K./a1; %量化
K(abs(K)<0.03)=0;
I3(i:i+7,j:j+7)=K;
end
end
figure;
imshow(I2);
title('DCT变换后的频域图像'); %显示DCT变换后的频域图像
for i=1:8:200
for j=1:8:200
P=I3(i:i+7,j:j+7).*a1; %反量化
K=T'*P*T;
I4(i:i+7,j:j+7)=K;
end
end
figure;
imshow(I4);
title('复原图像');
B=blkproc(I,[8,8],'P1*x*P2',T,T')
%计算二维DCT,矩阵T及其转置是DCT函数P1*X*P2的参数
mask=[1 1 1 1 0 0 0 0
1 1 1 0 0 0 0 0
1 1 0 0 0 0 0 0
1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 ]
%二值掩模,用来压缩DCT系数,只留下DCT系数中左上角的10个
B2=blkproc(B,[8 8],'P1.*x',mask) %只保留DCT变换的10个系数
I2=blkproc(B2,[8 8],'P1*x*P2',T',T) %重构图像
figure
imshow(I)
title('原始图像');
figure
imshow(I2);
title('压缩图像');
figure
imshow(J);
figure
mesh(J) %画出J的立体网状图
colorbar('horiz') %在水平条方向用不同的颜色表示曲面的高度
五、小结
通过本次实验,懂得用matlab完成图像压缩的过程,了解多媒体通信中图像压缩技术,熟悉了视频帧内压缩编码过程,掌握了二维DCT变换算法,更加熟练地掌握了DCT 变换,更深刻的认识了图像通信。