自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

时间有泪

视频编码学习

  • 博客(131)
  • 资源 (6)
  • 收藏
  • 关注

原创 AVS3代码学习1:HPM6.0框架

文章目录0 运行程序1 上层函数2 帧内预测3 变换量化4 环路滤波5 熵编码0 运行程序1 上层函数1、app_encoder.c文件下的main()函数;2、enc.c文件下的enc_pic()函数;3、enc_mode.c文件下的enc_mode_analyze_lcu()函数;4、enc_mode.c文件下的mode_coding_tree()函数;5、enc_mode.c文...

2020-05-12 14:50:58 3218 8

原创 H.266/VVC代码学习61:VTM中deblocking源码阅读

/* The copyright in this software is being made available under the BSD * License, included below. This software may be subject to other third party * and contributor rights, including patent rights...

2020-04-07 12:00:54 1531 4

原创 H.266/VVC代码学习60:CCALF解码端过程

CCALF是把亮度的信息进行维纳滤波加到色度上,以补充色度平坦的信息。于JVET的O次会议提出,Q次会议接收。首先我们先回顾一下ALF的算法,然后进行CCALF的学习。1 输入输出输入:1、亮度ALF之前的重建亮度像素;2、色度ALF之后的滤波色度像素;3、色度CTU位置及CTU宽高;4、7个滤波系数值。输出:色度CCALF滤波后的最终像素值。2 步骤1、从色度像素位置对应到亮...

2020-03-16 17:12:53 2136 1

原创 H.266/VVC技术学习59:量化

DQ

2020-03-09 09:51:57 2055 1

翻译 H.266/VVC技术学习58:色度残差联合编码(JCCR)

VVC支持色度残差工具的联合编码(JCCR)。JCCR模式的使用由TU级别标志tu_joint_cbcr_residual_flag指示,所选模式由色度CBF隐式指示。如果TU的色度CBF之一或全部等于1,则存在标记tu_joint_cbcr_residual_flag。在PPS和Slice标头中,为JCCR模式发送色度QP偏移值,以区别于为常规色度残差发出的通常色度QP偏移值。编码模式。这些...

2020-03-09 09:51:35 1231

原创 H.266/VVC技术学习57:视频属性杂谈(2)

前一期视频属性杂谈 我们讨论了视频的构成要素,也知道了显示在屏幕上的视频,是像素值是由yuv按序排列形成并通过SDL播放。这一期我们向上层进发,了解一下.yuv是怎么形成的,进而了解一下我们电脑里常有的.mp4、.avi等等视频文件是如何播放出来的。1 yuv文件的形成终于涉及到专业相关了哈哈哈哈哈。看了上一篇杂谈最后的计算环节,有没有感觉一个yuv太大了呢?一个高清电影就占了1T硬盘?事实上...

2020-03-04 15:10:30 1159

原创 万老师《H.265/HEVC》第十二章:速率控制

速率控制:就是通过选择一系列编码参数,使得视频编码后的比特率满足所需要的速率限制,并且使得编码失真尽量小。即R受限,找这种情况下最小的D。重点:每一个编码单元(可能是帧,可能是宏块等)确定最优QP(找到了QP就可进行下一步率失真优化)。现在也可跳过QP直接根据R得到lambda。做法:视频序列空、时域复杂度越高,产生的编码比特数也越高;反之,则会产生较少的编码比特数,编码速率将会随着视频内容...

2020-03-03 07:58:53 623

原创 万老师《H.265/HEVC》第十一章:率失真优化

有损压缩算法,性能由编码输出的比特率和失真共同决定。编码的目的:就是在保证一定视频质量的条件下尽量减少编码比特率,或在一定编码比特率限制条件下尽量地减小编码失真。编码器工作:根据以上率失真准则找到最佳编码参数。1 理论部分信息论中率失真概念:在允许一定程度失真的条件下,能够把信源信息压缩到什么程度,即最少需要多少比特数才能描述信源。由此得到率失真函数:R(D) = min I(X, Y),...

2020-02-28 16:14:43 1979

原创 一些字符串函数:append,to_string,stoi

1 appendappend是比push_back更方便的在字符串后增加字符串的方式,类似字符串的+。这是string的成员函数。差异:append只能增加字符串,push_back只能增加字符。 string s1 = "hello"; //s1 = "hello" string s2 = "world"; //s2 = "world" string s3 = s1 + s2; //s...

2020-02-19 09:55:20 459

原创 从暴力递归到动态规划

本博来自左神视频,特此做下笔记。文章目录1 换钱的方法数1.1 暴力递归1.2 动态规划1.2.1 第一次优化,加个备忘录1.3 修改代码的方式:从递归到dp1.3.1 第一次优化,加个备忘录3 附录:“换钱的方法数”整体手撸代码1 换钱的方法数【题目】给定数组arr,arr中所有的值都为正数且不重复。每个值代表一种面值的货币,每种面值的货币可以使用任意张,再给定一个整数aim代表要找的钱...

2020-02-09 10:36:21 333

原创 H.266/VVC代码学习56:率失真优化

躲避疫情,在家也学点东西吧,解锁一波新地图——VVC的RDO。所谓率失真优化:在给定编码比特率的情况下,如何使失真最小:J(λ) = min[ D + λR ]。其中:率:信息数量的多少(比特率R);失真:接收短信号与源信号的差异程度(失真D);λ:拉格朗日参数,只与量化参数有关;几何意义:一条斜率为λ的直线,与率失真曲线的切点即最优解。目的:得到性价比最高的编码参数,如划分方式、预测...

2020-02-06 21:19:58 2711 4

原创 数据结构学习:堆与priority_queue

堆的例题初步学习大顶堆和小顶堆的实现除了用vector实现,可以直接用STL中的priority_queue容器。便于理解的代码如下:#include<iostream>#include<algorithm>#include<queue>#include<functional>using namespace std;int mai...

2020-01-05 22:17:31 183

原创 一些常用函数:memset、memcpy、strlen、strcpy

memset一般用作初始化函数。作用是将某一块内存中的内容全部设置为某一值。格式:起始指针、设定的初始值、长度memset(buffer,0,sizeof(int)*10);//在buffer处初始化10个0memcpy用于从源内存地址的起始位置开始拷贝若干个字节到目标内存地址。格式:返回指针,源指针、长度memcpy(dst, src, strlen(src)+1);strlen...

2020-01-05 20:52:55 913

翻译 H.266/VVC技术学习55:熵编码

文章目录1 CABAC引擎1.1 HEVC的编解码引擎1.2 VVC的编解码引擎2 变换系数熵编解码2.1 普通变换系数的残差编码2.2 变换跳过系数的残差编码3 系数编码上下文模型1 CABAC引擎1.1 HEVC的编解码引擎HEVC中的CABAC引擎使用基于表的概率转换过程,(在64个不同的代表性概率状态之间)。在HEVC中,在计算新的range范围之前,将表示编码引擎状态的范围ivl...

2019-12-24 21:49:42 1995 1

翻译 H.266/VVC技术学习54:划分

文章目录1 图片被划分为CTU2 图片被划分为SubPicture、Slice、Tile2.1 Tile、SLice、SubPicture的概念2.2 光栅扫描分区模式2.3 矩形分区模式3 CTU以树形继续向下划分3.1 HEVC的划分方式3.2 VVC的划分方式3.3 编解码方式3.4 示例3.5 高层参数及限制3.6 帧内的色度独立划分4 CU在图片边缘的划分5 CU冗余划分的限制6 虚拟管...

2019-12-23 22:06:20 2286 2

原创 Leetcode学习:五大算法之回溯算法

文章目录1 简介1.1 介绍1.2 算法核心2 解答模板3 例题3.1 全排列问题3.2 N皇后问题3.3 解数独问题1 简介1.1 介绍百度百科给出的定义如下:回溯法(探索与回溯法)是一种选优搜索法,又称为试探法,按选优条件向前搜索,以达到目标。但当探索到某一步时,发现原先选择并不优或达不到目标,就退回一步重新选择,这种走不通就退回再走的技术为回溯法,而满足回溯条件的某个状态的点称为“回...

2019-12-22 16:57:34 191

原创 排序算法总结

文章目录1 综述1.1 稳定性1.2 复杂度2 具体排序算法2.1 冒泡排序2.2 插入排序2.3 选择排序2.4 进化的冒泡排序:增加终止条件2.5 进化的插入排序:希尔排序2.6 进化的选择排序:堆排序3 参考代码1 综述1.1 稳定性比如A和B的数值相同,但未排序的时候A在B的前面,此时进行排序:若排序后A依然在B前,则为稳定排序;若排序后B跑到了A前,则为不稳定排序;只要有一组...

2019-12-18 20:55:22 236

原创 万老师《H.265/HEVC》第九章:网络适配层(NAL层)

1 网络适配层1.1 定义网络适配层:将编码好的数据进行:划分、封装、标识,从而适应网络。1.2 原因适应网络的原因:1、不同的网络环境:有线网络的最大传输单元1500字节,无线网络小得多;2、不同的应用需求:直播类对实时性要求高的情况用UDP,注重完整性和正确性的用TCP/IP。1.3 方法适应网络的方式:将视频压缩数据划分成不同特性的NAL单元,即NALU,进行封装并标识内容...

2019-12-07 17:55:07 577

原创 常见图算法思想

文章目录1 最小生成树1.1 普里姆算法(Prim)1.2 克鲁斯卡尔算法(Kruskal)2 最短路径2.1 迪杰斯特拉算法(Dijkstra)2.2 弗洛伊德算法(Floyd)1 最小生成树生成树:图有n个结点,用n-1条边连接起来。最小生成树:代价最小的生成树。1.1 普里姆算法(Prim)点扩展:有一个集合和其他节点。刚开始,起点在这个集合中,找到到这个集合的最短距离的节点,将...

2019-12-07 14:05:38 373

原创 国际视频编码标准化 时间节点对照

回忆一下历史。H.264/AVCH.265/HEVCH.266/VVC开启标准制定(JVT / JCT-VC / JVET)1998.012010.012017.10测试模型发布(JM / HM / VTM)2001.052011.012018.04工作草案阶段 (WD)2001.05~2002.062011.03~2012.022018.0...

2019-11-28 20:59:10 909

原创 万老师《H.265/HEVC》第十章:编解码并行处理

本篇博客对H.265/HEVC的编解码并行处理进行学习。首先了解一下线程:线程是进程的一部分。进程在这里可以理解为一次视频编码,即编码一个视频的过程,那么线程就可以视作编码一个GOP、编码一个Slice、编码一个CTU等。可以认为进程包含很多线程。1 并行处理技术H.265的高复杂度来源:更多的帧内模式、更灵活的划分方式、TU块的引入。并行方式:多个处理器,多核并行可以成倍增加编解码速度。...

2019-11-23 11:20:01 1279

翻译 H.266/VVC代码学习46:自适应环路整形器(LMCS)

在VVC中,在环路滤波器之前,添加了一种称为带有色度缩放的亮度映射(LMCS)的编码工具,作为新的处理块。LMCS有两个主要组成部分:1)基于自适应分段线性模型的亮度分量的环路映射;2)对于色度分量,应用依赖于亮度的色度残差缩放。1 LMCS体系结构下图从解码器的角度显示了LMCS体系结构。1、图中的浅蓝色方框表示在映射域中的处理位置:包括反量化,反变换,亮度帧内预测以及亮度预测与亮度...

2019-11-19 15:00:15 1959

原创 MATLAB学习1:绘图函数入门

本篇博客为零基础需要使用MATLAB提供速成之道,只作为入门或应急使用。首先请了解以下MATLAB的基本语法:x = (0 : 0.1 : 8)用两个冒号连接,首尾位置是所绘制图的端点位置,中间的数值为采样间隔。文章目录1、plot1.1、绘图1.2、一个坐标系下画多张图1.3、一个界面画多张图1.4、调整坐标系范围1.5、增加坐标系注释2、bar2.1、对比1.5的图2.2、综合复习2...

2019-11-10 22:00:33 759

原创 高文老师《数字视频编码技术原理》第7~10章:视频编码标准演变

1、H.264/AVC到H.265/HEVC再到H.266/VVC2、AVS到AVS2

2019-11-10 16:32:30 1545

原创 H.266/VVC代码学习43:VLC编解码

在ALF的系数上纠结了两个周,不了解它为什么没有传flag却可以从解码端直接获得,终于终于在VLCReader.cpp中抓到了它,也许这对RBSP的了解也有很大的益处吧,下面走进变长编码的世界。1 简介VLC即变长编码。原理是用短码来编频率高的信息来达到少比特的目的。我们知道视频编码中多数内容都是通过CABAC进行编解码的,对多数flag和变换系数熵编码都使用,并具有较高的编码效率。但以零阶...

2019-11-05 20:36:55 1000 2

原创 查找算法进阶:利用树的查找(二叉排序树、AVL树、多路查找树、B树)

1 二叉搜索树2 ALV树3 例题

2019-11-03 20:22:01 256

原创 最大堆和最小堆思想的应用——数据流中的中位数问题

1 概念最大堆:堆顶的key是堆里所有关键字中最大者;最小堆:堆顶的key是堆里所有关键字中最小者;堆是一棵完全二叉树,树中结点的值总是不大于(即最小堆)或者不小于(即最大堆)其孩子结点的值,所以每一个结点的子树也是一个堆。根据最大堆和最小堆的思想,我们可以实现标准库容器:优先队列。2 中位数可使用的堆思想中位数:若奇数,则是中间位置的数字;若偶数,则是中间两个数字的平均值。因此,整...

2019-10-30 21:46:07 392 2

转载 H.266/VVC代码学习41:VTM6.0变换算法小结(译自O2002)

感谢博主翻译,原博客链接在这里。高频调零VTM6中允许最大为64x64的大尺寸变换,适用于更高分辨率的视频处理,例如1080P和4K序列。对于大小(宽度或高度,或宽度和高度)等于64的变换块,将高频变换系数归零,仅保留低频系数。例如,对于一个尺寸为MxN的变换块,其中M是宽度,N是高度,当M等于64,仅保留左边32列的变换系数。类似地,当N等于64,只保留上边的32行变换系数。如果大尺寸块使用...

2019-10-20 21:55:38 1274

原创 常用的排序算法:归并排序(逆序数问题)

快速排序是最常用最常考到的排序方式,但不够稳定。今天我们来学习一种新的、稳定的排序方法:归并排序。文章目录1 归并排序2 代码实现3 复杂度分析4 可应对的题:逆序数1 归并排序1、假设一个序列有n个数字:那么我们将它看成n个子序列,每个子序列有一个数字;2、此时,我们进行两两归并,得到n/2个长度为2的序列(也可能是(n-1)/2个长度为2和1个长度为1的序列);3、继续两两归并,递...

2019-10-17 21:59:15 486

原创 C++学习35:关联容器学习总结

本篇博客主要学习关联容器在具体代码的用法。至于其底层内容和原理请点击如下链接:C++学习23:容器深度探索之RB-tree(红黑树)源码剖析C++学习24:容器深度探索之Hashtable(哈希表)源码剖析C++学习25:容器深度探索之关联容器源码剖析(unordered、multi、set、map)最常规的关联容器:set和map是基于红黑树的,其所有的key都不同,带有着自然的弱排序。...

2019-10-12 21:22:32 253

原创 H.266/VVC代码学习38:VTM6.0帧间merge预测(xCheckRDCostMerge2Nx2N)

一个很闹心的函数。。。首先感谢实验室小伙伴帮我先趟了一下浑水,代码阅读起来容易多啦。内容不详细讲了,都在代码的注释里,下面把大体框架列出给一个大局观,这些大局观内容在代码注释中依然存在:0、整体初始化 0.1、获取merge候选,初始化缓存 0.2、定义一个结构体,用于存储merge的信息,并初始化3种模式 0.3、对CIIP的初始化,顺便处理skip1、为选定的候选获取SAT...

2019-10-09 10:45:03 1918

原创 了解i++和++i的区别与推荐使用版本

文章目录1 区别2 C++中两者的源码3 推荐使用`++i`4 示例代码1 区别首先用一个图给出最佳理解++i是先处理完加法,再做其它运算, i++是处理完相关运算(执行完一条语句后)后自加。1、 i++ 返回原来的值,++i 返回加1后的值。2、 i++ 不能作为左值,而++i 可以。必须要指出的是:在程序开发中,++i和i++基本没有任何区别,可相互替换。但考虑深层,依然有一个...

2019-10-06 11:21:28 401

原创 计算机底层的二进制表达——正负数与二进制转换方法及代码

以下均是以64位计算机为例,故int类型是4字节,即32位二进制数。文章目录1 十进制数转为二进制1.1 正数的二进制1.2 负数的二进制2 正负数与原码、反码、补码2.1 原码2.2 反码2.3 补码2.4 总结3 转换代码3.1 五种位操作简介3.2 十进制转二进制代码1 十进制数转为二进制先放出结论:计算机运算中5和-5的二进制分别为:十进制的 5 转换为二进制:00000000 0...

2019-10-05 20:03:39 3409 2

原创 面试笔试中最最最常考到的算法——快速排序(Partition函数)

忙里偷闲,突然对排序算法产生了兴趣,只会冒泡排序和选择排序这两种本科学到的排序方法的我,来探索一波新世界!希望从此告别O(n²)。文章目录1、原理2、实现划分分治递归终止条件3、复杂度分析时间复杂度空间复杂度4、代码1、原理通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小。然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,...

2019-10-04 22:02:47 1194

原创 高文老师《数字视频编码技术原理》第5章:量化

文章目录5.1 量化基本原理5.1.1 基本概念5.1.2 标量量化5.1.3 矢量量化5.1.4 自适应量化5.1.5 视觉量化器设计5.2 量化与码率控制5.2.1 率失真理论5.2.2 率失真理论与优化编码参数选择5.2.3 率失真模型与码率控制5.1 量化基本原理量化:将信号的连续取值,近似为一些离散值特点:多对一映射,减少数据量。反量化:一对一映射特点:存在失真。5.1.1 ...

2019-10-03 11:09:50 887

原创 高文老师《数字视频编码技术原理》第3章:预测编码

文章目录3.1 预测编码概述3.1.1 帧内预测3.1.2 帧间预测3.2 运动的表示及估计3.2.1 基于像素的运动估计3.2.2 基于块的运动估计3.2.3 全局运动估计3.3 子像素插值3.3.1 子像素精度与插值滤波器3.3.2 自适应插值技术3.4 运动矢量预测3.1 预测编码概述3.1.1 帧内预测3.1.2 帧间预测3.2 运动的表示及估计3.2.1 基于像素的运动估计3...

2019-10-02 10:56:30 677

原创 高文老师《数字视频编码技术原理》第2章:视频编码基础

文章目录2.1 信息论基础2.2 香农编码定理2.3 视频编码技术2.3.1 预测2.3.2 变换2.3.3 量化2.3.4 熵编码2.3.5 环路滤波2.4 视频图像质量评价2.4.1 主观质量评价2.4.2 客观质量评价2.1 信息论基础信息量 是时间的不确定度:当第i个随机事件发生的概率越大时,信息量越小信息熵 是多个随机事件的平均信息量,表征信源的不确定程度互信息 反映了两个信源的...

2019-10-01 17:12:11 1173

原创 高文老师《数字视频编码技术原理》第1章:概论

文章目录1.1 视觉感知1.1.1 色彩原理1.1.2 视觉系统的颜色感知1.1.3 视觉系统的光强感知1.1.4 视觉系统的高级阶段1.2 数字视频1.2.1 视频采集1.2.1 色彩空间1.2.1 视频格式1.3 视频数据冗余1.3.1 数据冗余类型1.3.2 去除数据冗余的方法1.4 视频编码标准1.1 视觉感知1.1.1 色彩原理1.1.2 视觉系统的颜色感知1.1.3 视觉系统的...

2019-10-01 11:43:34 1061 2

原创 C++学习34:内存管理初探

1 C++应用程序从上到下就是我们对于内存的“底层”程度。而对于程序员而言,malloc就可以视为最底层,所有有关内存管理的内容,归根结底都是运用了malloc。对于我们而言,需要掌握的内存工具如下:下面有个应用了以上四个内容的例子:上图的1-2行、4-5行、7-8行,实际上都是执行了相同的操作:分配一块内存,然后释放掉这块内存。(7-8行的::operator new底层就是调用的...

2019-09-02 20:35:51 217

原创 H.266/VVC代码学习36:VTM6.0帧间预测主要方式及编码方法

刚一开学就转向inter了,心里还是有点小激动的,又要从零基础开始了!!!本篇博客主要讲一下帧间预测的大体预测方式及主要预测方式的编码方法。...

2019-08-28 21:14:25 2801 4

Chisel教程.pdf

2015年的一门入门课程,介绍了Chisel的简要内容。内容精练,适合入门。

2019-10-04

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除