CN103973311B - 一种对变长二值化描述子的快速编解码算法 - Google Patents
一种对变长二值化描述子的快速编解码算法 Download PDFInfo
- Publication number
- CN103973311B CN103973311B CN201410145436.XA CN201410145436A CN103973311B CN 103973311 B CN103973311 B CN 103973311B CN 201410145436 A CN201410145436 A CN 201410145436A CN 103973311 B CN103973311 B CN 103973311B
- Authority
- CN
- China
- Prior art keywords
- binaryzation
- node
- characteristic
- decoding
- binary tree
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Landscapes
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
在多媒体内容描述领域里,存在很多的特征描述子。对于特征维数相对较高的特征描述子,数据量是巨大的。对特征描述子进行二值化是很多研究者的选择,但是二值化的方式种类繁多。而且,在保存二值化数据的时候往往存在很大的冗余。因此,需要一种合理的编码规则来规范二值化的表示方法。本发明提出了一种对变长二值化描述子的快速编解码算法。本发明提出的对变长二值化的编码算法,大大减少了数据冗余量,而且对各种形式的二值化方案提出了一个统一的标准。本发明相应提出了对变长二值化描述子的解码方案。对一个描述子而言,平均解码时间仅为1.90*10‑4s,并没有带来额外的时间损失,计算速度很快。
Description
技术领域
本发明涉及多媒体内容描述领域,具体涉及一种对变长二值化描述子的快速编解码算法。
背景技术
当代社会由于科技快速发展导致信息极度膨胀,大量的多媒体信息不断的产生。对于多媒体内容的描述有很多种,如傅里叶描述子、SIFT描述子、形状上下描述子,MPEG中还定义了颜色、纹理、(物体)形状、运动等视觉描述子。对于特征维数相对较高的特征描述子,数据量是巨大的。对特征描述子进行二值化是很多研究者的选择,二值化的划分过程,可以用二叉树的方式来直观的进行描述。二叉树是以分支关系定义的层次结构,左右子树互不相交,所以不会出现特征点用二进制码型描述不唯一的情况。从二叉树树形中可以看出(如图1),二叉树的形状有很多种类,有满二叉树、完全二叉树、普通二叉树。二叉树形状的复杂也体现了二值化方式的多种多样。对于一个特征描述子,如果仅仅进行一层二值化有种方式,进行二层二值化可选择的有种方式,进行三层二值化所选择的有种方式,进行四层二值化有种方式,如果进行更多层,将会产生更多的二值化方式。以二层为例简单说明每层包含的二值化种类,如图2所示。如果对特征描述子选择的层数不统一,二值化形式则数不胜数。因此,需要一种合理的编码规则来规范二值化的表示方法。本发明提出了一种对变长二值化描述子的快速编解码算法。
发明内容
本发明提供了一种对变长二值化描述子的快速编解码算法。编码序列由码头和特征数据两部分构成。码头是对二叉树进行标识,对二值化采取的具体方式来进行编码。二叉树标识部分的具体编码方法是:对二叉树进行层序遍历依次访问各节点,从树根开始遍历,原特征描述子可以当作根节点,通过分层次来看,以从左到右的顺序,判断节点是否有子孩子,有子孩子则该节点编码为“1”,否则编码为“0”。特征数据描述部分用来表示经过二值化以后得到的特征数据。特征描述部分的编码方法是:从二叉树的根节点开始,根据每一个叶子节点的路径来获得该叶子节点的编码。解码时,首先将二值化标识部分解码出来,其表示采取的二值化方式。然后根据二值化的方式再对特征数据部分进行解码。本发明提出的编码算法是对二值化结果进行变长存储,跟统一层数二值化相比,大大的减少了数据量。解码时,每个描述子所用的平均解码时间仅为1.90*10-4s,计算速度很快。综上所述,本发明是具有一定的实用价值和意义的。
为了实现上述问题,本发明提出了一种对变长二值化描述子的快速编解码算法。该方法具体包括:
A、编码阶段
编码由二叉树标识和特征数据两部分组成。
A1、二叉树标识
二叉树标识——将二值化采取的具体方式进行编码。规则是:对二叉树的分支关系进行编码。编码是对二叉树进行层序遍历依次访问各节点,原特征描述子可以当作根节点,从根节点出发,首先访问第一层的树根节点,然后从左到右访问第二层上的节点,接着是第三层的节点,以此类推,自上而下,自左至右逐层访问树的节点。对于每一个节点,判断该节点是否有子孩子,如果有子孩子,则该节点编码为“1”,否则编码为“0”。
A2、特征描述
特征数据描述部分用来表示特征描述子经过二值化后得到的二值化数据。特征描述子进行二值化的最后结果是通过根节点到叶子节点的路径来描述的。左节点上的数值为“0”,右节点上的数值为“1”。从二叉树的根节点开始遍历,根据每一个叶子节点的路径来获得二值编码。二叉树的左右子树是互不相交的,所以不会出现叶子节点用二进制码型描述不唯一的情况。
二值化后的特征描述子通过码头和特征数据来进行表示。码头用来判断采取的是何种二值化的方式,特征描述部分用来表示经过二值化后得到的二值化数据。通过码头可以决定特征描述子进行二值化后的特征数据编码。
B、解码阶段
解码时,首先将二值化标识部分解码出来,其表示采取的二值化方式。然后根据二值化的方式再对特征数据部分进行解码。
B1、首先对二值化标识部分进行解码,采取逐个节点进行判断的方法。从第一个节点开始,根据每个节点对应值是否为1,来判断是否进行二值化,若某一层的节点都为0,则二值化终止,即可以得到二值化标识。
B2、然后根据二值化标识部分对特征数据进行解码。为了更快的对特征数据进行解码操作,首先将二值化标识部分扩展成“满二叉树”的形式,因为满二叉树便于计算节点的位置,然后根据这种形式对特征数据部分进行解码。通过二值化标识部分的0或1来判断节点是否进行二值化,通过特征数据的0和1来判断节点所在左子节点还是右子节点,通过此节点所在的位置来得到二值化标识部分中下一个相对应的节点,依次交替进行,直至特征数据解码完成。
本发明与现有技术相比,具有以下明显的优势和有益效果:
(1)本发明对特征描述子进行二值化后的结果进行了规范化的编码。每个数据进行二值化的层数不一样,每个特征进行二值化的方式也不同,这就造成了二值化后是一个变长的结果。如果统一保存到最大层数,会带来很大的数据冗余量。经过本发明提出的对变长二值化的编码算法,大大减少了数据冗余量,而且对各种形式的二值化方案提出了一个统一的标准。
(2)本发明相应提出了对变长二值化描述子的解码方案。对一个描述子而言,平均解码时间仅为1.90*10-4s,计算速度很快。
附图说明:
图1是特征描述子的二值化。
图2是进行二层二值化的三种方式。
图3是特征描述子进行二值化的一个实例。
具体实施方式:
本发明提出的对变长二值化描述子的快速编解码算法,对二值化特征进行变长存储,大大减少了数据存储量。每个描述子的解码并没有带来额外的时间损失,计算时间很快。
A、编码阶段
实际上,编码过程就是对二值化描述子的一个表示方式。本发明采用二叉树标识和特征数据两部分组成。
A1、二叉树标识
二叉树标识——将二值化采取的具体方式进行编码。规则是:对二叉树的分支关系进行编码。具体编码方法是,对二叉树进行层次遍历,根节点一定进行二值化,不计入编码内,首先从左到右依次访问第一层的节点,然后访问第二层的节点,以此类推,自上而下,自左至右逐层访问树的节点。对于访问到的每一个节点,判断该节点是否有子孩子,如果有子孩子,则该节点编码为“1”,否则编码为“0”。
例如二值化过程形成的二叉树如图3所示。二叉树节点上的数据是二值化后的数值,不代表具体的编码。编码是根据节点有没有子孩子来进行判断的。根节点一定进行二值化,所以根节点可以不计入编码。从第一层开始,首先考虑第一层的两个节点,左节点有子孩子,说明继续进行二值化,所以编码为1。右节点有子孩子,说明继续进行二值化,所以编码1。则第一层的描述为11。再考虑第一层中编码为1的节点,分别考虑该节点的左右节点有没有子孩子。第一层中的左节点编码为1,所以考虑其左右节点是否有子孩子。在图中可以看到,它的左右节点均没有子孩子,所以左节点编码为0,右节点编码也为0。第一层中的右节点编码为1,所以考虑其左右节点是否有子孩子。在图中可以看到,它的左节点有子孩子,编码为1。右节点没有子孩子,编码为0。所以第二层的描述为0010。然后考虑第二层中编码为1的节点,此节点的左右节点均没有子孩子。所以第三层的编码为00。此时,第三层中已经没有编码为1的节点,所以编码终止。所以二值化标识的编码为11001000。
A2、特征数据描述
特征数据描述部分用来表示特征描述子经过二值化后得到的二值化数据。特征描述子进行二值化的最后结果是通过叶子节点上的数据来描述的。从二叉树的根节点开始遍历,根据每一个叶子节点的路径来获得该叶子节点的编码。二叉树的左右子树是互不相交的,所以不会出现叶子节点用二进制码型描述不唯一的情况。
仍以图3中的二叉树为例,该二叉树包含五个叶子节点,按照根节点到叶子节点的路径来进行编码,则该特征描述子是用四种变长编码来描述的。分别为00,01,100,101。
二值化后的特征描述子就可以通过码头和特征数据表示出来。码头用来判断采取的是何种二值化的方式,从而可以决定特征描述子进行二值化后的特征数据编码。
B、解码阶段
B1、首先对二值化标识部分进行解码,采取逐个节点进行判断的方法。从第一个节点开始,根据每个节点对应值是否为1,来判断是否进行二值化,若某一层的节点都为0,则二值化终止,即可以得到二值化标识。具体解码步骤为:
1、从第一层开始进行解码,码字个数为2,用m来表示该层码字个数,
此时,m=2;
2、判断这一层中m个码字中1的个数n,若n=0,则解码终止,若n≠0,则进行步骤3;
3、根据n值计算下一层码字的个数,此时用m来表示此层码字的个数,m=2*n。然后进行步骤2,直至解码终止。
以图3中的二值化方式得到的一列编码110010001000100101......为例,第一层的码字个数一定为2,编码是11,这两个码字中1的个数为2,即n=2,说明第一层的两个节点都有子节点,所以下一层的码字个数为4,即m=2*n=2*2=4,说明第二层中有4个码字0010,这4个码字中1的个数为1,即n=1,说明第二层中只有一个节点继续进行二值化,所以下一层码字个数为2,即m=2*n=2*1=2,说明第三层有2个码字00,这2个码字中1的个数为0,说明第三层中的节点都不再进行二值化,即解码终止。解码出来的11001000即为二叉树标识部分。
B2、然后根据二值化标识部分对特征数据进行解码。为了更快的对特征数据进行解码操作,首先将二值化标识部分扩展成“满二叉树”的形式,因为满二叉树更容易来计算节点的位置,然后根据这种形式对特征数据部分进行解码。通过二值化标识部分的0或1来判断是否进行二值化,通过特征数据的0和1来判断节点所在左子节点还是右子节点,通过节点所在的位置来得到二值化标识部分中下一个相对应的节点,依次交替进行,直至特征数据解码完成。具体解码步骤为:
1)判断特征数据的第一个数值,若数值为0,则对应于码头的第1位,用k来表示此数值所在码头的位置,此时,k=1;若数值为1,则对应于码头的第2位,此时,k=2;
2)判断码头的第k位码字,若码字为0,说明此节点不再进行二值化,此节点为叶子节点,则解码终止,得到一个特征数据;若码字为1,则执行第3步;
3)读取特征数据中的下一个数值,判断数值为0或1。
4)若特征数据中的数值为0,则表示位于左节点上,所在位置为2k+1,即对应于码头的第2k+1位,令k=2k+1,执行步骤2);
若特征数据中的数值为1,则表示位于右节点上,所在位置为2k+2,对应于码头的第2k+2位,令k=2k+2,执行步骤3)。
以上述编码得到的结果为例,首先将二值化标识部分11001000扩展成“满二叉树”的形式11001000000000,然后根据这种形式对特征数据部分进行解码。特征数据为1000100101......,首先考虑特征数据第一位为1,说明是二叉树的右节点,根据扩展的二值化标识(11001000000000),可以得到,右节点对应于二值化标识的第2位,即k=1,数值为1,说明继续进行二值化,所以接着考虑特征数据中的后一位0,0位于二叉树的左节点上,对应于二值化标识中的第2k+1位,即2*2+1=5,此时令k=5,所在位置的数值为1,所以继续进行二值化,判断特征数据的下一个数值为0,0位于二叉树的左节点上,对应于二值化标识中的第2k+1位,即2*5+1=11,所在位置的数值为0,所以二值化终止,代表此位置对应节点为叶子节点,即得到100。然后继续对下一个特征值进行解码,第一位为0,说明是二叉树的左节点,对应于二值化标识中的第1位,即k=1,数值为1,说明继续进行二值化,所以接着考虑特征数据的后一位1,1位于二叉树的右节点上,对应于二值化标识中的第2k+2位,即2*1+2=4,所在位置的数值为0,所以二值化终止,代表此节点为叶子节点,即得到10。然后依次进行,最终可以得到解码100,01,00,101.....
本发明提出了一种合理的编码规则来规范二值化的表示方法。提出了一种对变长二值化描述子的快速编解码算法。每个数据进行二值化的层数不一样,每个特征进行二值化的方式也不同,这就造成了二值化后是一个变长的结果。如果统一保存到最大层数,会带来很大的数据冗余量。经过本发明提出的对变长二值化的编码算法,大大减少了数据冗余量,而且对各种形式的二值化方案提出了一个统一的标准。本发明相应提出了对变长二值化描述子的解码方案。对一个描述子而言,平均解码时间仅为1.90*10-4s,并没有带来额外的时间损失,计算速度很快。
Claims (1)
1.一种对变长二值化描述子的快速编解码算法,其特征在于,包括以下步骤:
A、编码阶段
所述编码采用二叉树标识和特征数据两部分组成;
A1、二叉树标识
二叉树标识——将二值化采取的具体方式进行编码;规则是:对二叉树的分支关系进行编码;具体编码方法是,对二叉树进行层次遍历,根节点一定进行二值化,不计入编码内,首先从左到右依次访问第一层的节点,然后访问第二层的节点,自上而下,自左至右逐层访问树的节点;对于访问到的每一个节点,判断该节点是否有子孩子,如果有子孩子,则该节点编码为“1”,否则编码为“0”;
A2、特征数据描述
特征数据描述部分用来表示特征描述子经过二值化后得到的二值化数据;特征描述子进行二值化的最后结果是通过叶子节点上的数据来描述的;从二叉树的根节点开始遍历,根据每一个叶子节点的路径来获得该叶子节点的编码;二叉树的左右子树是互不相交的,所以不会出现叶子节点用二进制码型描述不唯一的情况;
二值化后的特征描述子就通过码头和特征数据表示出来;码头用来判断采取的是何种二值化的方式,从而决定特征描述子进行二值化后的特征数据编码;
B、解码阶段
B1、首先对二值化标识部分进行解码,采取逐个节点进行判断的方法;从第一个节点开始,根据每个节点对应值是否为1,来判断是否进行二值化,若某一层的节点都为0,则二值化终止,即得到二值化标识;具体解码步骤为:
(1)、从第一层开始进行解码,码字个数为2,用m来表示该层码字个数,m=2;
(2)、判断这一层中mi个码字中1的个数n,i表示层数,mi表示第i层码字个数,若n=0,则解码终止,若n≠0,则进行步骤(3);
(3)、根据n值计算下一层码字的个数,mi=2*n;然后进行步骤(2),直至解码终止;
B2、然后根据二值化标识部分对特征数据进行解码;为了更快的对特征数据进行解码操作,首先将二值化标识部分扩展成“满二叉树”的形式,因为满二叉树更容易来计算节点的位置,然后根据这种形式对特征数据部分进行解码;通过二值化标识部分的0或1来判断是否进行二值化,通过特征数据的0和1来判断节点所在左子节点还是右子节点,通过节点所在的位置来得到二值化标识部分中下一个相对应的节点,依次交替进行,直至特征数据解码完成;具体解码步骤为:
1)判断特征数据的第一个数值,若数值为0,则对应于码头的第1位,用k来表示此数值所在码头的位置,此时,k=1;若数值为1,则对应于码头的第2位,此时,k=2;
2)判断码头的第k位码字,若码字为0,说明此节点不再进行二值化,此节点为叶子节点,则解码终止,得到一个特征数据;若码字为1,则执行第3)步;
3)读取特征数据中的下一个数值,判断数值为0或1;
4)若特征数据中的数值为0,则表示位于左子节点上,所在位置为2k+1,即对应于码头的第2k+1位,令k=2k+1,执行步骤2);
若特征数据中的数值为1,则表示位于右子节点上,所在位置为2k+2,对应于码头的第2k+2位,令k=2k+2,执行步骤3)。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410145436.XA CN103973311B (zh) | 2014-04-11 | 2014-04-11 | 一种对变长二值化描述子的快速编解码算法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410145436.XA CN103973311B (zh) | 2014-04-11 | 2014-04-11 | 一种对变长二值化描述子的快速编解码算法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103973311A CN103973311A (zh) | 2014-08-06 |
CN103973311B true CN103973311B (zh) | 2017-08-04 |
Family
ID=51242413
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410145436.XA Expired - Fee Related CN103973311B (zh) | 2014-04-11 | 2014-04-11 | 一种对变长二值化描述子的快速编解码算法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103973311B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109959401B (zh) * | 2019-03-26 | 2022-01-11 | 中国科学院光电技术研究所 | 一种光电轴角编码器的快速编码方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1458772A (zh) * | 2002-05-13 | 2003-11-26 | 义隆电子股份有限公司 | 以可变长度信号表示数字数据的无线通讯编解码方法 |
CN101604974A (zh) * | 2009-04-21 | 2009-12-16 | 陈向前 | 一种具有相同游程长度的测试数据压缩编码、解码方法及专用解码单元 |
CN102655589A (zh) * | 2012-04-24 | 2012-09-05 | 浙江工商大学 | 基于变长码与算术码的联合信源信道解码方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7016408B2 (en) * | 2001-08-10 | 2006-03-21 | The Directv Group, Inc. | Method, system and computer program product for LZJH data compression with minimum redundancy coding |
CN100518171C (zh) * | 2003-12-26 | 2009-07-22 | 中国电子科技集团公司第三十研究所 | 用于抽象句法表示法高层应用的通用编解码方法 |
CN1925332A (zh) * | 2005-08-31 | 2007-03-07 | 中国科学院微电子研究所 | 基于关键字的变长解码器及方法 |
-
2014
- 2014-04-11 CN CN201410145436.XA patent/CN103973311B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1458772A (zh) * | 2002-05-13 | 2003-11-26 | 义隆电子股份有限公司 | 以可变长度信号表示数字数据的无线通讯编解码方法 |
CN101604974A (zh) * | 2009-04-21 | 2009-12-16 | 陈向前 | 一种具有相同游程长度的测试数据压缩编码、解码方法及专用解码单元 |
CN102655589A (zh) * | 2012-04-24 | 2012-09-05 | 浙江工商大学 | 基于变长码与算术码的联合信源信道解码方法 |
Also Published As
Publication number | Publication date |
---|---|
CN103973311A (zh) | 2014-08-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100233972B1 (ko) | 기하학적 모델을 압축 및 압축해제하는 컴퓨터 시스템과 압축 및압축해제 | |
US9348860B2 (en) | Method for encoding a mesh model, encoded mesh model and method for decoding a mesh model | |
JP4898615B2 (ja) | 情報処理装置および符号化方法 | |
CN105610447B (zh) | 基于lz77算法的分区编码压缩方法 | |
JP2002319865A5 (ja) | 接頭語予測を用いた符号化方法及び装置 | |
CN107294539B (zh) | 一种准动态霍夫曼硬件编码器及编码方法 | |
CN105791828B (zh) | 二进制算术编码器及其编码方法 | |
JPWO2019240285A5 (zh) | ||
CN113064586A (zh) | 一种基于抽象语法树增广图模型的代码补全方法 | |
CN112287642B (zh) | 树形结构自增数据节点id及其路径链二进制编码方法 | |
CN109918658A (zh) | 一种从文本中获取目标词汇的方法及系统 | |
CN103973311B (zh) | 一种对变长二值化描述子的快速编解码算法 | |
CN113746487B (zh) | 一种数据压缩方法、装置及电子设备和存储介质 | |
CN104052749B (zh) | 一种链路层协议数据类型识别的方法 | |
CN116757158B (zh) | 基于半导体存储的数据管理方法 | |
CN1768480B (zh) | 编码装置和方法、解码装置和方法 | |
CN107733441A (zh) | 编码方法及装置、译码方法及装置 | |
CN100581258C (zh) | 霍夫曼解码方法和霍夫曼解码装置 | |
CN108829930A (zh) | 三维数字化工艺设计mbd模型的轻量化方法 | |
Iacono et al. | A tight lower bound for decrease-key in the pure heap model | |
CN112883982B (zh) | 一种面向神经网络稀疏特征的数据去零编码及封装方法 | |
CN104766217B (zh) | 一种商品信息编码方法、受干扰时的解码方法 | |
WO2020215951A1 (zh) | 一种编解码方法、装置、计算机设备及存储介质 | |
CN112685404A (zh) | 应用于键树的编码方法、应用于键树的解码方法与电子装置 | |
CN113673251A (zh) | 一种基于无监督生成网络的多编码体系互迁移方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20170804 |