CN110489605B - 一种数据偏斜分布下的Hilbert编码和解码方法 - Google Patents
一种数据偏斜分布下的Hilbert编码和解码方法 Download PDFInfo
- Publication number
- CN110489605B CN110489605B CN201910702747.4A CN201910702747A CN110489605B CN 110489605 B CN110489605 B CN 110489605B CN 201910702747 A CN201910702747 A CN 201910702747A CN 110489605 B CN110489605 B CN 110489605B
- Authority
- CN
- China
- Prior art keywords
- state
- order
- states
- hilbert
- physical coordinates
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Abstract
本发明涉及一种数据偏斜分布下的Hilbert编码和解码方法,属于图像存储,空间数据库索引等技术领域。包括Hilbert曲线状态视图构建阶段,构建编码和解码的映射表,用于实现编码值和坐标之间的映射、及其到下一阶状态的映射;Hilbert编码阶段:将编码过程分为立即编码和逐阶编码两个阶段,计算Hilbert编码;解码阶段:将解码过程分成立即解码和逐阶解码两个阶段,计算对应的物理坐标;本发明通过引入立即编码和立即解码阶段,可避免对特定序列的迭代查表操作,在特定数据偏斜分布情形下,具有较高的效率。
Description
技术领域
本发明涉及一种数据偏斜分布下的Hilbert编码和解码方法,属于图像存储,空间数据库索引等技术领域。
背景技术
1980年,Peano第一个提出了空间填充曲线,希尔伯特推广了它的存在,并给出了其一般化的生成方法;空间填充曲线可将多维数据序列化为一维数据,便于多维数据在磁盘上的存储与索引,这种映射模式在影像压缩、行程编码形式的栅格数据表达、空间划分、空间查询、空间索引、计算几何中的启发式搜索等领域应用广泛;空间排列码(SpatialOrdering Code)以连续整数与空间填充曲线实体集元素建立起一一对应的可逆对应关系,奠定了空间填充曲线相关算法的基础。目前,应用最广泛的空间排列方法包括Morton码、Gray码及Hilbert码。经大量应用验证,Hilbert空间排列码具有最好的空间聚集及空间连续性;
至今为止,已经提出了许多用于生成Hilbert曲线的算法,这些算法可归纳为两类:递归算法和迭代算法;Fisher曾经提出了基于查找表的迭代算法并指出许多递归算法并不适合计算Hilbert编码,在这之后也出现了不同的迭代算法,例如基于位运算符的多维非递归算法、基于状态视图的快速Hilbert编码算法等。现有编码和解码方法多未考虑数据偏斜分布对编解码效率的影响,其对不同的数据编码和解码效率近似相同。
发明内容
本发明要解决的技术问题是提出一种数据偏斜分布下的Hilbert编码和解码方法,针对数据偏斜分布的情形,降低编解码的复杂度,提升偏斜分布下的编码和解码效率。
本发明的技术方案是:一种数据偏斜分布下的Hilbert编码和解码方法,具体为:
Hilbert曲线状态视图构建阶段:针对一阶物理坐标和一阶编码,构建物理坐标到编码值的状态视图PC、物理坐标到下一阶状态之间关系的状态视图PN、编码值到物理坐标的状态视图CP、编码值到下一阶状态的状态视图CN,其中前2个用于一阶编码,后2个用于一阶解码。
编码阶段:给定点P(X,Y)和阶数m,计算点P的Hilbert编码C。
解码阶段:给定Hilbert编码C,计算其物理坐标P(X,Y)。
所述Hilbert曲线状态视图构建阶段,具体包括如下步骤:
一阶Hilbert曲线将整个空间分成2×2共4个区域,将每个区域称为格元,每个格元有对应的物理坐标(由横坐标和纵坐标组成)和Hilbert编码;左下、左上、右上、右下格元对应的物理坐标别为(0,0)、(0,1)、(1,1)、(1,0);一阶Hilbert曲线有4种基本状态:状态0(开口向下)、状态1(开口向左)、状态2(开口向上)、状态3(开口向右)。
4种状态下,状态视图PC中一阶物理坐标(0,0)、(0,1)、(1,1)、(1,0)分别对应的一阶编码为:
状态0对应编码00、01、10、11;
状态1:对应编码00、11、10、01;
状态2:对应编码10、11、00、01;
状态3:对应编码10、01、00、11。
4种状态下,状态视图PN中一阶物理坐标(0,0)、(0,1)、(1,1)、(1,0)分别对应的下一阶状态为:
状态0对应下一阶状态1、0、0、3;
状态1对应下一阶状态0、2、1、1;
状态2对应下一阶状态2、1、3、2;
状态3对应下一阶状态3、3、2、0。
4种状态下,状态视图CP中一阶编码值00、01、10、11分别对应的物理坐标为:
状态0对应物理坐标(0,0)、(0,1)、(1,1)、(1,0);
状态1对应物理坐标(0,0)、(1,0)、(1,1)、(0,1);
状态2对应物理坐标(1,1)、(1,0)、(0,0)、(0,1);
状态3对应物理坐标(1,1)、(0,1)、(0,0)、(1,0)。
4种状态下,状态视图CN中一阶编码值00、01、10、11分别对应的下一阶状态为:
状态0对应下一阶状态1、0、0、3;
状态1对应下一阶状态0、1、1、2;
状态2对应下一阶状态3、2、2、1;
状态3对应下一阶状态2、3、3、0。
所述编码阶段,具体包括如下步骤:
给定点P(X,Y)和阶数m,其中X=(xm-1xm-2.....x1x0)2,,Y=(ym-1ym-2.......y1y0)2,,其中xi和yi分别表示X和Y的第m-i阶的值,设初始Hilbert编码值Z=0,初始状态第1阶状态T1=0。
置位检测阶段,若xm-1=1,表明X的开头为连续的1,需置后检测第一个为1的位;否则表明X的开头为连续的0,置X'=X后直接检测第一个为1的位,同理,若ym-1=1,置否则置Y'=Y,其中/>和/>分别为X和Y按位取反后的值;然后,查找X'和Y'的最大值的第一个为1的位置pos,通过计算X'和Y'的最大值使得仅需要调用1次置位检测。
立即编码阶段,令n=m-pos-1表示可立即编码的阶数,并分别针对以下4种情况计算前n阶编码Z和第n+1阶状态Tn+1:若xm-1=0,ym-1=0,则置Z=0,Tn+1=0(n为偶数)或1(n为奇数);若xm-1=0,ym-1=1,则置Z=0101…01(共n个01),Tn+1=0;若xm-1=1,ym-1=0,则置Z=1111…11(共n个11),Tn+1=0(n为偶数)或3(n为奇数);若xm-1=1,ym-1=1,则置Z=1010…10(共n个10),Tn+1=0。
逐阶编码阶段,根据立即编码阶段获得的前n阶编码Z和第n+1阶(即第pos位对应的阶)的状态Tn+1,逐阶循环计算编码和下一阶状态,循环结束时的Z值即为所求编码,第i阶(i从n+1到m)所做处理工作如下:
根据第i阶物理坐标(xm-i,ym-i)和状态Ti,查询状态视图PC,获取第i阶对应的编码值Zi,并置Z=Z<<2|Zi,其中<<和|分别表示向左移位和按位求或的操作。
查询状态视图PN,根据第i阶物理坐标(xm-i,ym-i)和状态Ti获取第i+1阶对应的状态Ti+1。
所述解码阶段,具体包括如下步骤:
给定编码Z=(z2m-1z2m-2.....z1z0)2和阶数m,其中z2i+1z2i表示第m-i阶编码,设初始坐标X=0,Y=0,第1阶状态T1=0。
置位检测阶段,根据z2m-1z2m-2的不同取值分别执行以下任务:若z2m-1z2m-2=00,则检测Z中第一个为1的位置pos;若z2m-1z2m-2=01,则置Z'=(Z^(Z>>1))<<1后(^表示异或操作,>>表示向右移位),检测Z'中第一个被置为0的位置pos,并置pos=pos-1;若z2m-1z2m-2=10,则置Z'=Z^(Z>>1)后,检测Z'中第一个被置为0的位置pos;若z2m-1z2m-2=11,则检测Z中第一个为0的位置pos。
立即解码阶段,令n=(2*m-pos-1)/2表示可立即解码的阶数,根据z2m-1z2m-2的不同取值分别计算前n阶X、Y坐标值和第n+1阶状态Tn+1:若z2m-1z2m-2=00,则置X=0,Y=0,Tn+1=0(n为偶数)或1(n为奇数);若z2m-1z2m-2=01,则置X=0,Y=11…1(共n个1),T n+1=0;若z2m- 1z2m-2=10,则置X=11…1(共n个1),Y=11…1(共n个1),T n+1=0;若z2m-1z2m-2=11,则置X=11…1(共n个1),Y=0,T n+1=0(n为偶数)或3(n为奇数)。
逐阶解码阶段,根据立即解码阶段获得的前n阶X、Y坐标值和第n+1阶(即第pos位对应的阶)的状态T n+1,逐阶循环解码并计算下一阶状态,循环结束时的X、Y即为所求物理坐标,第i阶(i从n+1到m)所做处理工作如下:
根据第i阶编码值和状态Ti,查询状态视图CP,获取第i阶的物理坐标xi和yi,并置X=X<<1|xi,Y=Y<<1|yi,其中<<和|分别表示向左移位和按位求或的操作。
根据第i阶编码值z2(m-i+1)-1z2(m-i+1)-2和状态Ti,查询状态视图CN,获取第i+1阶对应的状态Ti+1。
本发明中提出结合状态视图和迭代算法的快速Hilbert编码和解码算法,通过引入立即编码和立即解码阶段,可减少算法执行过程中的迭代次数,故相对于传统O(m)复杂度的算法本专利算法的复杂度为O(k),k为迭代部分的阶数,k≤m,故具有较高的效率,此外能更好地适应特定数据偏斜的情况(编码时物理坐标X和Y以连续的0或1开头,解码时编码以连续的00、01、10或11开头)。
本发明的有益效果是:本发明针对数据偏斜分布的情形,引入高效的置位检测方法检测数据前部无需逐阶编码或解码的部分,可降低查询状态视图的次数,相对传统方法,其可有效提高偏斜分布时编解码效率,并对基于Hilbert曲线的相关应用有较好的促进作用。
附图说明
图1是本发明4种状态下1阶Hilbert曲线物理位置和编码值对应关系图;
图2是本发明二阶Hilbert曲线图;
图3是本发明三阶Hilbert曲线图;
图4是本发明三种编码方法在β=50%时随a变化的编码时间对比图;
图5是本发明三种编码方法在α=16阶时随β变化的编码时间对比图;
图6是本发明三种解码方法在β=50%时随a变化的解码时间对比图;
图7是本发明三种解码方法在a=16阶时随β变化的解码时间对比图;
图8是本发明的方法结构图。
具体实施方式
下面结合附图和具体实施方式,对本发明作进一步说明。
实施例1:如图1-3所示,一种数据偏斜分布下的Hilbert编码和解码方法,具体为:
Hilbert曲线状态视图构建阶段:
步骤110:如图1,一阶Hilbert曲线将整个空间分成2×2共4个区域,将每个区域称为格元,每个格元有对应的物理坐标(由横坐标和纵坐标组成)和Hilbert编码;左下、左上、右上、右下格元对应的物理坐标别为(0,0)、(0,1)、(1,1)、(1,0);一阶Hilbert曲线有4种基本状态:状态0(开口向下)、状态1(开口向左)、状态2(开口向上)、状态3(开口向右),本专利中,状态0为初始状态。
步骤120:如图1,4种状态下,状态视图PC中一阶物理坐标(0,0)、(0,1)、(1,1)、(1,0)分别对应的一阶编码为:状态0对应编码00、01、10、11;状态1对应编码00、11、10、01;状态2对应编码10、11、00、01;状态3对应编码10、01、00、11。
步骤130:如图1,4种状态下,状态视图PN中一阶物理坐标(0,0)、(0,1)、(1,1)、(1,0)分别对应的下一阶状态为:状态0对应下一阶状态1、0、0、3;状态1对应下一阶状态0、2、1、1;状态2对应下一阶状态2、1、3、2;状态3对应下一阶状态3、3、2、0。
步骤140:如图1,4种状态下,状态视图CP中一阶编码值00、01、10、11分别对应的物理坐标为:状态0对应物理坐标(0,0)、(0,1)、(1,1)、(1,0);状态1对应物理坐标(0,0)、(1,0)、(1,1)、(0,1);状态2对应物理坐标(1,1)、(1,0)、(0,0)、(0,1);状态3对应物理坐标(1,1)、(0,1)、(0,0)、(1,0)。
步骤150:4种状态下,状态视图CN中一阶编码值00、01、10、11分别对应的下一阶状态为:状态0对应下一阶状态1、0、0、3;状态1对应下一阶状态0、1、1、2;状态2对应下一阶状态3、2、2、1;状态3对应下一阶状态2、3、3、0。
Hilbert曲线编码阶段包括下列步骤。
步骤210:给定点P(X,Y)和阶数m,其中X=(xm-1xm-2.....x1x0)2,Y=(ym- 1ym-2.......y1y0)2,,其中xi和yi分别表示X和Y的第m-i阶的值,设初始Hilbert编码值Z=0,初始状态第1阶状态T1=0。
示例:给定点P(5,61),阶数m=6,其中X=(000101)2,Y=(111101)2,x2表示x第4阶的值为1,y1表示y第5阶的值为0,Z=0,T1=0。
步骤230:立即编码阶段,令n=m-pos-1表示可立即编码的阶数,并分别针对以下4种情况计算前n阶编码Z和第n+1阶状态Tn+1:若xm-1=0,ym-1=0,则置Z=0,Tn+1=0(n为偶数)或1(n为奇数);若xm-1=0,ym-1=1,则置Z=0101…01(共n个01),Tn+1=0;若xm-1=1,ym-1=0,则置Z=1111…11(共n个11),Tn+1=0(n为偶数)或3(n为奇数);若xm-1=1,ym-1=1,则置Z=1010…10(共n个10),Tn+1=0。
示例:n=6-2-1=3,因xm-1=0,ym-1=1,故置Z=0101…01(共3个01),T4=0。
步骤240:逐阶编码阶段,根据立即编码阶段获得的前n阶编码Z和第n+1阶(即第pos位对应的阶)的状态T,逐阶循环计算编码和下一阶状态,循环结束时的Z值即为所求编码,第i阶(i从n+1到m)所做处理工作如下:
根据第i阶物理坐标(xi,yi)和状态Ti,查询状态视图PC,获取对应的编码值Zi,并置Z=Z<<2|Zi,其中<<和|分别表示移位和按位求或的操作。
查询状态视图PN,根据第i位物理坐标(xi,yi)和状态Ti获取第i+1位对应的状态Ti+1。
示例:第4阶的物理坐标为(1,1),T4=0,查询状态视图PC,对应的编码值Z4=10,计算得Z=01010110;查询状态视图PN,得T5=0,重复上述步骤,第5阶的物理坐标为(0,0),对应的编码值Z5=00,计算得Z=0101011000;T6=1,第6阶的物理坐标为(1,1),对应的编码值Z6=10,得到点P最终Hilbert编码Z=010101100010。
Hilbert曲线解码阶段包括下列步骤:
步骤310:给定编码Z=(z2m-1z2m-2.....z1z0)2和阶数m,其中z2i+1z2i表示第m-i阶编码,设初始坐标X=0,Y=0,初始状态第1阶状态T1=0。
示例:给定编码Z=(010101100010)2,阶数m=6,初始坐标X=0,Y=0,初始状态第1阶状态T1=0。
步骤320:置位检测阶段,根据z2m-1z2m-2的不同取值分别执行以下任务:若z2m-1z2m-2=00,则检测Z中第一个为1的位置pos;若z2m-1z2m-2=01,则置Z'=(Z^(Z>>1))<<1后(^表示异或操作,>>表示向右移位),检测Z'中第一个被置为0的位置pos,并置pos=pos-1;若z2m-1z2m-2=10,则置Z'=Z^(Z>>1)后,检测Z'中第一个被置为0的位置pos;若z2m-1z2m-2=11,则检测Z中第一个为0的位置pos。
示例:z2m-1z2m-2=01,故置Z'=(Z^(Z>>1))<<1=111110100110,pos=6-1=5。
步骤330:立即解码阶段,令n=(2*m-pos-1)/2表示可立即解码的阶数,根据z2m- 1z2m-2的不同取值分别计算前n阶X、Y坐标值和第n+1阶状态T n+1:若z2m-1z2m-2=00,则置X=0,Y=0,T n+1=0(n为偶数)或1(n为奇数);若z2m-1z2m-2=01,则置X=0,Y=11…1(共n个1),Tn+1=0;若z2m-1z2m-2=10,则置X=11…1(共n个1),Y=11…1(共n个1),T n+1=0;若z2m-1z2m-2=11,则置X=11…1(共n个1),Y=0,T n+1=0(n为偶数)或3(n为奇数)。
示例:n=(2*m-pos-1)/2=3,z2m-1z2m-2=01,故置X=0,Y=111(共3个1),T4=0。
步骤340:逐阶解码阶段,根据立即解码阶段获得的前n阶X、Y坐标值和第n+1阶(即第pos位对应的阶)的状态T n+1,逐阶循环解码并计算下一阶状态,循环结束时的X、Y即为所求物理坐标,第i阶(i从n+1到m)所做处理工作如下:
根据第i阶编码值和状态Ti,查询状态视图CP,获取第i阶的物理坐标xi和yi,并置X=X<<1|xi,Y=Y<<1|yi,其中<<和|分别表示向左移位和按位求或的操作。
根据第i阶编码值z2(m-i+1)-1z2(m-i+1)-2和状态Ti,查询状态视图CN,获取第i+1阶对应的状态Ti+1。
示例:第4阶编码值Z4=10,T4=0,查询状态视图CP,获取第4阶的物理坐标x4=1和y4=1,计算得X=0001,Y=1111,查询状态视图CN,得T5=0;重复上述步骤,Z5=00,对应的物理坐标x5=0,y5=0,计算得X=00010,Y=11110;T6=1,Z6=10,对应的物理坐标x6=1,y6=1,计算得X=000101,Y=111101,得到最终物理坐标为(5,61)。
[本发明可通过以下实验结果进一步说明。
实验环境:Intel(R)Core(TM)i5-3230m CPU@2.60GHz双核,内存4GB。软件环境:windows 10 64位,Microsoft Visual Studio C++2015且禁用了优化(/Od)。
实验数据:为考察数据偏斜程度对算法的影响,本发明引入偏斜阶数a和偏斜率β两个参数。其中α表示前α阶取值为特定的连续模式。对编码而言,该连续模式为连续的α阶0或1,对解码而言为连续的00、01、10或11。β则表示生成的数据中前α阶连续模式的部分占全部数据的百分比。例如,α=10和β=40%,表示随机生成40%的数据的前10阶为该连续模式。为每个特定的α和β,各生成1百万条32阶的随机坐标数据(用于编码)或编码数据(用于解码)作为实验数据。
实验结果分析:
实验1是本发明方法(Skewed Hilbert Encoding and Decoding,简称SHED)(固定β为50%)与李邵俊的方法qhc及Moore的方法随a变化的编码时间对比,对比结果如图4所示。从图中可见,SHED的编码效率优于qhc和moore,且随着a的增大SHE的编码时间逐步降低,而另外两种方法不随a变化而变化。当a=24时,SHED的编码时间为0.233s,而qhc的为0.455s,效率提高近一倍,可见SHED更适合数据偏斜的场合。
实验2是本发明方法SHED(固定a为16)与李邵俊的方法qhc及Moore的方法随β变化的编码时间对比,对比结果如图5所示。SHED的编码优于qhc和moore,且随着β的增大SHED的编码时间逐步降低,而另外两种方法不随β变化而变化。当β=100%时,SHED的解码时间为0.211s,而qhc的为0.452s,效率提高超过一倍。
实验3是本发明方法SHED(固定β为50%)与李邵俊的方法qhc及Moore的方法随a变化的解码时间对比,对比结果如图6所示。从图中可见,SHED的解码效率优于qhc和moore,且随着a的增大SHED的解码时间逐步降低。
实验4是本发明方法SHED(固定a为16)与李邵俊的方法qhc及Moore的方法随β变化的解码时间对比,对比结果如图7所示。SHED的解码效率优于qhc和moore,且随着β的增大SHED的解码时间逐步降低。
以上结合附图对本发明的具体实施方式作了详细说明,但是本发明并不限于上述实施方式,在本领域普通技术人员所具备的知识范围内,还可以在不脱离本发明宗旨的前提下作出各种变化。
Claims (3)
1.一种数据偏斜分布下的Hilbert编码和解码方法,其特征在于:
步骤100:Hilbert曲线状态视图构建阶段:针对一阶物理坐标和一阶编码,需构建物理坐标到编码值的状态视图PC、物理坐标到下一阶状态之间关系的状态视图PN、编码值到物理坐标的状态视图CP、编码值到下一阶状态的状态视图CN,其中前2个用于一阶编码,后2个用于一阶解码;
步骤200:编码阶段:给定点P(X,Y)和阶数m,计算点P的Hilbert编码C;
步骤300:解码阶段:给定Hilbert编码C,计算其物理坐标P(X,Y);
所述编码阶段具体为:
步骤210:给定点P(X,Y)和阶数m,其中X=(xm-1xm-2.....x1x0)2,Y=(ym-1ym- 2.......y1y0)2,其中xi和yi分别表示X和Y的第m-i阶的值,设初始Hilbert编码值Z=0,初始状态第1阶状态T1=0;
步骤220:置位检测阶段,若xm-1=1,置否则置X'=X,同理,若ym-1=1,置/>否则置Y'=Y,其中/>和/>分别为X和Y按位取反后的值;然后,查找X'和Y'的最大值的第一个为1的位置pos;
步骤230:立即编码阶段,令n=m-pos-1表示可立即编码的阶数,并分别针对以下4种情况计算前n阶编码Z和第n+1阶状态Tn+1:
若xm-1=0,ym-1=0,则置Z=0,Tn+1=0(n为偶数)或1(n为奇数);
若xm-1=0,ym-1=1,则置Z=0101…01(共n个01),Tn+1=0;
若xm-1=1,ym-1=0,则置Z=1111…11(共n个11),Tn+1=0(n为偶数)或3(n为奇数);
若xm-1=1,ym-1=1,则置Z=1010…10(共n个10),Tn+1=0;
步骤240:逐阶编码阶段,根据立即编码阶段获得的前n阶编码Z和第n+1阶(即第pos位对应的阶)的状态Tn+1,逐阶循环计算编码和下一阶状态,循环结束时的Z值即为所求编码,第i阶(i从n+1到m)所做处理工作如下:
根据第i阶物理坐标(xm-i,ym-i)和状态Ti,查询状态视图PC,获取第i阶对应的编码值Zi,并置Z=Z<<2|Zi,其中<<和|分别表示向左移位和按位求或的操作;
查询状态视图PN,根据第i阶物理坐标(xm-i,ym-i)和状态Ti获取第i+1阶对应的状态Ti+1。
2.根据权利要求1所述的数据偏斜分布下的Hilbert编码和解码方法,其特征在于所述Hilbert曲线状态视图构建阶段具体为:
步骤110:一阶Hilbert曲线将整个空间分成2×2共4个区域,将每个区域称为格元,每个格元有对应的物理坐标(由横坐标和纵坐标组成)和Hilbert编码;左下、左上、右上、右下格元对应的物理坐标别为(0,0)、(0,1)、(1,1)、(1,0);一阶Hilbert曲线有4种基本状态:状态0(开口向下)、状态1(开口向左)、状态2(开口向上)、状态3(开口向右);
步骤120:4种状态下,状态视图PC中一阶物理坐标(0,0)、(0,1)、(1,1)、(1,0)分别对应的一阶编码如下所示:
状态0:对应编码00、01、10、11;
状态1:对应编码00、11、10、01;
状态2:对应编码10、11、00、01;
状态3:对应编码10、01、00、11;
步骤130:4种状态下,状态视图PN中一阶物理坐标(0,0)、(0,1)、(1,1)、(1,0)分别对应的下一阶状态如下所示:
状态0:对应下一阶状态1、0、0、3;
状态1:对应下一阶状态0、2、1、1;
状态2:对应下一阶状态2、1、3、2;
状态3:对应下一阶状态3、3、2、0;
步骤140:4种状态下,状态视图CP中一阶编码值00、01、10、11分别对应的物理坐标如下所示:
状态0:对应物理坐标(0,0)、(0,1)、(1,1)、(1,0);
状态1:对应物理坐标(0,0)、(1,0)、(1,1)、(0,1);
状态2:对应物理坐标(1,1)、(1,0)、(0,0)、(0,1);
状态3:对应物理坐标(1,1)、(0,1)、(0,0)、(1,0);
步骤150:4种状态下,状态视图CN中一阶编码值00、01、10、11分别对应的下一阶状态如下所示:
状态0:对应下一阶状态1、0、0、3;
状态1:对应下一阶状态0、1、1、2;
状态2:对应下一阶状态3、2、2、1;
状态3:对应下一阶状态2、3、3、0。
3.根据权利要求1所述的数据偏斜分布下的Hilbert编码和解码方法,其特征在于所述解码阶段具体为:
步骤310:给定编码Z=(z2m-1z2m-2.....z1z0)2和阶数m,其中z2i+1z2i表示第m-i阶编码,设初始坐标X=0,Y=0,第1阶状态T1=0;
步骤320:置位检测阶段,根据z2m-1z2m-2的不同取值分别执行以下任务:
若z2m-1z2m-2=00,则检测Z中第一个为1的位置pos;
若z2m-1z2m-2=01,则置Z'=(Z^(Z>>1))<<1后(^表示异或操作,>>表示向右移位),检测Z'中第一个被置为0的位置pos,并置pos=pos-1;
若z2m-1z2m-2=10,则置Z'=Z^(Z>>1)后,检测Z'中第一个被置为0的位置pos;
若z2m-1z2m-2=11,则检测Z中第一个为0的位置pos;
步骤330:立即解码阶段,令n=(2*m-pos-1)/2表示可立即解码的阶数,根据z2m-1z2m-2的不同取值分别计算前n阶X、Y坐标值和第n+1阶状态Tn+1:
若z2m-1z2m-2=00,则置X=0,Y=0,Tn+1=0(n为偶数)或1(n为奇数);
若z2m-1z2m-2=01,则置X=0,Y=11…1(共n个1),Tn+1=0;
若z2m-1z2m-2=10,则置X=11…1(共n个1),Y=11…1(共n个1),Tn+1=0;
若z2m-1z2m-2=11,则置X=11…1(共n个1),Y=0,Tn+1=0(n为偶数)或3(n为奇数);
步骤340:逐阶解码阶段,根据立即解码阶段获得的前n阶X、Y坐标值和第n+1阶(即第pos位对应的阶)的状态Tn+1,逐阶循环解码并计算下一阶状态,循环结束时的X、Y即为所求物理坐标,第i阶(i从n+1到m)所做工作如下:
根据第i阶编码值和状态Ti,查询状态视图CP,获取第i阶的物理坐标xi和yi,并置X=X<<1|xi,Y=Y<<1|yi,其中<<和|分别表示向左移位和按位求或的操作;
根据第i阶编码值z2(m-i+1)-1z2(m-i+1)-2和状态Ti,查询状态视图CN,获取第i+1阶对应的状态Ti+1。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910702747.4A CN110489605B (zh) | 2019-07-31 | 2019-07-31 | 一种数据偏斜分布下的Hilbert编码和解码方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910702747.4A CN110489605B (zh) | 2019-07-31 | 2019-07-31 | 一种数据偏斜分布下的Hilbert编码和解码方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110489605A CN110489605A (zh) | 2019-11-22 |
CN110489605B true CN110489605B (zh) | 2023-06-06 |
Family
ID=68549146
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910702747.4A Active CN110489605B (zh) | 2019-07-31 | 2019-07-31 | 一种数据偏斜分布下的Hilbert编码和解码方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110489605B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112905851B (zh) * | 2021-03-01 | 2023-06-27 | 昆明理工大学 | 一种自适应的Hilbert编码和解码方法 |
CN115664601A (zh) * | 2022-12-28 | 2023-01-31 | 合力(天津)能源科技股份有限公司 | 一种无线随钻测量信息的传输方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA1278867C (en) * | 1986-04-07 | 1991-01-08 | Garibaldi Conte | Method of and a device for digital signal coding by vector quantization |
CN108846013A (zh) * | 2018-05-04 | 2018-11-20 | 昆明理工大学 | 一种基于geohash与Patricia Trie的空间关键词查询方法及装置 |
CN109190585A (zh) * | 2018-09-19 | 2019-01-11 | 云南师范大学 | 一种佤族居住区域判别方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7167856B2 (en) * | 2001-05-15 | 2007-01-23 | Jonathan Keir Lawder | Method of storing and retrieving multi-dimensional data using the hilbert curve |
US10929501B2 (en) * | 2013-08-08 | 2021-02-23 | Sap Se | Managing and querying spatial point data in column stores |
CN110457317B (zh) * | 2019-07-23 | 2023-06-20 | 昆明理工大学 | 一种基于状态视图的Hilbert曲线编码和解码方法 |
-
2019
- 2019-07-31 CN CN201910702747.4A patent/CN110489605B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA1278867C (en) * | 1986-04-07 | 1991-01-08 | Garibaldi Conte | Method of and a device for digital signal coding by vector quantization |
CN108846013A (zh) * | 2018-05-04 | 2018-11-20 | 昆明理工大学 | 一种基于geohash与Patricia Trie的空间关键词查询方法及装置 |
CN109190585A (zh) * | 2018-09-19 | 2019-01-11 | 云南师范大学 | 一种佤族居住区域判别方法 |
Non-Patent Citations (2)
Title |
---|
Encoding and decoding the Hilbert order;Liu X et al.;SICI;第26卷(第12期);第1303-1458页 * |
N维Hilbert编码的计算;李晨阳等;计算机辅助设计与图形学学报;第18卷(第7期);第1032-1038页 * |
Also Published As
Publication number | Publication date |
---|---|
CN110489605A (zh) | 2019-11-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110489605B (zh) | 一种数据偏斜分布下的Hilbert编码和解码方法 | |
CN110457317B (zh) | 一种基于状态视图的Hilbert曲线编码和解码方法 | |
US8300966B2 (en) | Image signal encoding method and decoding method, information source encoding method and decoding method, apparatuses therefor, programs therefor, and storage media which store the programs to process gaussian integer signal | |
Cao et al. | Fast automatic multilevel thresholding method | |
IL143015A (en) | Segmentation and detection of representative frames in video sequences | |
Cai et al. | WMFP-Outlier: An efficient maximal frequent-pattern-based outlier detection approach for weighted data streams | |
CN110489606B (zh) | 一种分组Hilbert编码和解码方法 | |
CN112380268A (zh) | 等间隔时间序列压缩方法、装置、设备和存储介质 | |
CN104751459B (zh) | 多维特征的相似性度量优化方法及图像匹配方法 | |
WO2017157038A1 (zh) | 数据处理的方法、装置和设备 | |
Hu et al. | Feature reduction of multi-scale LBP for texture classification | |
CN112905851B (zh) | 一种自适应的Hilbert编码和解码方法 | |
CN110362580B (zh) | 一种bim建筑工程数据检索优化归类方法及其系统 | |
Yan et al. | FLASH: FPGA locality-aware sensitive hash for nearest neighbor search and clustering application | |
Žunić et al. | A general coding scheme for families of digital curve segments | |
Apostolakis et al. | New SIMD algorithms for cluster labeling on parallel computers | |
TWI578240B (zh) | 特徵描述方法及應用其之特徵描述器 | |
CN110598020B (zh) | 二值图像检索方法 | |
Huang | An improved early termination sparse interpolation algorithm for multivariate polynomials | |
Yang et al. | A Method for Initializing the K-means Clustering Algorithm Using Delaunay Triangulation | |
Dupont et al. | Coarse-DTW: Exploiting Sparsity in Gesture Time Series. | |
Li et al. | A variable size sliding window based frequent itemsets mining algorithm in data stream | |
CN115098721B (zh) | 一种人脸特征检索方法、装置及电子设备 | |
Li et al. | Efficient entry point encoding and decoding algorithms on 2D Hilbert space filling curve | |
Zhang et al. | A Feature Matching Method Based on Multi-Level Refinement Strategy |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |