- 博客(145)
- 资源 (5)
- 收藏
- 关注
原创 离散余弦变换(DCT)详解
在 X265 中,DCT 的实现经过了极致的优化(整数化、快速算法、SIMD 加速),以确保在保持高压缩效率的同时,尽可能降低编码器的计算耗时。由于 DCT 是正交变换,IDCT 公式与 DCT 非常相似,只是余弦项的位置互换。:标准的 DCT 涉及浮点运算(cosine),在不同硬件上会有精度误差,导致编码器和解码器重建出的图像不一致。如果量化太粗,块与块之间的边界会出现不连续,形成“格子状”伪影。量化器根据 DCT 系数的视觉重要性,丢弃或粗略表示高频系数。在 X265 源码中,DCT 的实现位于。
2026-04-29 15:05:09
314
原创 量化与反量化(Quantization & Dequantization)详解
是整个视频编码流水线中**唯一产生失真(有损压缩)**的步骤。它是决定“画质”与“文件大小”平衡的核心阀门。为了避免浮点运算带来的速度损耗和多平台精度不一致,H.265 标准定义了。默认情况下,所有位置的量化步长是一样的。,以便塞进更小的箱子里。扔得越多,箱子越小,但东西越不完整。:逐个系数独立计算,只看当前系数离哪个整数最近。在 DCT 变换之后,我们得到的是频率系数。:它制造了大量的 0,让熵编码有了用武之地。:通过反量化重建图像,确保编解码两端同步。:QP 是用户控制画质最直接的手段。
2026-04-29 15:02:13
380
原创 插值滤波(Interpolation Filter)详解
就是利用网格点上的已知数据,通过数学公式“猜”出网格线中间那些点的颜色,让运动补偿更加丝滑精准。通过插值获得更平滑、更准确的参考块,可以显著减少预测误差(Residual),从而节省码率。1/8 像素精度(因为色度采样率低,1/8 色度像素 ≈ 1/4 亮度像素)。根据 sub-pel 的位置(1/4, 2/4, 3/4),使用不同的系数表。插值滤波是运动补偿中最耗时的部分之一,因为每个亚像素位置都要做大量的乘加运算。如果没有高精度的插值滤波,运动补偿就会非常粗糙,导致残差变大,压缩效率降低。
2026-04-29 14:59:00
362
原创 去块滤波(Deblocking Filter)
去块滤波是 HEVC/H.265 视频编码中的一个重要环路滤波器,用于减少块效应(blocking artifacts),提高重建视频的视觉质量。
2026-04-29 14:56:12
208
原创 离散余弦变换(DCT)详解
在 X265 中,DCT 的实现经过了极致的优化(整数化、快速算法、SIMD 加速),以确保在保持高压缩效率的同时,尽可能降低编码器的计算耗时。由于 DCT 是正交变换,IDCT 公式与 DCT 非常相似,只是余弦项的位置互换。:标准的 DCT 涉及浮点运算(cosine),在不同硬件上会有精度误差,导致编码器和解码器重建出的图像不一致。如果量化太粗,块与块之间的边界会出现不连续,形成“格子状”伪影。量化器根据 DCT 系数的视觉重要性,丢弃或粗略表示高频系数。在 X265 源码中,DCT 的实现位于。
2026-04-28 11:28:43
124
原创 熵编码(Entropy Coding)详解
熵编码(Entropy Coding)详解摘要 熵编码是视频编码流水线的最后一步,通过无损压缩技术去除统计冗余。H.265/HEVC主要采用CABAC(上下文自适应二进制算术编码)算法,相比CAVLC具有更高压缩率但复杂度也更高。CABAC工作流程分为三步:1)二值化将数据转为二进制串;2)上下文建模根据邻近数据预测概率;3)算术编码将二进制串映射到[0,1)区间实现压缩。CABAC能对视频参数、预测信息、变换系数等进行高效编码,是H.265实现50%码率节省的关键技术之一。X265源码中通过区间划分、概率
2026-04-28 11:24:02
278
原创 H.265/HEVC 编码全过程详解
阶段核心技术作用是否有损预测帧内/帧间预测去除空间/时间冗余,生成残差无 (预测本身无损,但影响残差分布)变换DCT / DST能量集中,便于量化无 (数学变换可逆)量化标量量化大幅减少数据量,丢弃高频细节有损 (核心失真来源)熵编码CABAC去除统计冗余,压缩比特流无 (无损压缩)滤波改善视觉效果,提高参考帧质量有 (轻微修改像素值)看未来(Lookahead):决定怎么编(帧类型、QP)。猜内容(Prediction):利用时空相关性猜出像素值。算差异。
2026-04-28 06:14:03
325
原创 I帧、P帧、B帧 详解
它们决定了帧之间的依赖关系和压缩方式。理解这三种帧是掌握视频编码原理的关键。理解 I/P/B 帧的特性和权衡,是优化视频编码配置的基础!= 独立完整,压缩率低,用于随机访问和错误恢复。= 前向预测,中等压缩,平衡性能和效率。I帧、P帧、B帧是视频编码中三种基本的。= 双向预测,最高压缩,但有延迟。:中等 B帧,中等 GOP,平衡。:少 B帧,短 GOP,低延迟。:多 B帧,长 GOP,高压缩。
2026-04-27 23:23:00
143
原创 视频编码:压缩了什么
视频编码器通过去除各种类型的**冗余(Redundancy)**来实现这一目标。这就是为什么现代视频编码器能够在保持高质量的同时,将数据量减少两个数量级的原因!🎯 视频编码不是"压缩像素",而是"压缩信息"减少系数的精度,将相近的值映射到同一个值。同一帧内相邻像素之间的相似性。- 同一帧内相邻像素的相似性。人眼无法察觉或不敏感的信息。- 连续帧之间的相似性。- 符号分布的不均匀性。- 人眼无法察觉的信息。告诉解码器"预测有多准"告诉解码器"这是什么"高效表示"剩下的信息"视频编码的核心目标是。
2026-04-27 23:06:35
126
原创 像素数据(Pixel Data)详解
像素数据是数字图像和视频的最基本组成单元。理解像素数据的结构、存储方式和处理方法,对于视频编码、图像处理和计算机视觉至关重要。像素(Pixel) = Picture + Element🎨 二、像素格式分类1. RGB 系列格式RGB888 / RGB24内存布局:RGBA8888 / RGB32BGR / BGRARGB565(16-bit)2. YUV 系列格式(视频主流)计划格式(Planar)YUV420P / I420(最常用)内存布局示例(4×4 图像):
2026-04-27 22:17:05
329
原创 位深度(Bit Depth)详解
特别是在 HDR 内容日益普及的今天。选择合适的位深度需要根据应用场景、目标平台和资源限制综合考虑。位深度是数字图像和视频中的一个重要概念,它决定了每个像素可以表示的颜色数量和精度。注:×3 表示 YUV 三个通道(实际因色度采样会略小),是指用于表示每个像素颜色信息的二进制位数。:HDR 标配,专业制作首选,性价比最高。:主流标准,兼容性好,适合大多数应用。(Bit Depth),也称为。在 X265 等现代编码器中,:极致质量,专业领域使用。
2026-04-27 22:04:31
395
原创 如何认识视频中的一帧画面
视频图像内容的多维度解析 视频图像内容可从视觉、技术、编码和计算机视觉四个维度解析。视觉层面包含场景元素(前景/背景)和时间特征(静态/动态区域);技术层面涵盖像素数据、色彩空间和分辨率等参数;编码角度分析空间/时间冗余和视觉冗余;计算机视觉则提取低级到高级语义特征。不同应用场景关注点各异,如视频会议侧重人脸检测,而自动驾驶注重道路标志识别。视频编码器(如X265)的核心任务是通过分析这些多维特征,在保证质量的前提下实现高效压缩,其处理过程包括分层结构划分、预测模式选择和变换系数优化等关键技术。
2026-04-27 21:53:26
185
转载 cmsg(3) - Linux man page
cmsg(3) - Linux man pageNameCMSG_ALIGN, CMSG_SPACE, CMSG_NXTHDR, CMSG_FIRSTHDR - access ancillary dataSynopsis#include sys/socket.h>struct cmsghdr *CMSG_FIRSTHDR(struct msghdr *msgh);struc
2017-02-04 10:11:12
1284
原创 流媒体知识集合
1. HLS/HDS 2. H264/MPEG4(NALU) 3. TS/PES 4. RTP/RTCP 5. RTSP 6. PCR 7. Live555, FFMpeg, VCL,
2014-03-28 16:22:10
743
原创 算法整理(0)-- 序言
随着工作的年限变长,越发感觉算法和数据结构在软件的架构,设计,开发极为重要,也越发地觉得自己的算法理论的欠缺。于是,想重新把本科阶段的算法教科书搬出来,好好地看一遍,并整理贴出来,跟大家分享,当然也欢迎大家拍砖。 算法经典的书籍也挺多的。 参考书籍: (1)>(严蔚敏,吴伟民 编著) (2)> 麻省理工的 (3)> (1-4卷)
2014-03-18 14:12:48
869
原创 C++ 编程规范101读书笔记(5)类的设计与继承
这部分主要讨论面向对象的设计的一些陷阱:主要涉及构造函数,析构函数,继承,组合,成员可见度第32条 弄清所要编写的是哪种类第33条 用小类代替巨类第34条 用组合代替继承
2014-03-11 15:02:59
636
原创 C++ 编程规范101读书笔记(4)函数与操作符
这部分主要分析函数(其实,操作符也可以视为函数)的使用上的陷阱及其避免的方法第25条 正确第选择通过值,(智能)指针或者引用传递参数 对于只输入参数: (1)始终使用const 限制所有指向只输入参数的指针和引用 (2)优先通过值来取得原始类型和复制开销比较低对象的输入 (3)优先按const的引用取得其他用户
2014-03-11 14:52:53
751
翻译 高性能服务器设计
高性能服务器设计Jeff Darcy's notes on high-performance server designIntroduction引论我想通过这篇文章跟大家共享一下我多年来怎样开发“服务器”这类应用的一些想法和观点(这类应用用名词“server”来表示,还是有点牵强)。The purpose of this document is to share s
2014-03-11 11:10:54
1302
原创 C++ 编程规范101读书笔记(3)编程风格
这部分主要解决实际编程中出现的问题,提高代码的质量第15条 宁可编译时和链接时错误,也不要运行时错误
2014-03-10 22:17:09
615
原创 C++ 编程规范101读书笔记(2)设计风格
这部分主要涉及设计的风格的事宜:基本观点还是那句话,高内聚,低耦合,扩展性强,简单第5条 一个实体应该只用一个紧凑的职责 一次只解决一个问题。一个实体只负责一件事。 一个实体职责过多,导致实体多重性格,难控制 典型反例: realloc() 函数 C++ basic_str
2014-03-10 22:13:32
699
原创 C++ 编程规范101读书笔记(1)组织和策略问题
这部分主要涉及代码质量控制:第0条 不要拘泥小节 代码风格一致 (1)缩进体现代码结构 (2)代码行长度不要影响阅读 (3)使用一致的命名规范 (4)编写有用的注释第1条 在高告警级别干净利落地编译 (1)第三方头文件 #pragma w
2014-03-10 21:27:56
582
原创 C++ 编程规范101读书笔记(0)引论
前一段时间,工作和生活的事情比较多,一直没有时间好好地来学习,博客一直没有什么有价值的东西更新。最近把以前的工作辞了,也有时间来看看以前买的书,C++这方面的书,我有几本:> ,>,提高C++性能的编程技术>>, 以前只是扫描地看了一两遍。这次,想仔细地再看一遍,并在博客上整理出来,做个记录。
2014-03-10 21:10:44
593
原创 高并发服务架构设计
Linux高并发高性能服务器设计第一章 概论 高并发高性能服务器,简单说,就是同一个时间点服务器可以接受的连接数很大,且服务器并能以相对比较快的速度提供响应。高性能服务器设计,不但是软件架构和设计的事情,还需要在操作系统和硬件给于支持。第二章 软件架构 高性能服务器的实现,简单地一句话就是让CPU高效率运转。
2014-03-06 12:04:44
1189
转载 视频编解码学习之五:差错控制及传输
视频编解码学习之五:差错控制及传输第12章 差错控制1. 视频传输错误视频传输的信道有可能是不可靠的无线信道Internet传输错误随机的比特错误比特反置、比特插入、比特丢失突发错误(Bursty Error)数据包丢失局域网数据包冲突延迟缓冲区溢出噪声干扰2. 差错控制的目的目
2013-10-11 21:43:12
1448
转载 视频编解码学习之四:视频处理及编码标准
视频编解码学习之四:视频处理及编码标准第10章 视频处理1.视频处理在视频压缩前后,对视频图像质量增强的操作视频编解码系统输出的图像主观质量不仅与压缩算法的性能有关,还受视频处理的影响压缩之前对视频的处理称作预处理(Pre-processing)压缩之后对视频的处理称作后处理(Post-processing)2. 预处理预处理的目的为了减少原图像受到
2013-10-11 21:42:11
1541
转载 MPEG系列与H.26x系列标准
MPEG系列与H.26x系列标准MPEG系列标准 H.26x系列标准H.264的技术改进 (1)更加精细的宏块分割模式,运动估计的精度更高(1/4像素的亮度精度和1/8像素的色度精度)(2)整数DCT变换, 变换过程全部采用整数运算, 避免了浮点数运算过程中导致的错误积累, 降低了复杂度,并且正向的操作和逆向操作可以完全吻合
2013-10-11 21:40:55
4222
转载 YUV主要采样格式理解
YUV主要采样格式理解主要的采样格式有YCbCr 4:2:0、YCbCr 4:2:2、YCbCr 4:1:1和 YCbCr 4:4:4。其中YCbCr 4:1:1 比较常用,其含义为:每个点保存一个 8bit 的亮度值(也就是Y值), 每 2x2 个点保存一个 Cr 和Cb 值, 图像在肉眼中的感觉不会起太大的变化。所以, 原来用 RGB(R,G,B 都是 8bit unsigned) 模型,
2013-10-11 21:39:58
955
转载 视频编解码学习之三:变换,量化与熵编码
视频编解码学习之三:变换,量化与熵编码第6章 变换编码1. 变换编码变换编码的目的去除空间信号的相关性将空间信号的能力集中到频域的一小部分低频系数上能量小的系数可通过量化去除,而不会严重影响重构图像的质量块变换和全局变换块变换:离散余弦变换(Discrete Cosine Transform,DCT),4x4,8x8,16x16全局变换:小波变换(Wav
2013-10-11 21:36:06
1075
转载 视频编解码学习之二:编解码框架
视频编解码学习之二:编解码框架第四章 视频编码基础1. 压缩码流语法:码流中各个元素的位置关系01001001…图像编码类型(01),宏块类型(00),编码系数1001等语义:每个语法元素所表达的意义。例如:图像编码类型2. 编码层次序列(Sequence)图像组(Group of Pictures,GOP)图像(Picture)
2013-10-11 21:34:21
805
转载 视频编解码学习之一:理论基础
视频编解码学习之一:理论基础第1章介绍1. 为什么要进行视频压缩?未经压缩的数字视频的数据量巨大存储困难一张DVD只能存储几秒钟的未压缩数字视频。传输困难1兆的带宽传输一秒的数字电视视频需要大约4分钟。2. 为什么可以压缩去除冗余信息空间冗余:图像相邻像素之间有较强的相关性时间冗余:视频序列的相邻图像之间内容相似编码冗余:
2013-10-11 21:32:30
920
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅