锯齿形扫描和游程编码

变换系数量化后,在低频和直流区域有少量较大的值,高频区域有少量不大的值,系数大部分为零,为了更有效的编码,通常根据该统计特性采用熵编码来进一步压缩码率。

熵编码之前,要进行锯齿形扫描和游程编码。

锯齿形扫描

以4x4块为例,量化后系数按下图所示的顺序进行锯齿形扫描,并排列成一个串行数据序列。

游程编码

在变换域,量化后系数用三个量表示:0的个数(称为游程)、系数值和最后的位置(若非0系数已处于最后的位置或其后均为0,则为1,否则为0)。

e.g. 经过锯齿形扫描后,得到输入序列:

15,0,0,?3,4,5,0,0,0,0,?7,0,0,0,...

则经过游程编码后的值为:

(0,15,0),(2,?3,0),(0,4,0),(0,5,0),(4,?7,1)



参考书籍:《AVS技术创新报告(2002-2010)》

时间: 2024-08-21 16:23:00

锯齿形扫描和游程编码的相关文章

lintcode 二叉树的锯齿形层次遍历 (双端队列)

题目链接: http://www.lintcode.com/zh-cn/problem/binary-tree-zigzag-level-order-traversal/ 二叉树的锯齿形层次遍历 给出一棵二叉树,返回其节点值的锯齿形层次遍历(先从左往右,下一层再从右往左,层与层之间交替进行) 样例 给出一棵二叉树 {3,9,20,#,#,15,7}, 3 / 9 20 / 15 7 返回其锯齿形的层次遍历为: [ [3], [20,9], [15,7] ] 思路: 我们用双端队列模拟一下这个过程

leetcode 103. 二叉树的锯齿形层次遍历

给定一个二叉树,返回其节点值的锯齿形层次遍历.(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行). 例如:给定二叉树 [3,9,20,null,null,15,7], 3 / 9 20 / 15 7 返回锯齿形层次遍历如下: [ [3], [20,9], [15,7] ] 1 class Solution { 2 public: 3 vector<vector<int>> zigzagLevelOrder(TreeNode* root) { 4 stack&l

LeetCode 第103题 二叉树的锯齿形层次遍历

给定一个二叉树,返回其节点值的锯齿形层次遍历.(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行). 例如:给定二叉树 [3,9,20,null,null,15,7], 3 / 9 20 / 15 7 返回锯齿形层次遍历如下: [ [3], [20,9], [15,7] ] 思路: 与层次遍历类似,可以直接将特定层次的结果倒置 1 class Solution103 { 2 3 public List<List<Integer>> zigzagLevelOrde

LeetCode 103. 二叉树的锯齿形层次遍历(Binary Tree Zigzag Level Order Traversal)

103. 二叉树的锯齿形层次遍历 103. Binary Tree Zigzag Level Order Traversal 题目描述 给定一个二叉树,返回其节点值的锯齿形层次遍历.(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行). LeetCode103. Binary Tree Zigzag Level Order Traversal中等 例如: 给定二叉树 [3,9,20,null,null,15,7], 3 / 9 20 / 15 7 返回锯齿形层次遍历如下: [

LeetCode 103 二叉树的锯齿形层次遍历 以及 LinkedList

LeetCode103 二叉树的锯齿形层次遍历: 给定一个二叉树,返回其节点值的锯齿形层次遍历.(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行). 例如:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回锯齿形层次遍历如下:[[3],[20,9],[15,7]] import java.util.List; import java.util.ArrayList; import java.util.LinkedList;

【python-leetcode103-树的宽度遍历】二叉树的锯齿形层次遍历

给定一个二叉树,返回其节点值的锯齿形层次遍历.(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行). 例如:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20    / \  15 7返回锯齿形层次遍历如下: [ [3], [20,9], [15,7]] 代码: # Definition for a binary tree node. # class TreeNode: # def __init__(self, x): # self.val =

IOS-自定义锯齿形背景view,使用quartz2d

由于项目需要,UI设计了一个锯齿形状的背景图,程序开发效果如下图: 这用到了Quartz2D绘图,我的思路是,画两个如下图的锯齿view: 然后两个view稍微重合一点,就是下边的那个view网上移动,把上边的那个view的下锯齿覆盖掉,不过结果却是让人失望的,如下图: 最后,我在下边的view上重新画了上边view颜色的锯齿view,如下图: 然后再把下边的那个锯齿view往上移动,正好把上面的那个view的下锯齿覆盖掉,就达到最终的效果图了,如 具体代码如下: SawtoothView.h头

LeetCode【6】. ZigZag Conversion --思路图解与java实现

ZigZag Conversion 一.题目如下: The string "PAYPALISHIRING" is written in a zigzag pattern on a given number of rows like this: (you may want to display this pattern in a fixed font for better legibility) P A H N A P L S I I G Y I R And then read line

内存溢出的解决思路

    内存溢出是指应用系统中存在无法回收的内存或使用的内存过多,最终使得程序运行要用到的内存大于虚拟机能提供的最大内存. 引起内存溢出的原因有很多种,常见的有以下几种: 1.内存中加载的数据量过于庞大,如一次从数据库取出过多数据: 2.集合类中有对对象的引用,使用完后未清空,使得JVM不能回收: 3.代码中存在死循环或循环产生过多重复的对象实体: 4.使用的第三方软件中的BUG: 5.启动参数内存值设定的过小: 内存溢出的解决方案:第一步,修改JVM启动参数,直接增加内存.(-Xms,-Xmx