CN116257146B - 编码、解码的方法、装置、电子设备及存储介质 - Google Patents
编码、解码的方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN116257146B CN116257146B CN202310538525.XA CN202310538525A CN116257146B CN 116257146 B CN116257146 B CN 116257146B CN 202310538525 A CN202310538525 A CN 202310538525A CN 116257146 B CN116257146 B CN 116257146B
- Authority
- CN
- China
- Prior art keywords
- bit matrix
- information
- target
- sub
- column
- 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
- 238000000034 method Methods 0.000 title claims abstract description 107
- 239000011159 matrix material Substances 0.000 claims abstract description 317
- 230000008569 process Effects 0.000 claims description 28
- 238000004590 computer program Methods 0.000 claims description 25
- 125000004122 cyclic group Chemical group 0.000 claims description 11
- RRKTZKIUPZVBMF-IBTVXLQLSA-N brucine Chemical compound O([C@@H]1[C@H]([C@H]2C3)[C@@H]4N(C(C1)=O)C=1C=C(C(=CC=11)OC)OC)CC=C2CN2[C@@H]3[C@]41CC2 RRKTZKIUPZVBMF-IBTVXLQLSA-N 0.000 claims description 3
- 238000006243 chemical reaction Methods 0.000 claims description 3
- 230000010076 replication Effects 0.000 claims description 3
- RRKTZKIUPZVBMF-UHFFFAOYSA-N brucine Natural products C1=2C=C(OC)C(OC)=CC=2N(C(C2)=O)C3C(C4C5)C2OCC=C4CN2C5C31CC2 RRKTZKIUPZVBMF-UHFFFAOYSA-N 0.000 claims 1
- 238000010586 diagram Methods 0.000 description 16
- 238000012545 processing Methods 0.000 description 12
- 238000004891 communication Methods 0.000 description 7
- 230000006870 function Effects 0.000 description 6
- 230000008859 change Effects 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 230000002093 peripheral effect Effects 0.000 description 4
- 238000003491 array Methods 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000012360 testing method Methods 0.000 description 3
- 230000001413 cellular effect Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 230000007774 longterm Effects 0.000 description 2
- 230000002085 persistent effect Effects 0.000 description 2
- 230000001902 propagating effect Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 230000009466 transformation Effects 0.000 description 2
- 238000012935 Averaging Methods 0.000 description 1
- 101150117538 Set2 gene Proteins 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 238000007639 printing Methods 0.000 description 1
- 230000007480 spreading Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/03—Arrangements for converting the position or the displacement of a member into a coded form
- G06F3/033—Pointing devices displaced or positioned by the user, e.g. mice, trackballs, pens or joysticks; Accessories therefor
- G06F3/0354—Pointing devices displaced or positioned by the user, e.g. mice, trackballs, pens or joysticks; Accessories therefor with detection of 2D relative movements between the device, or an operating part thereof, and a plane or surface, e.g. 2D mice, trackballs, pens or pucks
- G06F3/03545—Pens or stylus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/03—Arrangements for converting the position or the displacement of a member into a coded form
- G06F3/033—Pointing devices displaced or positioned by the user, e.g. mice, trackballs, pens or joysticks; Accessories therefor
- G06F3/038—Control and interface arrangements therefor, e.g. drivers or device-embedded control circuitry
- G06F3/0386—Control and interface arrangements therefor, e.g. drivers or device-embedded control circuitry for light pen
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本发明提供了一种编码、解码的方法、装置、电子设备及存储介质,其中,该编码的方法包括:将待铺码页面分为多行和多列,确定每一行需要编码的行信息以及每一列需要编码的列信息;基于德布鲁因序列对所述行信息和所述列信息分别进行编码处理,生成包含所有所述行信息的第一比特矩阵和包含所有所述列信息的第二比特矩阵;将所述第一比特矩阵和所述第二比特矩阵组合为第三比特矩阵;将所述第三比特矩阵中每个元素转换为相应的点码,生成点码图像。通过本发明实施例提供的编码、解码的方法、装置、电子设备及存储介质,可以生成具有较强抗干扰性的点码图像,解码时利用小范围的无干扰区域即可实现解码。
Description
技术领域
本发明涉及编解码技术领域,具体而言,涉及一种编码、解码的方法、装置、电子设备及存储介质。
背景技术
智能笔(也称为点阵笔等)的笔尖端设有摄像头,用户使用智能笔书写时,摄像头可以采集到书写时的笔迹;其中,当用户在铺有细小点码(也称为码点)的纸上书写时,通过摄像头可以采集到一定范围内的点码,通过对点码进行解码,可以提取出图像中编码的信息,从而可以确定笔尖的坐标信息。例如,通过对包含内容的页面进行铺码,可以向该页面叠加点码图像,利用点码图像即可实现定位。其中,一种点码图像可参见图1所示,点码图像也是一种点码阵列。
通常会利用网格线将点码图像划分为一组大小相同的网格区域,每一个网格使用二元组<x,y>表示其坐标。用户书写时,采集到的图像通常包括几个网格。当图像受到干扰时,图像内可能每一个网格都包括干扰信息,如果解码算法只能基于包含完整信息的网格解码,那么解码算法就无法解码这种干扰较强的图像,即不能实现定位。例如,在黑白打印时,页面中本身包含的内容与点码存在重叠,且难以区分,从而会对解码过程造成干扰。
有些编解码方案可以跨越多个网格解码,但是要求拍摄的图像中包含和网格面积相同的无干扰区域,该区域可以跨域多个网格。这一类编解码方案可以部分解决图像干扰的问题,但是解码成功率往往无法满足业务要求。
发明内容
为解决现有存在的技术问题,本发明实施例提供一种编码、解码的方法、装置、电子设备及存储介质。
第一方面,本发明实施例提供了一种编码的方法,包括:
将待铺码页面分为多行和多列,并为每一行设置主行号,为每一列设置主列号;
确定每一行需要编码的行信息以及每一列需要编码的列信息,所述行信息包括主行号,所述列信息包括主列号;
对所述行信息和所述列信息分别进行编码处理,生成包含所有所述行信息的第一比特矩阵和包含所有所述列信息的第二比特矩阵,所述第一比特矩阵与所述第二比特矩阵的行列数相同;
将所述第一比特矩阵和所述第二比特矩阵组合为第三比特矩阵;所述第三比特矩阵中的元素是二维的,且包括所述第一比特矩阵中同一位置的元素以及所述第二比特矩阵中同一位置的元素;以及
将所述第三比特矩阵中每个元素转换为相应的点码,生成点码图像;
其中,所述编码处理包括:
将目标信息分为a个目标序列,且所述目标序列的位数也为a;
沿第一方向依次设置多个德布鲁因序列,相邻两个所述德布鲁因序列之间的移位值与所述目标序列相对应,且所述多个德布鲁因序列与所有所述目标信息的目标序列相对应;每个所述德布鲁因序列均是由同一个德布鲁因基准序列移位得到的,所述德布鲁因基准序列的长度大于或等于2a;
以复制的方式,对每个所述德布鲁因序列均沿第二方向进行扩展,扩展后的德布鲁因序列能够在所述第二方向上覆盖所述待铺码页面;以及
将多个所述扩展后的德布鲁因序列所对应的矩阵作为包含所有所述目标信息的比特矩阵;
其中,所述目标信息为所述行信息、所述第一方向为列方向、所述第二方向为行方向;或者,所述目标信息为所述列信息、所述第一方向为行方向、所述第二方向为列方向。
在一种可能的实现方式中,所述确定每一行需要编码的行信息以及每一列需要编码的列信息,包括:
确定所述待铺码页面的页面标识,并将页面标识分为第一部分和第二部分;
将所述第一部分与每一行的所述主行号组合得到相应的行信息,将所述第二部分与每一列的所述主列号组合得到相应的列信息。
在一种可能的实现方式中,所述点码相对于网格线交点的不同偏移方位对应不同值。
在一种可能的实现方式中,所述将所述第三比特矩阵中每个元素转换为相应的点码,包括:
为每一主行号增加一行定界点码,为每一主列号增加一列定界点码;所述定界点码位于网格线交点。
第二方面,本发明实施例还提供了一种解码的方法,包括:
获取笔头在点码页面上书写时的书写图像;所述点码页面为在待铺码页面上叠加点码图像所形成的页面,且所述点码图像是基于上述任一编码的方法生成的;
对所述书写图像中的点码进行解码,得到所述书写图像对应的第三子比特矩阵,所述第三子比特矩阵中的元素是二维的;
将所述第三子比特矩阵拆分为用于表示行信息的第一子比特矩阵和用于表示列信息的第二子比特矩阵;以及
对所述第一子比特矩阵和所述第二子比特矩阵分别进行解码处理,确定笔尖所在位置对应的主行号和主列号;
其中,所述解码处理,包括:
确定目标子比特矩阵中沿第三方向排列的多个目标子序列;
在相邻两个所述目标子序列包含b位连续序列的情况下,将两个所述b位连续序列之间的移位值作为相邻两个所述目标子序列之间的移位值;b≥a;以及
确定所述目标子比特矩阵中至少部分相邻两个所述目标子序列之间的移位值,并根据所述至少部分相邻两个所述目标子序列之间的移位值,还原得到所述目标子比特矩阵对应的目标信息;
其中,所述目标子比特矩阵为所述第一子比特矩阵、所述目标信息为行信息、所述第三方向为列方向;或者,所述目标子比特矩阵为所述第二子比特矩阵、所述目标信息为列信息、所述第三方向为行方向。
在一种可能的实现方式中,在所述点码相对于网格线交点的不同偏移方位对应不同值的情况下,所述解码处理还包括:
根据所述目标子序列中c位的序列是否属于德布鲁因基准序列中的一部分,确定所述目标子序列的正确度;c>a;
根据至少部分所述目标子序列的正确度综合确定所述目标子比特矩阵的正确度;
在所述目标子比特矩阵的正确度满足要求的情况下,确定所述目标子比特矩阵方向正确;
并且,在所述第一子比特矩阵和所述第二子比特矩阵均方向正确的情况下,确定所述书写图像方位正确。
在一种可能的实现方式中,在所述点码图像中包括定界点码的情况下,所述对所述书写图像中的点码进行解码,得到所述书写图像对应的第三子比特矩阵,包括:
确定所述书写图像中网格线的位置;
根据点码偏离网格线交点的程度,确定定界点码;
剔除掉所有的所述定界点码,生成所述书写图像对应的第三子比特矩阵。
第三方面,本发明实施例还提供了一种编码的装置,包括:
设置模块,用于将待铺码页面分为多行和多列,并为每一行设置主行号,为每一列设置主列号;
信息确定模块,用于确定每一行需要编码的行信息以及每一列需要编码的列信息,所述行信息包括主行号,所述列信息包括主列号;
编码模块,用于对所述行信息和所述列信息分别进行编码处理,生成包含所有所述行信息的第一比特矩阵和包含所有所述列信息的第二比特矩阵,所述第一比特矩阵与所述第二比特矩阵的行列数相同;
组合模块,用于将所述第一比特矩阵和所述第二比特矩阵组合为第三比特矩阵;所述第三比特矩阵中的元素是二维的,且包括所述第一比特矩阵中同一位置的元素以及所述第二比特矩阵中同一位置的元素;以及
转换模块,用于将所述第三比特矩阵中每个元素转换为相应的点码,生成点码图像;
其中,所述编码模块包括:
划分单元,用于将目标信息分为a个目标序列,且所述目标序列的位数也为a;
序列设置单元,用于沿第一方向依次设置多个德布鲁因序列,相邻两个所述德布鲁因序列之间的移位值与所述目标序列相对应,且所述多个德布鲁因序列与所有所述目标信息的目标序列相对应;每个所述德布鲁因序列均是由同一个德布鲁因基准序列移位得到的,所述德布鲁因基准序列的长度大于或等于2a;
扩展单元,用于以复制的方式,对每个所述德布鲁因序列均沿第二方向进行扩展,扩展后的德布鲁因序列能够在所述第二方向上覆盖所述待铺码页面;以及
生成单元,用于将多个所述扩展后的德布鲁因序列所对应的矩阵作为包含所有所述目标信息的比特矩阵;
其中,所述目标信息为所述行信息、所述第一方向为列方向、所述第二方向为行方向;或者,所述目标信息为所述列信息、所述第一方向为行方向、所述第二方向为列方向。
第四方面,本发明实施例还提供了一种解码的装置,包括:
获取模块,用于获取笔头在点码页面上书写时的书写图像;所述点码页面为在待铺码页面上叠加点码图像所形成的页面,且所述点码图像是基于权利要求1至4任意一项所述的编码的方法生成的;
矩阵确定模块,用于对所述书写图像中的点码进行解码,得到所述书写图像对应的第三子比特矩阵,所述第三子比特矩阵中的元素是二维的;
拆分模块,用于将所述第三子比特矩阵拆分为用于表示行信息的第一子比特矩阵和用于表示列信息的第二子比特矩阵;以及
解码模块,用于对所述第一子比特矩阵和所述第二子比特矩阵分别进行解码处理,确定笔尖所在位置对应的主行号和主列号;
其中,所述解码模块包括:
子序列确定单元,用于确定目标子比特矩阵中沿第三方向排列的多个目标子序列;
移位值确定单元,用于在相邻两个所述目标子序列包含b位连续序列的情况下,将两个所述b位连续序列之间的移位值作为相邻两个所述目标子序列之间的移位值;b≥a;以及
信息确定单元,用于确定所述目标子比特矩阵中至少部分相邻两个所述目标子序列之间的移位值,并根据所述至少部分相邻两个所述目标子序列之间的移位值,还原得到所述目标子比特矩阵对应的目标信息;
其中,所述目标子比特矩阵为所述第一子比特矩阵、所述目标信息为行信息、所述第三方向为列方向;或者,所述目标子比特矩阵为所述第二子比特矩阵、所述目标信息为列信息、所述第三方向为行方向。
第五方面,本发明实施例提供了一种电子设备,包括处理器和存储器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述存储器中存储的计算机程序,所述计算机程序被所述处理器执行时实现上述第一方面所述的编码的方法或上述第二方面所述的解码的方法。
第六方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述第一方面所述的编码的方法或上述第二方面所述的解码的方法。
第七方面,本申请还提供一种计算机程序产品,包括计算机程序,当计算机程序被执行时,可以实现上述第一方面所述的编码的方法或上述第二方面所述的解码的方法。
本发明实施例提供的编码、解码的方法、装置、电子设备及存储介质,以沿行方向排列的德布鲁因序列表示行信息、以沿列方向排列的德布鲁因序列表示列信息,且相邻两个德布鲁因序列之间的移位值与目标序列相对应,从而形成相应的点码图像;在对该点码图像中的部分点码进行解码时,利用相邻两个德布鲁因序列中任意足够长的连续序列,即可解码得到相应的移位值,从而还原得到相应的行信息和列信息。该编码、解码的方法具有较强的抗干扰能力,只要采集的书写图像中有一小块无干扰区域,即可解码出一部分信息,并利用多块无干扰区域,即可拼接出完整的行信息和列信息。
附图说明
为了更清楚地说明本发明实施例或背景技术中的技术方案,下面将对本发明实施例或背景技术中所需要使用的附图进行说明。
图1示出了现有点码图像的一种示意图;
图2示出了本发明实施例所提供的编码方法的一种流程图;
图3示出了本发明实施例所提供的编码方法中,生成德布鲁因序列的一种示意图;
图4示出了本发明实施例所提供的编码方法中,对应不同值的点码的示意图;
图5示出了本发明实施例所提供的编码单元的一种示意图;
图6示出了本发明实施例所提供的解码方法的一种流程图;
图7示出了本发明实施例所提供的解码方法中,对相邻两个德布鲁因序列进行解码的示意图;
图8示出了本发明实施例所提供的书写图像中,点码阵列的一种排列示意图;
图9示出了本发明实施例所提供的一种编码的装置的结构示意图;
图10示出了本发明实施例所提供的一种解码的装置的结构示意图;
图11示出了本发明实施例所提供的一种电子设备的结构示意图。
具体实施方式
下面结合本发明实施例中的附图对本发明实施例进行描述。
图2示出了本发明实施例所提供的一种编码的方法的流程图。如图2所示,该方法包括步骤201至步骤205。
步骤201:将待铺码页面分为多行和多列,并为每一行设置主行号,为每一列设置主列号。
本发明实施例中,待铺码页面为需要进行铺码的页面,可以根据实际需求选取待铺码页面。例如,在需要提取用户在某页面上的笔迹时,可以对该页面进行铺码,将该页面的源文档作为待铺码页面;例如,该待铺码页面可以为包含页面内容的PDF文件,对该PDF文件铺码后,即可打印得到包含点码阵列的纸张,用户在该纸张上书写时,通过对纸张上的点码阵列进行解码,即可确定用户书写时的笔迹。
在确定待铺码页面后,可以将该待铺码页面分为多行和多列,即可以将待铺码页面分为多个编码单元,阵列式排列的编码单元即可形成该待铺码页面。并且,为每一行设置相应的行号,为每一列设置相应的列号,即每个编码单元对应有相应的行号和列号,基于该行号和列号即可确定编码单元在待铺码页面中的位置。其中,由于本发明实施例后续会对编码单元的行、列进行进一步划分,故将此时划分出的行号称为“主行号”,将此时划分出的列号称为“主列号”。
例如,可以每隔1.8mm划分出一行或一列。即,在垂直方向上,每隔1.8mm将待铺码页面划分出一行,并设置相应的主行号y,该主行号y的取值范围与待铺码页面的高度有关;若主行号y为正数,则其取值范围为[0, Ymax],其中Ymax为待铺码页面的高度/1.8mm后所确定的整数。由于待铺码页面的尺寸与实际纸张的尺寸相对应,待铺码页面的高度不会太高,在实际使用中,主行号y的最大值Ymax一般小于255,在这种情况下,以8位(bit)的数据即可表示主行号y。将待铺码页面划分为多列的过程与上述相似,此处不做赘述;类似地,主列号x一般也可以用8位的数据表示。
为方便描述,后续以m表示主行号y的数量,n表示主列号x的数量,即将待铺码页面分为m行和n列。例如,主行号y的取值范围可以为[0, m-1],主列号x的取值范围可以为[0,n-1]。
步骤202:确定每一行需要编码的行信息以及每一列需要编码的列信息;行信息包括主行号,列信息包括主列号。
本发明实施例中,分别确定每一行需要编码的信息,即行信息,故共需要确定m个行信息;并且,每个行信息包括相应的主行号y;该行信息可以只包括主行号y,也可以进一步包括其他信息。类似地,分别确定每一列需要编码的信息,即列信息,故共需要确定n个列信息;并且,每个列信息包括相应的主列号x;该列信息可以只包括主列号x,也可以进一步包括其他信息。
步骤203:对行信息和列信息分别进行编码处理,生成包含所有行信息的第一比特矩阵和包含所有列信息的第二比特矩阵,第一比特矩阵与第二比特矩阵的行列数相同。
本发明实施例中,每个行信息、列信息均包含相应的数据,通过对行信息、列信息进行编码处理,可以得到相应的比特矩阵,即第一比特矩阵和第二比特矩阵。其中,本发明实施例基于德布鲁因(De Bruijn)序列进行编码处理,上述步骤203中的“编码处理”具体可以包括以下步骤2031至步骤2034。
步骤2031:将目标信息分为a个目标序列,且目标序列的位数也为a。
为方便描述,以目标信息指代行信息或列信息,可以理解,该目标信息是多位(bit)的数据,其为多比特的比特序列。本发明实施例中,基于目标信息的位数,将该目标信息分为a个位数为a的目标序列;所有的目标序列应该能够完整地表示目标信息,故目标信息的位数应该小于或等于a×a;若目标信息的位数不等于a×a,可以对目标信息进行补位。例如,目标信息为8位的数据,即其位数为8,此时可以将目标信息分为3个目标序列,且目标序列的位数为3,即a=3;并且,其中一个目标序列中存在补充的1位数据,所补充的数据可以为0。
以目标信息为行信息为例,可以将主行号为y的行信息分为位数均为a的a个目标序列Sy,1, Sy,2.., Sy,i,..., Sy,a,Sy,i即表示从主行号为y所对应的行信息中所分出的第i个目标序列,i=1,2,…,a;并且,每个目标序列Sy,i的位数均为a。当目标信息为列信息时,也采用相同的处理方式,此处不做赘述。一般情况下,行信息和列信息的位数相同,故,行信息、列信息所对应的a可以相同。
步骤2032:沿第一方向依次设置多个德布鲁因序列,相邻两个德布鲁因序列之间的移位值与目标序列相对应,且多个德布鲁因序列与所有目标信息的目标序列相对应;每个德布鲁因序列均是由同一个德布鲁因基准序列移位得到的,该德布鲁因基准序列的长度大于或等于2a。
本发明实施例中,基于德布鲁因序列进行编码。首先,需要基于步骤2031中的a确定德布鲁因序列的长度;其中,由于本发明实施例提供的编码方法为二进制的编码方法,为能够表示所有的目标序列,德布鲁因序列的长度不小于2a;为简化编码,一般选取最短的德布鲁因序列,即德布鲁因序列的长度为2a。并且,同一长度下,一般会存在多个不同的德布鲁因序列,本发明实施例选择其中一个德布鲁因序列作为基准序列,即德布鲁因基准序列。例如,若a=3,即德布鲁因序列的长度为8,该德布鲁因序列可以为00010111或00011101,选择其中一个作为德布鲁因基准序列即可。
基于德布鲁因序列的性质可知,德布鲁因序列为循环序列,对德布鲁因序列进行循环移位,循环移位后的序列仍然是德布鲁因序列,且与循环移位前的德布鲁因序列本质上相同,但循环移位前后可以形成相应的移位值(即循环移位值);对于长度为2a的德布鲁因序列,共可形成2a个移位值;而对于位数为a的目标序列,其也共有2a个值,故本发明实施例中以德布鲁因序列的移位值表示目标序列。具体地,相邻两个德布鲁因序列之间的移位值与目标序列相对应,例如,该移位值与目标序列的值相等。
例如,a=3,且德布鲁因基准序列为00010111;若目标序列为010,即目标序列的值为2,若其中一个德布鲁因序列为该德布鲁因基准序列,即其为00010111,则可在该德布鲁因序列的基础上循环右移两位,得到另一个德布鲁因序列11000101,两个德布鲁因序列之间的移位值即为2,以该移位值即可表示该目标序列010。
并且,将目标信息分为a个目标序列后,沿第一方向依次设置所有的目标序列,相应地,也需要沿第一方向依次设置多个德布鲁因序列。在目标信息为行信息的情况下,该第一方向为列方向;在目标信息为列信息的情况下,该第一方向为行方向。以目标信息为行信息为例,所有的目标序列沿列方向设置,相应地,所有的德布鲁因序列也沿列方向设置。
以目标信息为行信息为例,将主行号为y的行信息分为a个目标序列Sy,1, Sy,2..,Sy,i,..., Sy,a,对于最边缘的目标序列,可以为其设置两个德布鲁因序列,或者,由于存在确定的德布鲁因基准序列,也可为其设置一个德布鲁因序列,该德布鲁因序列与该德布鲁因基准序列之间的移位值表示该最边缘的目标序列。例如,主行号y为0的第一个目标序列S0,1,其为最边缘的目标序列,可以在德布鲁因基准序列的基础上循环移位S0,1,将该循环移位后得到的德布鲁因序列作为目标序列S0,1所对应的德布鲁因序列;之后,在目标序列S0,1所对应的德布鲁因序列的基础上,循环移位S0,2,即可得到目标序列S0,2所对应的德布鲁因序列,以此类推。在得到目标序列S0,a所对应的德布鲁因序列之后,可以在其基础上循环移位S1,1,得到下一个主行(即主行号y为1)的目标序列S1,1所对应的德布鲁因序列,直至确定所有行信息的所有目标序列所对应的德布鲁因序列。虽然为最边缘的目标序列设置一个德布鲁因序列时,直接解码得到最边缘的目标序列比较困难,但由于最边缘的目标序列位于待铺码页面的边缘,该位置处一般不存在需要采集的笔迹,即一般不需要解码得到最边缘的目标序列。
例如,参见图3所示,某一条行信息为AABBBCCC,其中的A、B、C只是用于指代该行信息中的位,并无实际含义。此时,a=3,对该行信息最高位补零后,分为三个目标序列0AA、BBB、CCC;并且,沿列方向对这些目标序列进行排列,图3中以X方向表示行方向,以Y方向表示列方向。在确定目标序列后,即可生成相应的德布鲁因序列;如图3所示,以德布鲁因基准序列为初始的序列,生成德布鲁因序列1,且德布鲁因序列1与德布鲁因基准序列之间的移位值为目标序列0AA;类似地,德布鲁因序列2与德布鲁因序列1之间的移位值为目标序列BBB,德布鲁因序列3与德布鲁因序列2之间的移位值为目标序列CCC。
本发明实施例中,所有目标信息也是沿第一方向排列的,通过步骤2032,可以将所有的目标信息转换为沿第一方向依次排列设置的多个德布鲁因序列。例如,若目标信息为行信息,且共有m个行信息,则可分出M=m×a个目标序列,并需要设置M个长度为的2a的德布鲁因序列,此时,所有的德布鲁因序列可以当作是一个大小为M×2a的矩阵,该矩阵中的每个元素为一位的二进制,即为0或1。类似地,若目标信息为列信息,且共有n个列信息,则可分出N=n×a个目标序列,并需要设置N个长度为的2a的德布鲁因序列,此时,所有的德布鲁因序列可以当作是一个大小为2a×N的矩阵,该矩阵中的每个元素也是一位的二进制,即为0或1。
其中,对行信息和列信息分别进行编码时,可以采用同一个德布鲁因基准序列,也可以采用不同的德布鲁因基准序列,本发明实施例对此不做限定。其中,为了保证能够形成方形的编码单元,在对行信息和列信息进行编码时,所使用的德布鲁因基准序列的长度是相同的,例如长度均为2a;一般情况下,对行信息和列信息进行编码时,采用同一个德布鲁因基准序列。
步骤2033:以复制的方式,对每个德布鲁因序列均沿第二方向进行扩展,扩展后的德布鲁因序列能够在第二方向上覆盖待铺码页面。
本发明实施例中,由于德布鲁因序列本身的长度有限,为了能够覆盖整个待铺码页面,还需要对德布鲁因序列进行扩展。具体地,长度为2a的德布鲁因序列,通过复制其本身,可以扩展为更长的序列,且扩展后的序列中任意连续的2a位数据,均仍然是德布鲁因序列;对德布鲁因序列进行扩展,可以使得扩展后的德布鲁因序列与待铺码页面的尺寸相一致。本发明实施例中,德布鲁因序列均沿第二方向进行扩展,从而能够在第二方向上覆盖待铺码页面。例如,若某德布鲁因序列为00010111,则可将其复制并扩展为0001011100010111 00010111……扩展后的德布鲁因序列的长度只要能够在第二方向上覆盖待铺码页面即可。例如,若目标信息为行信息,且主列号的数量为n,则可将德布鲁因序列沿行方向扩展至a×n位;若目标信息为列信息,且主行号的数量为m,则可将德布鲁因序列沿列方向扩展至a×m位。
在目标信息为行信息的情况下,该第二方向为行方向;在目标信息为列信息的情况下,该第二方向为列方向。换句话说,步骤203中的编码处理的过程能够适用于两种情况:一种情况是,目标信息为行信息、第一方向为列方向、第二方向为行方向;另一种情况是,目标信息为列信息、第一方向为行方向、第二方向为列方向。
步骤2034:将多个扩展后的德布鲁因序列所对应的矩阵作为包含所有目标信息的比特矩阵。
本发明实施例中,上述步骤2032所生成的所有德布鲁因序列,其包含所有的目标信息,且也可当作是一个矩阵,但该矩阵不能覆盖整个待铺码页面;多个扩展后的德布鲁因序列所对应的矩阵,不仅包含所有的目标信息,还能够覆盖整个待铺码页面。由于该矩阵中每个元素均是一位(bit,即比特)的二进制数,即每个元素均为0或1,故将该矩阵称为比特矩阵。
如上所述,若目标信息为行信息,且共有m个行信息,则所有的德布鲁因序列可以当作是一个大小为M×2a的矩阵,即M行、2a列的矩阵;若目标信息为列信息,且共有n个列信息,则所有的德布鲁因序列可以当作是一个大小为2a×N的矩阵,即2a行、N列的矩阵。对该M×2a的矩阵沿行方向(即第二方向)进行复制扩展,则可从2a行扩展至N行,扩展后的德布鲁因序列所对应的矩阵即为M×N的矩阵,即第一比特矩阵为M×N的矩阵;类似地,对2a×N的矩阵沿列方向(即第二方向)进行复制扩展,则可从2a列扩展至M列,扩展后的德布鲁因序列所对应的矩阵也是M×N的矩阵,即第二比特矩阵也是M×N的矩阵。第一比特矩阵与第二比特矩阵的行列数相同,即第一比特矩阵与第二比特矩阵的行数相同,且二者的列数也相同。其中,M可以等于N,也可以不等于N,具体基于实际情况而定。
步骤204:将第一比特矩阵和第二比特矩阵组合为第三比特矩阵;第三比特矩阵中的元素是二维的,且包括第一比特矩阵中同一位置的元素以及第二比特矩阵中同一位置的元素。
本发明实施例中,第一比特矩阵和第二比特矩阵中每个元素均是1比特的数据,将同一位置处的两个元素组合在一起,可以得到一个二维的元素,所有的二维元素即可形成新的比特矩阵,即第三比特矩阵;其中,可以直接以两位(bit)的数据表示该二维的元素。例如,第一比特矩阵为A,其第i行第j列的元素为aij,第二比特矩阵为B,其第i行第j列的元素为bij,第三比特矩阵为C,其第i行第j列的元素为cij,i=1,2,…,M,j=1,2,…,N。该元素cij即为元素aij与元素bij的组合,例如,cij=(aij,bij);由于元素aij与元素bij均为1比特的数据,二者为0或1,故二维的元素cij共四种状态,每种状态对应一个值,分别为:00,01,10,11。
步骤205:将第三比特矩阵中每个元素转换为相应的点码,生成点码图像。
本发明实施例中,第三比特矩阵包含所有行信息和所有列信息,且可以覆盖整个待铺码页面,将该第三比特矩阵中每个元素均转换为相应的点码,即可生成相应的点码图像。如上所述,第三比特矩阵中的元素cij共四种状态,所有的点码也共分为四类,每一类对应一种状态,使得通过对该点码图像进行解码,可以还原得到该第三比特矩阵。
由于该第三比特矩阵是利用德布鲁因序列得到的,且相邻两个德布鲁因序列的移位值表示实际的目标序列,基于德布鲁因序列的性质可知,在需要对点码图像进行解码时,只需要采集到相邻两个德布鲁因序列中的a位连续序列,即可确定两个德布鲁因序列的移位值。这种编码方式具有较强的抗干扰性。后续结合本发明实施例所提供的解码方法,解释说明基于该编码方法得到的点码图像如何有效避免因干扰带来无法解码的问题。
可选地,上述步骤202“确定每一行需要编码的行信息以及每一列需要编码的列信息”可以包括以下步骤A1至步骤A2。
步骤A1:确定待铺码页面的页面标识,并将页面标识分为第一部分和第二部分。
步骤A2:将第一部分与每一行的主行号组合得到相应的行信息,将第二部分与每一列的主列号组合得到相应的列信息。
本发明实施例中,由于实际场景下需要对多个不同的待铺码页面进行铺码,为了能够区分不同的待铺码页面,最终编码得到的点码中,还需要包含待铺码页面的页面标识。其中,页面标识是待铺码页面的唯一标识,用于区分不同的待铺码页面;例如,可以按照递增的方式,为每个待铺码页面赋予一个唯一的页面标识。
并且,为了能够充分利用行信息和列信息,本发明实施例将页面标识分为两部分,即将页面标识分为第一部分和第二部分,并将第一部分作为行信息中的一部分数据,将第二部分作为列信息中的一部分数据。以该行信息和列信息编码得到的点码图像,其包含待铺码页面的页面标识,从而可以利用点码直接区分不同的待铺码页面。
一般情况下,第一部分和第二部分的位数是相同的,以使得行信息和列信息的位数相同。例如,页面标识可以为32位的数据,从其中分出的第一部分、第二部分均是16位的;例如,第一部分是16位的高位部分,第二部分是16位的低位部分。若行信息和列信息均为8位的数据,则包含主行号和第一部分的行信息为24位的数据,包含主列号和第二部分的列信息也为24位的数据。此时,行信息和列信息可被分为5个5位的目标序列,故德布鲁因基准序列的长度不小于25=32,例如,德布鲁因基准序列的长度为32。
可选地,由于在铺码时一般需要借助网格线,故可以将点码设置在网格线交点不同的偏移方位上,点码相对于网格线交点的不同偏移方位对应不同值。例如,参见图4所示,横竖两条网格线401可以形成交点,点码100位于该交点的不同偏移方位,可以表示不同的值;如图4所示,点码100可以位于网格线交点的上方、右方、下方、左方,从而分别表示00,01,10,11中不同的值。这种设置点码的方式,结合德布鲁因序列的特性,可以方便准确地实现定向,后续结合本发明实施例所提供的解码方法,解释说明如何实现定向。
可选地,上述步骤205“将第三比特矩阵中每个元素转换为相应的点码”具体可以包括:为每一主行号增加一行定界点码,为每一主列号增加一列定界点码;定界点码位于网格线交点。
本发明实施例中,除了将第三比特矩阵中每个元素cij转换为相应的点码之外,还增加用于实现定位的定界点码;并且,每个主行号对应一行定界点码,每个主列号对应一列定界点码。为了能够与包含元素cij的点码予以区分,该定界点码位于网格线交点,即定界点码不存在偏移。
以德布鲁因基准序列的长度为32为例,即a=5,每个行信息分为5行目标序列,每个列信息分为5列目标序列,即每个主行号、每个主列号均对应5行或5列的点码;在增加一行、一列定界点码后,每个主行号对应6行的点码,每个主列号对应6列的点码。如上所述,待铺码页面分为多个编码单元,每个编码单元对应一个主行号和一个主列号,该编码单元对应的点码图像可参见图5所示。当a=5时,如图5所示,横竖相间的网格线401将编码单元分为多个区域,并形成多个交点,若每个主行号、主列号对应的长度为1.8mm,则两条网格线401之间的间距为0.3mm。其中,5行、5列的交点用于设置包含元素cij信息的点码100,剩下的1行、1列用于设置定界点码101;图5中以第三行、第三列设置定界点码101为例示出。本发明实施例中,将设置定界点码101的网格线称为定界线402,可以理解,该定界线402也是网格线,在实际铺码过程中,网格线只是起到辅助定位作用,所生成的点码图像中并不存在网格线。
在实际铺码时,可以将第三比特矩阵中每个a×a的子矩阵中插入定界符,以定界符表示定界点码101;其中,每个a×a的子矩阵即对应一个编码单元。
由于定界线402上的定界点码101是精确位于网格线交点的,在解码时可以很方便地确定每个编码单元的位置,能够更加准确地进行定位。
本发明实施例还提供一种解码方法,参见图6所示,该解码方法包括以下步骤601至步骤604。
步骤601:获取笔头在点码页面上书写时的书写图像;点码页面为在待铺码页面上叠加点码图像所形成的页面。其中,该点码图像是基于上述任意一种实施例提供的编码的方法生成的。
本发明实施例中,基于上述任意一种实施例提供的编码方法,可以生成按照德布鲁因序列所编码的点码图像,将该点码图像叠加至待铺码页面,即可形成包含点码的页面,即点码页面。例如,若需要自动采集学生在纸质试卷上所书写的答案,则可将电子版的试卷作为待铺码页面,并将其与点码图像叠加,从而形成既包含试卷内容、又包含细小点码的页面,打印该页面,即可得到能够在上面书写的点码页面;学生使用智能笔在该点码页面上书写时,智能笔笔头部位的摄像头可以采集到相应的书写图像,该书写图像包括笔尖,以及笔尖附近的点码等,通过对该书写图像中的点码进行解码,即可提取出点码中包含的信息,从而确定笔尖的位置。
其中,由于书写时,智能笔的角度是任意的,拍摄到的图像由于投影变换的缘故,其会产生畸变。因此,需要对拍摄到的原始图像进行正畸,才可得到方便用于解码的书写图像。例如,可以采用直线拟合之类的算法计算投影变换矩阵,将畸变的原始图像转换为俯视图,该俯视图即可作为所需的书写图像。也可采用其他正畸的方法,本实施例对此不做限定。
步骤602:对书写图像中的点码进行解码,得到书写图像对应的第三子比特矩阵,该第三子比特矩阵中的元素是二维的。
本发明实施中,在某个时刻,智能笔的摄像头只能采集到点码页面的一部分,相应地,该书写图像包含点码页面中的部分点码。如上所述,点码页面中的点码是基于第三比特矩阵中的元素cij转换得到的,每个元素cij均是二维的;对该书写图像中的点码进行解码,也可以得到一个矩阵,且该矩阵中的元素也是二维的,但由于书写图像只能采集到整个点码页面的一部分,故解码得到的矩阵也只是第三比特矩阵的一部分,本发明实施例将解码得到的矩阵称为“第三子比特矩阵”。
其中,可以采用现有方式提取出点码中所直接包含的数据,即第三子比特矩阵。例如,若采用图4所示的方式进行编码,则在解码时,可以根据书写图像中点码100的间距,确定出网格线401的位置;进而根据点码100偏离网格线401的程度,确定出点码100所表示的值。在确定书写图像中每个点码100的值之后,即可得到第三子比特矩阵。
若点码图像中包含定界点码,即以与图5相似的方式进行编码,则在确定出网格线401的位置后,也可以确定哪些点码为定界点码101,剔除该定界点码101后,即可利用其余的点码100解码得到第三子比特矩阵。
步骤603:将第三子比特矩阵拆分为用于表示行信息的第一子比特矩阵和用于表示列信息的第二子比特矩阵。
与上述步骤204的过程相反,在得到第三子比特矩阵后,将其每个二维的元素拆分为两个一维的元素,拆分后的每个元素均是一位的数据。例如,若编码时,第三比特矩阵中元素cij的高位为第一比特矩阵中的数据,元素cij的低位为第二比特矩阵中的数据,则对该第三子比特矩阵进行拆分时,可以提取出所有元素的高位,形成能够表示行信息的矩阵,即第一子比特矩阵,并且提取出所有元素的低位,形成能够表示列信息的矩阵,即第二子比特矩阵。可以理解,第一子比特矩阵为第一比特矩阵的一部分,第二子比特矩阵为第二比特矩阵的一部分。
步骤604:对第一子比特矩阵和第二子比特矩阵分别进行解码处理,确定笔尖所在位置对应的主行号和主列号。
如上所述,第一比特矩阵中的每一行均为德布鲁因序列,第二比特矩阵中的每一列均为德布鲁因序列,故第一子比特矩阵中的每一行也均为德布鲁因序列,第二子比特矩阵中的每一列也均为德布鲁因序列。虽然第一子比特矩阵、第二子比特矩阵中德布鲁因序列并不一定是完整的,但由于在编码时,以相邻两个德布鲁因序列的移位值表示实际的数据,即目标序列,而基于德布鲁因序列的特性可知,在德布鲁因序列不完整的情况下,也可以确定两个德布鲁因序列之间的移位值,从而实现对第一子比特矩阵和第二子比特矩阵的解码。
具体地,上述步骤604中的“解码处理”包括以下步骤6041至步骤6043。
步骤6041:确定目标子比特矩阵中沿第三方向排列的多个目标子序列。
为方便描述,以目标子比特矩阵指代第一子比特矩阵或第二子比特矩阵。在对目标子比特矩阵进行解码时,将其分为沿第三方向排列的多个目标子序列,即多个目标子序列之间是沿第三方向排列的。其中,在目标子比特矩阵为第一子比特矩阵的情况下,第三方向为列方向;在目标子比特矩阵为第二子比特矩阵的情况下,第三方向为行方向。在这种情况下,每个目标子序列均是德布鲁因序列,或者德布鲁因序列的一部分。
例如,目标子比特矩阵为第一子比特矩阵,即目标子比特矩阵的每一行均为德布鲁因序列,将目标子比特矩阵的每一行均作为一个目标子序列,即可得到多个目标子序列,并且,多个目标子序列是沿列方向(即第三方向)排列的。在该第三方向上,存在两两相邻的目标子序列。
步骤6042:在相邻两个目标子序列包含b位连续序列的情况下,将两个b位连续序列之间的移位值作为相邻两个目标子序列之间的移位值;b≥a。
由于在点码页面中,点码与待铺码页面中的内容可能存在重叠等原因,导致在书写图像中存在很多干扰,难以准确提取出书写图像范围内的所有点码,导致解码失败。本发明实施例中,所提取出的第三子比特矩阵中,部分元素是缺失的,这也导致部分或全部的目标子序列中,部分数据是缺失的,但在相邻两个目标子序列包含b位连续序列的情况下,仍然可以解码得到相应的移位值。
对于长度为2a的德布鲁因序列,其包括所有长度为a的子序列,且这些子序列以固定的顺序、不重复地出现在该德布鲁因序列中;若德布鲁因序列发生循环移位,则这些子序列的位置也会发生相应的移位。因此,对于两个存在循环移位的德布鲁因序列,若其长度为2a,则这两个德布鲁因序列中,位置对应的任意的a位连续序列,均可以表示这两个德布鲁因序列之间的移位值。
以a=3,且德布鲁因基准序列为00010111为例,该德布鲁因基准序列包括所有长度为3的子序列,即000,001,010,101,011,111,110,100。若另一个德布鲁因序列是在该德布鲁因基准序列的基础上循环左移两位得到的,即该德布鲁因序列为01011100;则,在序列00010111与序列01011100之间,位置对应的3位连续序列,其可表示两个序列之间的移位值。图7示出了这两个8位的德布鲁因序列,对于其中的第2位至第4位,一个3位的连续序列为001,另一个3位的连续序列为101,这两个连续序列分别位于德布鲁因基准序列所表示的8个子序列(即000,001,010,101,011,111,110,100)中的第2个、第4个,故可以确定两个德布鲁因序列之间循环左移两位。类似地,对于其中的第4位至第6位,一个3位的连续序列为101,另一个3位的连续序列为111,这两个连续序列分别位于德布鲁因基准序列所表示的8个子序列(即000,001,010,101,011,111,110,100)中的第4个、第6个,故同样可以确定两个德布鲁因序列之间循环左移两位。
对于从书写图像中提取出的目标子序列,若相邻的两个目标子序列均包括b位连续序列(b≥a),且这两个b位连续序列未错位,即这两个b位连续序列位置对应,则也可利用每个b位连续序列在德布鲁因基准序列中的位置,确定这两个b位连续序列之间的移位值,该移位值也是这两个目标子序列之间的移位值。一般情况下,取b=a即可,b越大,越能够保证解码结果的准确性。
可以理解,相邻两个目标子序列所包含的b位连续序列,这两个b位连续序列之间可以是位置完全对应的,即二者之间不存在错位;如图7所示的两种情况。或者,这两个b位连续序列之间也可以是存在错位的,只是在确定这两个b位连续序列之间的移位值时,需要考虑二者之间的错位情况,本实施例对此不做详述。
步骤6043:确定目标子比特矩阵中至少部分相邻两个目标子序列之间的移位值,并根据至少部分相邻两个目标子序列之间的移位值,还原得到目标子比特矩阵对应的目标信息。
本发明实施例中,如上所述,只要目标子比特矩阵中,相邻两个目标子序列包含b位连续序列,则可以解码得到相应的移位值,该移位值即为编码时的一个目标序列;通过多个不同的目标子序列,即可解码得到多个目标序列,进而确定相应的目标信息。其中,在目标子比特矩阵为第一子比特矩阵的情况下,该目标信息为行信息;在目标子比特矩阵为第二子比特矩阵的情况下,该目标信息为列信息。即,该解码处理的过程也能够适用于两种情况:一种情况是,目标子比特矩阵为第一子比特矩阵、目标信息为行信息、第三方向为列方向;另一种情况是,目标子比特矩阵为第二子比特矩阵、目标信息为列信息、第三方向为行方向。
对第一子比特矩阵和第二子比特矩阵分别进行上述的解码处理,即可确定相对应的行信息和列信息,即可以确定主行号和主列号。由于书写图像中可以包含多个编码单元,即包含多个主行号、主列号,可以只确定笔尖处的主行号、主列号。或者,由于主行号、主列号具有规律性,基于周围附近的主行号等,也可以确定笔尖的主行号。
可选地,在点码图像中包括定界点码的情况下,上述步骤602“对书写图像中的点码进行解码,得到书写图像对应的第三子比特矩阵”可以包括步骤B1至步骤B3。
步骤B1:确定书写图像中网格线的位置。
步骤B2:根据点码偏离网格线交点的程度,确定定界点码。
步骤B3:剔除掉所有的定界点码,生成书写图像对应的第三子比特矩阵。
本发明实施例中,定界点码位于网格线交点处,即一排或一列定界点码的间距相等,故可以确定哪些点码是定界点码,进而生成包含行信息和列信息的第三子比特矩阵。
例如,行信息和列信息中均包含页面标识中的一部分,行信息和列信息均被分为5个5位的目标序列,即a=5,且德布鲁因基准序列的长度为32;编码时还额外设置定界点码101,故每个主行号对应6行的点码,每个主列号对应6列的点码。本发明实施例中,书写图像中点码的排列可参见图8所示,即该书写图像包含四个编码单元,共有12行、12列点码。若笔尖在右下角的编码单元中,则确定该右下角的编码单元对应的主行号、主列号即可。
以确定主行号为例,若页面编码的第一部分位于行信息的高位、主行号位于行信息的低位,且第一部分为16位、主行号为8位。若从上向下依次设置所有行信息的目标序列,则在图8中,第1、2、4行或者第7、8、10行均能够表示第一部分中的部分数据,且是相同的,例如,第1行、第2行之间的移位值,与第7行、第8行之间的移位值相同。并且,第5行、第6行之间的移位值,表示图8中左上、右上两个编码单元的主行号,第11行、第12行之间的移位值,表示图8中左下、右下两个编码单元的主行号,并且,这两个主行号相差1。因此,通过确定第5行、第6行之间的移位值,或者第11行、第12行之间的移位值,均可以确定右下编码单元的主行号。
对于第1行、第2行之间的移位值,除去定界点码101之外,只要第1行、第2行包含不少于5位的连续序列,且两个连续序列位置对应,则可基于这两个连续序列解码出第1行、第2行之间的移位值。例如,若第1列至第6列(中间包含一列定界点码101)是连续的,即这些点码均是可被提取的,不存在被干扰的情况,则可利用第1行、第2行中,第1列至第6列的数据确定第1行、第2行之间的移位值;当然,利用第2列至第7列、第3列至第8列、……、第7列至第12列中任意一组数据,均能够确定第1行、第2行之间的移位值。这种解码方式具有较高的容错率,可以比较有效地抵抗书面图像中存在的干扰,在书面图像中采集到的部分点码存在干扰的情况下,一般也可以解码得到点码图像中的信息。
当点码图像中存在定界点码101时,利用定界线402可以比较方便地划分出每个编码单元;若点码图像中不设置定界点码101,利用相邻主行号相差为1,而其余信息(例如页面编码的第一部分)相同的特点,也可区划分出每个编码单元,本实施例对此不做详述。
由于用户使用智能笔进行书写时,智能笔的角度可以是任意的,导致基于从书写图像中提取出的点码存在多种可能的方位;相应地,从书写图像的点码中,可以得到多个第三子比特矩阵。由于点码按照行列的形式排列的,故可以得到四个第三子比特矩阵。即该书写图像的角度为0°、90°、180°、270°时,可分别提取出一个第三子比特矩阵。解码过程中也需要确定哪一方位是正确的,传统的方式是使用某个方向上的特定位置的点间距的差异来实现的,这种方案的抗干扰能力较弱。
可选地,本发明实施例中,在点码相对于网格线交点的不同偏移方位对应不同值的情况下,利用该点码图像还能够方便准确地实现定向,以能够确定合适的第三子比特矩阵,该定向的过程也具有较强的抗干扰能力,且定向比较准确。具体地,在确定目标子序列之后,上述解码处理还可以包括以下步骤B1至步骤B3。
步骤B1:根据目标子序列中c位的序列是否属于德布鲁因基准序列中的一部分,确定目标子序列的正确度;c>a。
步骤B2:根据至少部分目标子序列的正确度综合确定目标子比特矩阵的正确度。
步骤B3:在目标子比特矩阵的正确度满足要求的情况下,确定目标子比特矩阵方向正确;并且,在第一子比特矩阵和第二子比特矩阵均方向正确的情况下,确定书写图像方位正确。
本发明实施例中,对于长度为2a的德布鲁因序列,任一长度为a的序列(即该序列的位数为a)均属于该德布鲁因序列的一部分,而对于长度为c的序列,该序列并不一定属于德布鲁因序列的一部分。以该序列为连续序列为例,若德布鲁因序列长度为8,且为00010111,则对于任意3位的连续序列,其均属于该德布鲁因序列的一部分;而对于4位或5位等更长的连续序列,其不一定属于德布鲁因序列的一部分,例如4位的连续序列0000、1010、1111等,其并不在该德布鲁因序列00010111中。但该德布鲁因序列00010111中也包含部分4位的连续序列,例如0001、0010、0101等。对于c位并不连续的序列,其也存在上述现象;例如,5个点码中的第三个存在干扰,只能读取出其中的四个点码,这四个点码对应的序列为00X00,其中的X表示未知的数据,该序列是不连续的序列,且并不存在于该德布鲁因序列中;而该德布鲁因序列中也包含一些该格式的不连续序列,如00X10、00X01、01X11等。
若书写图像的方位正确,则可提取出正确的第三子比特矩阵,相应地,每个目标子序列均为德布鲁因序列,且与德布鲁因基准序列本质相同,只是存在一定的移位。在这种情况下,目标子序列中任意c位的序列,均属于该德布鲁因基准序列中的一部分,该目标子序列具有较高的正确度,例如正确度为1。相反地,若书写图像的方位不正确,则所提取出的第三子比特矩阵也不正确,此时的目标子序列不是德布鲁因序列,或者是与该德布鲁因基准序列不同的其他德布鲁因序列,故在该目标子序列中,大概率会出现不属于德布鲁因基准序列的c位序列,该目标子序列具有较低的正确度,例如正确度为0。可选地,在目标子序列中c位的序列属于德布鲁因基准序列中的一部分的情况下,c越大,目标子序列的正确度也越大。
综合至少部分目标子序列的正确度,可以确定目标子比特矩阵的正确度,例如,可以通过求平均值、加权求和等方式确定目标子比特矩阵的正确度,本发明实施例对此不做限定。若该目标子比特矩阵的正确度满足要求,即该目标子比特矩阵的正确度足够大,则可确定目标子比特矩阵方向正确。例如,若目标子比特矩阵的正确度大于预设阈值,或者,该目标子比特矩阵的正确度是基于四种第三子比特矩阵所确定的四个目标子比特矩阵的正确度中的最大者,则也可确定该目标子比特矩阵方向正确。
对第一子比特矩阵、第二子比特矩阵,均按照步骤B1至步骤B3的方式分别确定各自的方向是否正确,若二者的方向均正确,则可确定书写图像当前的方位正确。
具体地,由于本发明实施例以点码相对于网格线交点的不同偏移方位,表示点码不同值,当书写图像方位不正确时,点码所表示的值也不正确,使得提取出的第三子比特矩阵不正确。以图4所示为例,若某个点码位实际位于网格线交点的上方,如图4中的(a)所示,且该点码为00;若采集的书写图像被顺时针旋转了90°,则在该书写图像中,该点码位于网格线交点的右方,如图4中的(b)所示,且该点码为11,导致此时提取的第三子比特矩阵不正确。通过识别出正确的第三子比特矩阵,即可确定书写图像正确的方向。
可选地,为了能够比较好地区分第一子比特矩阵和第二子比特矩阵的正确度,本发明实施例中,位于网格线交点上方的点码、右方的点码、下方的点码、左方的点码,这四种点码所表示的值按照00、01、10、11的顺序循环排列,或者按照00、10、01、11的顺序循环排列;例如,上方的点码表示00、右方的点码表示01、下方的点码表示10、左方的点码表示11。
由于点码的高位、低位分别对应两个子比特矩阵(即第一子比特矩阵和第二子比特矩阵)中的数据,按照上述编码方式,在旋转同一角度时,第一子比特矩阵和第二子比特矩阵会发生不同的变化。
例如,点码的高位对应第一子比特矩阵,点码的低位对应第二子比特矩阵,且四种点码所表示的值按照00、01、10、11的顺序循环排列,即顺时针旋转书写图像时,某个点码的高位可以按照0→0→1→1→0→0的方式变化,某个点码的低位可以按照0→1→0→1→0的方式变化。在这种情况下,若书写图像旋转90°或270°,则一部分点码的高位保持不变(即仍然为0,或者仍然为1),而另一部分点码的高位会发生变化(从0变为1,或者从1变为0);而所有点码的低位均会发生变化。若书写图像旋转180°,则所有点码的高位均会发生变化;而一部分点码的低位保持不变,另一部分点码的低位会发生变化。即无论书写图像旋转的角度是多少,第一子比特矩阵和第二子比特矩阵中,其中一个矩阵部分数据发生变化,另一个矩阵的全部数据均会发生变化,不同的变化方式更容易出现不属于德布鲁因基准序列的c位序列,更容易确定正确的方向。
此外可选地,如上所述,对于某个长度2a,存在多种德布鲁因序列;例如,32位的德布鲁因序列一共有65536种。理论上来说,任意一种德布鲁因序列均可作为德布鲁因基准序列,但由于实际采集到的点码存在干扰,例如第三子比特矩阵存在干扰,为了进一步提高抗干扰性,本发明实施例以选择的方式选出德布鲁因基准序列。具体地,本发明实施例提供的编码的方法,还包括选择德布鲁因基准序列的过程,且该过程包括以下步骤C1至步骤C3。
步骤C1:确定用于解码的解码位数d,并预设干扰位数p;d-p>a。
本发明实施例中,由于实际采集到的点码存在干扰,导致可能出现不能采集到连续的a位序列;例如,第一子比特矩阵或第二子比特矩阵中,某一行或一列中不存在连续的a位数据。为了提高抗干扰性,本发明实施例预先设置干扰位数p,基于该干扰位数选取合适的德布鲁因序列作为德布鲁因基准序列。
其中,该干扰位数p即为采集到的点码中所允许存在的干扰情况。例如,若书写图像中存在一条黑色的直线,该黑线占据两个点码的宽度,则会导致采集到的点码中,有两行或两列的点码是未知的,此时可以将p设为2。该干扰位数p的大小具体可基于实际情况而定,或者基于人为经验选取,本实施例对此不做限定。
解码位数d表示在存在p位未知数的情况下,通过d位数据能够实现解码的位数;由德布鲁因基准序列的性质可知,该解码位数p不能小于a+p,即d-p>a;换句话说,在d位数据中,除去p位数据后,剩余数据的位数不能小于a。
并且,由于智能笔摄像头的采集范围有限,该解码位数d也不能过大,一般情况下,该解码位数d不超过摄像头采集范围对应的最大点码位数。
步骤C2:将德布鲁因候选序列中d位连续序列的p位数据作为未知数,形成包含p位未知数的待处理序列;该德布鲁因候选序列为长度大于或等于2a的一种德布鲁因序列。
本发明实施例中,当需要选用某个长度的德布鲁因序列作为德布鲁因基准序列时,将其中任意一个作为德布鲁因候选序列;例如,该德布鲁因候选序列的长度为2a。
在确定德布鲁因候选序列后,从中任意选取d位连续序列,例如,将该德布鲁因候选序列中从第1位至第d位(或第2位至第d+1位等)的数据作为该d位连续序列;并且,将该d位连续序列中的p位数据作为未知数,从而形成包含p位未知数的待处理序列,该待处理序列也是d位的,只是其中存在p位未知的数据。
例如,若d=10,p=2,则可从德布鲁因候选序列中选择d位连续序列,本实施例以DDDDDDDDDD表示该d位连续序列,其中的D表示某个二进制,具体为0或1;并且,D只是指代某个位置的二进制,不同位置的D可表示不同的数值。将该10位连续序列的2位数据作为未知数X,则可形成新的序列,即待处理序列;该待处理序列例如可以表示为DDDDXXDDDD,或者DDDDXDDXDD等。
可以理解,对于长度为2a的德布鲁因候选序列,可以从中提取出2a个不同的d位连续序列;并且,对于每一个d位连续序列,从中任意选择p位的数据作为未知数,均可形成不同的待处理序列,基于排列组合公式可知,共个待处理序列。故该德布鲁因候选序列可确定个待处理序列。
步骤C3:判断该待处理序列在该德布鲁因候选序列中是否是唯一的;若对于任意待处理序列,其该德布鲁因候选序列中均是唯一的,则将该德布鲁因候选序列作为德布鲁因基准序列。
本发明实施例中,待处理序列是d位的数据,但其中只有d-q位数据是有效的,其他q位数据是未知数,该未知数不用于判断待处理序列是否是唯一的;即只基于其中的d-q位数据进行判断,但判断过程中,需要考虑这些数据的位置,即该d-q位数据不是连续的序列。例如,a=3,q=1,d=5,且德布鲁因候选序列为00011101;对于待处理序列00X11,其在该德布鲁因候选序列中出现两次,即“00011”和“00111”,则该待处理序列不具有唯一性。
具体地,对于从长度为2a的德布鲁因候选序列中所提取出的2a个d位连续序列,若将这些d位连续序列中相同位置的p位数据作为未知数,且此时确定的2a个待处理序列互不相同,则说明这2a个待处理序列在该德布鲁因候选序列中是唯一的;通过改变p位数据的位置,可以判断其他待处理序列的唯一性;若所有待处理序列均具有唯一性,则可将该德布鲁因候选序列作为德布鲁因基准序列。
或者,对于某个待处理序列,其中的p位未知数的数值存在2p种情况,以上述例子为例,若待处理序列为DDDDXXDDDD,其对应4个序列,即:DDDD00DDDD、DDDD01DDDD、DDDD10DDDD、DDDD11DDDD;若这2p种序列中只有一个序列属于该德布鲁因候选序列,则也可确定该待处理序列具有唯一性。
需要说明的是,若待处理序列中存在a位连续的已知数,仍然以上述例子为例,若待处理序列为DDDDDXXDDD,其前5位是连续的已知数,则该待处理序列一定是唯一的,此时不需要执行上述步骤C3,即不需要判断该待处理序列的唯一性。
相应地,在解码处理的过程中,若相邻两个目标子序列不包含b位连续序列,则不执行上述步骤6042,而是执行以下步骤D1。
步骤D1:在相邻两个目标子序列不包含b位连续序列的情况下,确定相邻两个目标子序列的d位序列,将这里两个d位序列之间的移位值作为相邻两个目标子序列之间的移位值。
本发明实施例中,若不包含b位连续序列,例如不包含a位连续序列,则可以确定其中的d位序列,在被干扰的点码不超过p个的情况下,基于上述步骤C1-C3所示的编码过程可知,也可以唯一确定该d位序列在德布鲁因基准序列中的位置,进而能够确定两个d位序列之间的移位值。若被干扰的点码超过p个,则需要增大d的数值,直至解码失败。
本发明实施例提供的编码、解码的方法,以沿行方向排列的德布鲁因序列表示行信息、以沿列方向排列的德布鲁因序列表示列信息,且相邻两个德布鲁因序列之间的移位值与目标序列相对应,从而形成相应的点码图像;在对该点码图像中的部分点码进行解码时,利用相邻两个德布鲁因序列中任意足够长的连续序列,即可解码得到相应的移位值,从而还原得到相应的行信息和列信息。该编码、解码的方法具有较强的抗干扰能力,只要采集的书写图像中有一小块无干扰区域,即可解码出一部分信息,并利用多块无干扰区域,即可拼接出完整的行信息和列信息。
并且,利用目标子序列中多位的序列与德布鲁因基准序列的匹配程度,可以确定目标子序列是否正确,从而实现定向,即使书写图像中存在较多的干扰,也可比较准确地实现定向,定向的抗干扰能力也较强。行信息和列信息中均包含页面标识的一部分,该页面标识是一种全局信息,且相邻的主行号、相邻的主列号均相差1,将主行号、主列号以及全局信息分布在整个点码图像中,可以进一步提高局部解码时的准确性。
上文详细描述了本发明实施例提供的编码的方法、解码的方法,该方法也可以通过相应的装置实现,下面详细描述本发明实施例提供的编码的装置、解码的装置。
图9示出了本发明实施例所提供的一种编码的装置的结构示意图。如图9所示,该编码的装置包括:
设置模块91,用于将待铺码页面分为多行和多列,并为每一行设置主行号,为每一列设置主列号;
信息确定模块92,用于确定每一行需要编码的行信息以及每一列需要编码的列信息,所述行信息包括主行号,所述列信息包括主列号;
编码模块93,用于对所述行信息和所述列信息分别进行编码处理,生成包含所有所述行信息的第一比特矩阵和包含所有所述列信息的第二比特矩阵,所述第一比特矩阵与所述第二比特矩阵的行列数相同;
组合模块94,用于将所述第一比特矩阵和所述第二比特矩阵组合为第三比特矩阵;所述第三比特矩阵中的元素是二维的,且包括所述第一比特矩阵中同一位置的元素以及所述第二比特矩阵中同一位置的元素;以及
转换模块95,用于将所述第三比特矩阵中每个元素转换为相应的点码,生成点码图像;
其中,所述编码模块93包括:
划分单元931,用于将目标信息分为a个目标序列,且所述目标序列的位数也为a;
序列设置单元932,用于沿第一方向依次设置多个德布鲁因序列,相邻两个所述德布鲁因序列之间的移位值与所述目标序列相对应,且所述多个德布鲁因序列与所有所述目标信息的目标序列相对应;每个所述德布鲁因序列均是由同一个德布鲁因基准序列移位得到的,所述德布鲁因基准序列的长度大于或等于2a;
扩展单元933,用于以复制的方式,对每个所述德布鲁因序列均沿第二方向进行扩展,扩展后的德布鲁因序列能够在所述第二方向上覆盖所述待铺码页面;以及
生成单元934,用于将多个所述扩展后的德布鲁因序列所对应的矩阵作为包含所有所述目标信息的比特矩阵;
其中,所述目标信息为所述行信息、所述第一方向为列方向、所述第二方向为行方向;或者,所述目标信息为所述列信息、所述第一方向为行方向、所述第二方向为列方向。
在一种可能的实现方式中,所述信息确定模块92确定每一行需要编码的行信息以及每一列需要编码的列信息,包括:
确定所述待铺码页面的页面标识,并将页面标识分为第一部分和第二部分;
将所述第一部分与每一行的所述主行号组合得到相应的行信息,将所述第二部分与每一列的所述主列号组合得到相应的列信息。
在一种可能的实现方式中,所述点码相对于网格线交点的不同偏移方位对应不同值。
在一种可能的实现方式中,所述转换模块95将所述第三比特矩阵中每个元素转换为相应的点码,包括:
为每一主行号增加一行定界点码,为每一主列号增加一列定界点码;所述定界点码位于网格线交点。
本发明实施例还提供了一种解码的装置,如图10所示,该解码的装置包括:
获取模块11,用于获取笔头在点码页面上书写时的书写图像;所述点码页面为在待铺码页面上叠加点码图像所形成的页面,且所述点码图像是基于权利要求1至4任意一项所述的编码的方法生成的;
矩阵确定模块12,用于对所述书写图像中的点码进行解码,得到所述书写图像对应的第三子比特矩阵,所述第三子比特矩阵中的元素是二维的;
拆分模块13,用于将所述第三子比特矩阵拆分为用于表示行信息的第一子比特矩阵和用于表示列信息的第二子比特矩阵;以及
解码模块14,用于对所述第一子比特矩阵和所述第二子比特矩阵分别进行解码处理,确定笔尖所在位置对应的主行号和主列号;
其中,所述解码模块14包括:
子序列确定单元141,用于确定目标子比特矩阵中沿第三方向排列的多个目标子序列;
移位值确定单元142,用于在相邻两个所述目标子序列包含b位连续序列的情况下,将两个所述b位连续序列之间的移位值作为相邻两个所述目标子序列之间的移位值;b≥a;以及
信息确定单元143,用于确定所述目标子比特矩阵中至少部分相邻两个所述目标子序列之间的移位值,并根据所述至少部分相邻两个所述目标子序列之间的移位值,还原得到所述目标子比特矩阵对应的目标信息;
其中,所述目标子比特矩阵为所述第一子比特矩阵、所述目标信息为行信息、所述第三方向为列方向;或者,所述目标子比特矩阵为所述第二子比特矩阵、所述目标信息为列信息、所述第三方向为行方向。
在一种可能的实现方式中,在所述点码相对于网格线交点的不同偏移方位对应不同值的情况下,所述解码模块14还用于:
根据所述目标子序列中c位的序列是否属于德布鲁因基准序列中的一部分,确定所述目标子序列的正确度;c>a;
根据至少部分所述目标子序列的正确度综合确定所述目标子比特矩阵的正确度;
在所述目标子比特矩阵的正确度满足要求的情况下,确定所述目标子比特矩阵方向正确;
并且,在所述第一子比特矩阵和所述第二子比特矩阵均方向正确的情况下,确定所述书写图像方位正确。
在一种可能的实现方式中,在所述点码图像中包括定界点码的情况下,所述矩阵确定模块12对所述书写图像中的点码进行解码,得到所述书写图像对应的第三子比特矩阵,包括:
确定所述书写图像中网格线的位置;
根据点码偏离网格线交点的程度,确定定界点码;
剔除掉所有的所述定界点码,生成所述书写图像对应的第三子比特矩阵。
需要说明的是,上述实施例提供的编码的装置和解码的装置在实现相应的功能时,仅以上述各功能模块的划分举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的编码、解码装置与编码、解码方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
根据本申请的一个方面,本发明实施例还提供一种计算机程序产品,该计算机程序产品包括计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分从网络上被下载和安装。在该计算机程序被处理器执行时,执行本申请实施例提供的编码的方法或解码的方法。
此外,本发明实施例还提供了一种电子设备,该设备包括处理器和存储器,存储器存储有计算机程序,处理器能够执行存储器中存储的计算机程序,计算机程序被处理器执行时,可以实现上述任一实施例提供的编码的方法或解码的方法。
例如,图7示出了本发明实施例提供的一种电子设备,该设备包括总线1110、处理器1120、收发器1130、总线接口1140、存储器1150和用户接口1160。
在本发明实施例中,该设备还包括:存储在存储器1150上并可在处理器1120上运行的计算机程序,计算机程序被处理器1120执行时实现上述编码或解码的方法实施例的各个过程。
收发器1130,用于在处理器1120的控制下接收和发送数据。
本发明实施例中,总线架构(用总线1110来代表),总线1110可以包括任意数量互联的总线和桥,总线1110将包括由处理器1120代表的一个或多个处理器与存储器1150代表的存储器的各种电路连接在一起。
总线1110表示若干类型的总线结构中的任何一种总线结构中的一个或多个,包括存储器总线以及存储器控制器、外围总线、加速图形端口(Accelerate Graphical Port,AGP)、处理器或使用各种总线体系结构中的任意总线结构的局域总线。作为示例而非限制,这样的体系结构包括:工业标准体系结构(Industry Standard Architecture,ISA)总线、微通道体系结构(Micro Channel Architecture,MCA)总线、扩展ISA(Enhanced ISA,EISA)总线、视频电子标准协会(Video Electronics Standards Association,VESA)、外围部件互连(Peripheral Component Interconnect,PCI)总线。
处理器1120可以是一种集成电路芯片,具有信号处理能力。在实现过程中,上述方法实施例的各步骤可以通过处理器中硬件的集成逻辑电路或软件形式的指令完成。上述的处理器包括:通用处理器、中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(FieldProgrammable Gate Array,FPGA)、复杂可编程逻辑器件(Complex Programmable LogicDevice,CPLD)、可编程逻辑阵列(Programmable Logic Array,PLA)、微控制单元(Microcontroller Unit,MCU)或其他可编程逻辑器件、分立门、晶体管逻辑器件、分立硬件组件。可以实现或执行本发明实施例中公开的各方法、步骤及逻辑框图。例如,处理器可以是单核处理器或多核处理器,处理器可以集成于单颗芯片或位于多颗不同的芯片。
处理器1120可以是微处理器或任何常规的处理器。结合本发明实施例所公开的方法步骤可以直接由硬件译码处理器执行完成,或者由译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存取存储器(Random Access Memory,RAM)、闪存(FlashMemory)、只读存储器(Read-Only Memory,ROM)、可编程只读存储器(Programmable ROM,PROM)、可擦除可编程只读存储器(Erasable PROM,EPROM)、寄存器等本领域公知的可读存储介质中。所述可读存储介质位于存储器中,处理器读取存储器中的信息,结合其硬件完成上述方法的步骤。
总线1110还可以将,例如外围设备、稳压器或功率管理电路等各种其他电路连接在一起,总线接口1140在总线1110和收发器1130之间提供接口,这些都是本领域所公知的。因此,本发明实施例不再对其进行进一步描述。
收发器1130可以是一个元件,也可以是多个元件,例如多个接收器和发送器,提供用于在传输介质上与各种其他装置通信的单元。例如:收发器1130从其他设备接收外部数据,收发器1130用于将处理器1120处理后的数据发送给其他设备。取决于计算机系统的性质,还可以提供用户接口1160,例如:触摸屏、物理键盘、显示器、鼠标、扬声器、麦克风、轨迹球、操纵杆、触控笔。
应理解,在本发明实施例中,存储器1150可进一步包括相对于处理器1120远程设置的存储器,这些远程设置的存储器可以通过网络连接至服务器。上述网络的一个或多个部分可以是自组织网络(ad hoc network)、内联网(intranet)、外联网(extranet)、虚拟专用网(VPN)、局域网(LAN)、无线局域网(WLAN)、广域网(WAN)、无线广域网(WWAN)、城域网(MAN)、互联网(Internet)、公共交换电话网(PSTN)、普通老式电话业务网(POTS)、蜂窝电话网、无线网络、无线保真(Wi-Fi)网络以及两个或更多个上述网络的组合。例如,蜂窝电话网和无线网络可以是全球移动通信(GSM)系统、码分多址(CDMA)系统、全球微波互联接入(WiMAX)系统、通用分组无线业务(GPRS)系统、宽带码分多址(WCDMA)系统、长期演进(LTE)系统、LTE频分双工(FDD)系统、LTE时分双工(TDD)系统、先进长期演进(LTE-A)系统、通用移动通信(UMTS)系统、增强移动宽带(Enhance Mobile Broadband,eMBB)系统、海量机器类通信(massive Machine Type of Communication,mMTC)系统、超可靠低时延通信(UltraReliable Low Latency Communications,uRLLC)系统等。
应理解,本发明实施例中的存储器1150可以是易失性存储器或非易失性存储器,或可包括易失性存储器和非易失性存储器两者。其中,非易失性存储器包括:只读存储器(Read-Only Memory,ROM)、可编程只读存储器(Programmable ROM,PROM)、可擦除可编程只读存储器(Erasable PROM,EPROM)、电可擦除可编程只读存储器(Electrically EPROM,EEPROM)或闪存(Flash Memory)。
易失性存储器包括:随机存取存储器(Random Access Memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如:静态随机存取存储器(Static RAM,SRAM)、动态随机存取存储器(Dynamic RAM,DRAM)、同步动态随机存取存储器(Synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(Double Data RateSDRAM,DDRSDRAM)、增强型同步动态随机存取存储器(Enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(Synchlink DRAM,SLDRAM)和直接内存总线随机存取存储器(DirectRambus RAM,DRRAM)。本发明实施例描述的存储器1150包括但不限于上述和任意其他适合类型的存储器。
在本发明实施例中,存储器1150存储了操作系统1151和应用程序1152的如下元素:可执行模块、数据结构,或者其子集,或者其扩展集。
具体而言,操作系统1151包含各种系统程序,例如:框架层、核心库层、驱动层等,用于实现各种基础业务以及处理基于硬件的任务。应用程序1152包含各种应用程序,例如:媒体播放器(Media Player)、浏览器(Browser),用于实现各种应用业务。实现本发明实施例方法的程序可以包含在应用程序1152中。应用程序1152包括:小程序、对象、组件、逻辑、数据结构以及其他执行特定任务或实现特定抽象数据类型的计算机系统可执行指令。
此外,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述编码或解码的方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
计算机可读存储介质包括:永久性和非永久性、可移动和非可移动媒体,是可以保留和存储供指令执行设备所使用指令的有形设备。计算机可读存储介质包括:电子存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备以及上述任意合适的组合。计算机可读存储介质包括:相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、非易失性随机存取存储器(NVRAM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带存储、磁带磁盘存储或其他磁性存储设备、记忆棒、机械编码装置(例如在其上记录有指令的凹槽中的穿孔卡或凸起结构)或任何其他非传输介质、可用于存储可以被计算设备访问的信息。按照本发明实施例中的界定,计算机可读存储介质不包括暂时信号本身,例如无线电波或其他自由传播的电磁波、通过波导或其他传输介质传播的电磁波(例如穿过光纤电缆的光脉冲)或通过导线传输的电信号。
在本申请所提供的几个实施例中,应该理解到,所披露的装置、设备和方法,可以通过其他的方式实现。例如,以上描述的装置实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口、装置或单元的间接耦合或通信连接,也可以是电的、机械的或其他的形式连接。
所述作为分离部件说明的单元可以是或也可以不是物理上分开的,作为单元显示的部件可以是或也可以不是物理单元,既可以位于一个位置,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或全部单元来解决本发明实施例方案要解决的问题。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读存储介质中。基于这样的理解,本发明实施例的技术方案本质上或者说对现有技术作出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(包括:个人计算机、服务器、数据中心或其他网络设备)执行本发明各个实施例所述方法的全部或部分步骤。而上述存储介质包括如前述所列举的各种可以存储程序代码的介质。
在本发明实施例的描述中,所属技术领域的技术人员应当知道,本发明实施例可以实现为方法、装置、电子设备及存储介质。因此,本发明实施例可以具体实现为以下形式:完全的硬件、完全的软件(包括固件、驻留软件、微代码等)、硬件和软件结合的形式。此外,在一些实施例中,本发明实施例还可以实现为在一个或多个计算机可读存储介质中的计算机程序产品的形式,该计算机可读存储介质中包含计算机程序代码。
上述计算机可读存储介质可以采用一个或多个计算机可读存储介质的任意组合。计算机可读存储介质包括:电、磁、光、电磁、红外或半导体的系统、装置或器件,或者以上任意的组合。计算机可读存储介质更具体的例子包括:便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM)、闪存(Flash Memory)、光纤、光盘只读存储器(CD-ROM)、光存储器件、磁存储器件或以上任意组合。在本发明实施例中,计算机可读存储介质可以是任意包含或存储程序的有形介质,该程序可以被指令执行系统、装置、器件使用或与其结合使用。
上述计算机可读存储介质包含的计算机程序代码可以用任意适当的介质传输,包括:无线、电线、光缆、射频(Radio Frequency,RF)或者以上任意合适的组合。
可以以汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、集成电路配置数据或以一种或多种程序设计语言或其组合来编写用于执行本发明实施例操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言,例如:Java、Smalltalk、C++,还包括常规的过程式程序设计语言,例如:C语言或类似的程序设计语言。计算机程序代码可以完全的在用户计算机上执行、部分的在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行以及完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络,包括:局域网(LAN)或广域网(WAN),可以连接到用户计算机,也可以连接到外部计算机。
本发明实施例通过流程图和/或方框图描述所提供的方法、装置、设备。
应当理解,流程图和/或方框图的每个方框以及流程图和/或方框图中各方框的组合,都可以由计算机可读程序指令实现。这些计算机可读程序指令可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器,从而生产出一种机器,这些计算机可读程序指令通过计算机或其他可编程数据处理装置执行,产生了实现流程图和/或方框图中的方框规定的功能/操作的装置。
也可以将这些计算机可读程序指令存储在能使得计算机或其他可编程数据处理装置以特定方式工作的计算机可读存储介质中。这样,存储在计算机可读存储介质中的指令就产生出一个包括实现流程图和/或方框图中的方框规定的功能/操作的指令装置产品。
也可以将计算机可读程序指令加载到计算机、其他可编程数据处理装置或其他设备上,使得在计算机、其他可编程数据处理装置或其他设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机或其他可编程数据处理装置上执行的指令能够提供实现流程图和/或方框图中的方框规定的功能/操作的过程。
以上所述,仅为本发明实施例的具体实施方式,但本发明实施例的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明实施例披露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明实施例的保护范围之内。因此,本发明实施例的保护范围应以权利要求的保护范围为准。
Claims (11)
1.一种编码的方法,其特征在于,包括:
将待铺码页面分为多行和多列,并为每一行设置主行号,为每一列设置主列号;
确定每一行需要编码的行信息以及每一列需要编码的列信息,所述行信息包括主行号,所述列信息包括主列号;
对所述行信息和所述列信息分别进行编码处理,生成包含所有所述行信息的第一比特矩阵和包含所有所述列信息的第二比特矩阵,所述第一比特矩阵与所述第二比特矩阵的行列数相同;
将所述第一比特矩阵和所述第二比特矩阵组合为第三比特矩阵;所述第三比特矩阵中的元素是二维的,且包括所述第一比特矩阵中同一位置的元素以及所述第二比特矩阵中同一位置的元素;以及
将所述第三比特矩阵中每个元素转换为相应的点码,生成点码图像;
其中,所述编码处理包括:
将目标信息分为a个目标序列,且所述目标序列的位数也为a;
沿第一方向依次设置多个德布鲁因序列,相邻两个所述德布鲁因序列之间的循环移位值与所述目标序列相等,且所述多个德布鲁因序列与所有所述目标信息的目标序列相对应;每个所述德布鲁因序列均是由同一个德布鲁因基准序列循环移位得到的,所述德布鲁因基准序列的长度大于或等于2a;
以复制的方式,对每个所述德布鲁因序列均沿第二方向进行扩展,扩展后的德布鲁因序列能够在所述第二方向上覆盖所述待铺码页面;以及
将多个所述扩展后的德布鲁因序列所对应的矩阵作为包含所有所述目标信息的比特矩阵;
其中,所述目标信息为所述行信息、所述第一方向为列方向、所述第二方向为行方向;或者,所述目标信息为所述列信息、所述第一方向为行方向、所述第二方向为列方向。
2.根据权利要求1所述的方法,其特征在于,所述确定每一行需要编码的行信息以及每一列需要编码的列信息,包括:
确定所述待铺码页面的页面标识,并将页面标识分为第一部分和第二部分;
将所述第一部分与每一行的所述主行号组合得到相应的行信息,将所述第二部分与每一列的所述主列号组合得到相应的列信息。
3.根据权利要求1所述的方法,其特征在于,所述点码相对于网格线交点的不同偏移方位对应不同值。
4.根据权利要求3所述的方法,其特征在于,所述将所述第三比特矩阵中每个元素转换为相应的点码,包括:
为每一主行号增加一行定界点码,为每一主列号增加一列定界点码;所述定界点码位于网格线交点。
5.一种解码的方法,其特征在于,包括:
获取笔头在点码页面上书写时的书写图像;所述点码页面为在待铺码页面上叠加点码图像所形成的页面,且所述点码图像是基于权利要求1至4任意一项所述的编码的方法生成的;
对所述书写图像中的点码进行解码,得到所述书写图像对应的第三子比特矩阵,所述第三子比特矩阵中的元素是二维的;
将所述第三子比特矩阵拆分为用于表示行信息的第一子比特矩阵和用于表示列信息的第二子比特矩阵;以及
对所述第一子比特矩阵和所述第二子比特矩阵分别进行解码处理,确定笔尖所在位置对应的主行号和主列号;
其中,所述解码处理,包括:
确定目标子比特矩阵中沿第三方向排列的多个目标子序列;
在相邻两个所述目标子序列包含b位连续序列的情况下,将两个所述b位连续序列之间的移位值作为相邻两个所述目标子序列之间的移位值;b≥a;以及
确定所述目标子比特矩阵中至少部分相邻两个所述目标子序列之间的移位值,并根据所述至少部分相邻两个所述目标子序列之间的移位值,还原得到所述目标子比特矩阵对应的目标信息;
其中,所述目标子比特矩阵为所述第一子比特矩阵、所述目标信息为行信息、所述第三方向为列方向;或者,所述目标子比特矩阵为所述第二子比特矩阵、所述目标信息为列信息、所述第三方向为行方向。
6.根据权利要求5所述的方法,其特征在于,在所述点码相对于网格线交点的不同偏移方位对应不同值的情况下,所述解码处理还包括:
根据所述目标子序列中c位的序列是否属于德布鲁因基准序列中的一部分,确定所述目标子序列的正确度;c>a;
根据至少部分所述目标子序列的正确度综合确定所述目标子比特矩阵的正确度;
在所述目标子比特矩阵的正确度满足要求的情况下,确定所述目标子比特矩阵方向正确;
并且,在所述第一子比特矩阵和所述第二子比特矩阵均方向正确的情况下,确定所述书写图像方位正确。
7.根据权利要求5所述的方法,其特征在于,在所述点码图像中包括定界点码的情况下,所述对所述书写图像中的点码进行解码,得到所述书写图像对应的第三子比特矩阵,包括:
确定所述书写图像中网格线的位置;
根据点码偏离网格线交点的程度,确定定界点码;
剔除掉所有的所述定界点码,生成所述书写图像对应的第三子比特矩阵。
8.一种编码的装置,其特征在于,包括:
设置模块,用于将待铺码页面分为多行和多列,并为每一行设置主行号,为每一列设置主列号;
信息确定模块,用于确定每一行需要编码的行信息以及每一列需要编码的列信息,所述行信息包括主行号,所述列信息包括主列号;
编码模块,用于对所述行信息和所述列信息分别进行编码处理,生成包含所有所述行信息的第一比特矩阵和包含所有所述列信息的第二比特矩阵,所述第一比特矩阵与所述第二比特矩阵的行列数相同;
组合模块,用于将所述第一比特矩阵和所述第二比特矩阵组合为第三比特矩阵;所述第三比特矩阵中的元素是二维的,且包括所述第一比特矩阵中同一位置的元素以及所述第二比特矩阵中同一位置的元素;以及
转换模块,用于将所述第三比特矩阵中每个元素转换为相应的点码,生成点码图像;
其中,所述编码模块包括:
划分单元,用于将目标信息分为a个目标序列,且所述目标序列的位数也为a;
序列设置单元,用于沿第一方向依次设置多个德布鲁因序列,相邻两个所述德布鲁因序列之间的循环移位值与所述目标序列相等,且所述多个德布鲁因序列与所有所述目标信息的目标序列相对应;每个所述德布鲁因序列均是由同一个德布鲁因基准序列循环移位得到的,所述德布鲁因基准序列的长度大于或等于2a;
扩展单元,用于以复制的方式,对每个所述德布鲁因序列均沿第二方向进行扩展,扩展后的德布鲁因序列能够在所述第二方向上覆盖所述待铺码页面;以及
生成单元,用于将多个所述扩展后的德布鲁因序列所对应的矩阵作为包含所有所述目标信息的比特矩阵;
其中,所述目标信息为所述行信息、所述第一方向为列方向、所述第二方向为行方向;或者,所述目标信息为所述列信息、所述第一方向为行方向、所述第二方向为列方向。
9.一种解码的装置,其特征在于,包括:
获取模块,用于获取笔头在点码页面上书写时的书写图像;所述点码页面为在待铺码页面上叠加点码图像所形成的页面,且所述点码图像是基于权利要求1至4任意一项所述的编码的方法生成的;
矩阵确定模块,用于对所述书写图像中的点码进行解码,得到所述书写图像对应的第三子比特矩阵,所述第三子比特矩阵中的元素是二维的;
拆分模块,用于将所述第三子比特矩阵拆分为用于表示行信息的第一子比特矩阵和用于表示列信息的第二子比特矩阵;以及
解码模块,用于对所述第一子比特矩阵和所述第二子比特矩阵分别进行解码处理,确定笔尖所在位置对应的主行号和主列号;
其中,所述解码模块包括:
子序列确定单元,用于确定目标子比特矩阵中沿第三方向排列的多个目标子序列;
移位值确定单元,用于在相邻两个所述目标子序列包含b位连续序列的情况下,将两个所述b位连续序列之间的移位值作为相邻两个所述目标子序列之间的移位值;b≥a;以及
信息确定单元,用于确定所述目标子比特矩阵中至少部分相邻两个所述目标子序列之间的移位值,并根据所述至少部分相邻两个所述目标子序列之间的移位值,还原得到所述目标子比特矩阵对应的目标信息;
其中,所述目标子比特矩阵为所述第一子比特矩阵、所述目标信息为行信息、所述第三方向为列方向;或者,所述目标子比特矩阵为所述第二子比特矩阵、所述目标信息为列信息、所述第三方向为行方向。
10.一种电子设备,包括处理器和存储器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述存储器中存储的计算机程序,以实现如权利要求1至4中任一项所述的编码的方法、或如权利要求5至7中任一项所述的解码的方法。
11.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至4中任一项所述的编码的方法、或如权利要求5至7中任一项所述的解码的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310538525.XA CN116257146B (zh) | 2023-05-15 | 2023-05-15 | 编码、解码的方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310538525.XA CN116257146B (zh) | 2023-05-15 | 2023-05-15 | 编码、解码的方法、装置、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116257146A CN116257146A (zh) | 2023-06-13 |
CN116257146B true CN116257146B (zh) | 2023-07-14 |
Family
ID=86684685
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310538525.XA Active CN116257146B (zh) | 2023-05-15 | 2023-05-15 | 编码、解码的方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116257146B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110999145A (zh) * | 2017-08-02 | 2020-04-10 | 捷开通讯(深圳)有限公司 | 相关于使用里德-马勒编码的通信系统或其的改进 |
CN111727355A (zh) * | 2018-01-12 | 2020-09-29 | 霍尼韦尔国际公司 | 用于智能位置传感器范围扩展的磁编码 |
CN112585645A (zh) * | 2018-08-06 | 2021-03-30 | 理查德·阿拉斯 | 多轴位置感测系统 |
CN112599195A (zh) * | 2020-11-30 | 2021-04-02 | 中国科学院深圳先进技术研究院 | 一种基因序列拼接方法及应用 |
CN113345521A (zh) * | 2021-05-31 | 2021-09-03 | 天津大学 | 一种采用大片段dna存储的编码与恢复方法 |
CN113392828A (zh) * | 2021-04-08 | 2021-09-14 | 南通骏星信息科技有限公司 | 一种基于高分辨率点阵的编码与解码方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9769454B2 (en) * | 2014-06-20 | 2017-09-19 | Stmicroelectronics S.R.L. | Method for generating a depth map, related system and computer program product |
-
2023
- 2023-05-15 CN CN202310538525.XA patent/CN116257146B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110999145A (zh) * | 2017-08-02 | 2020-04-10 | 捷开通讯(深圳)有限公司 | 相关于使用里德-马勒编码的通信系统或其的改进 |
CN111727355A (zh) * | 2018-01-12 | 2020-09-29 | 霍尼韦尔国际公司 | 用于智能位置传感器范围扩展的磁编码 |
CN112585645A (zh) * | 2018-08-06 | 2021-03-30 | 理查德·阿拉斯 | 多轴位置感测系统 |
CN112599195A (zh) * | 2020-11-30 | 2021-04-02 | 中国科学院深圳先进技术研究院 | 一种基因序列拼接方法及应用 |
CN113392828A (zh) * | 2021-04-08 | 2021-09-14 | 南通骏星信息科技有限公司 | 一种基于高分辨率点阵的编码与解码方法 |
CN113345521A (zh) * | 2021-05-31 | 2021-09-03 | 天津大学 | 一种采用大片段dna存储的编码与恢复方法 |
Also Published As
Publication number | Publication date |
---|---|
CN116257146A (zh) | 2023-06-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111339228B (zh) | 一种地图更新方法、设备、云服务器和存储介质 | |
CN109754046B (zh) | 二维码、二维码的编码方法、解码方法、装置及设备 | |
KR102152346B1 (ko) | 이미지 파일의 블록 간 차이를 통한 압축율 향상 방법 및 시스템 | |
US9721318B2 (en) | Method for watermarking a three dimensional object and method for obtaining a payload from a three dimensional object | |
CN116257146B (zh) | 编码、解码的方法、装置、电子设备及存储介质 | |
CN108964786B (zh) | 一种声波信号编码、解码的方法及装置 | |
KR20210057787A (ko) | Turbo 곱 코드 디코딩 방법, 장치, 디코더 및 컴퓨터 기록 매체 | |
CN110322385B (zh) | 水印嵌入以及提取方法、装置及电子设备 | |
CN112434702A (zh) | 图像处理方法、装置、计算机设备、存储介质 | |
US11755640B2 (en) | DNA-based image storage and retrieval | |
JP4962335B2 (ja) | 埋込みデータを復元するための方法 | |
WO2024113874A1 (zh) | 环形二维码的编码方法和解码方法 | |
CN116156072B (zh) | 隐写图像生成方法、隐写信息提取方法及相关装置 | |
KR102185668B1 (ko) | 이미지 파일의 픽셀 변환을 통한 압축율 향상 방법 및 시스템 | |
CN110730277B (zh) | 一种信息编码及获取编码信息的方法和装置 | |
Kawamura et al. | SIFT feature-based watermarking method aimed at achieving IHC ver. 5 | |
CN108985420B (zh) | 一种信息码的编解码方法及解码系统 | |
CN115987304A (zh) | 一种针对数据屏蔽的纠错方法、装置及存储介质 | |
CN113557529B (zh) | 混合二维条码阅读器 | |
CN110287716B (zh) | 数据存储方法及装置 | |
CN111127288B (zh) | 可逆图像水印处理方法、装置及计算机可读存储介质 | |
CN114327203B (zh) | 一种用户操作的还原方法及装置、记录方法及装置 | |
CN110378829B (zh) | 信息提供和水印提取的方法、装置及设备 | |
KR20170104217A (ko) | 패리티가 포함된 전송 패킷을 인코딩 또는 디코딩하는 장치 및 방법 | |
CN111457947A (zh) | 位置编码系统及编码方法和装置、电子设备和存储介质 |
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 |