一种数据压缩方法、装置、终端设备及存储介质
技术领域
本申请属于数据处理技术领域,特别是涉及一种数据压缩方法、装置、终端设备及存储介质。
背景技术
无人化技术的发展给海洋测绘带来了新的发展机遇,通过将多波束测深系统搭载到无人艇,能够有效提高海洋探测工作的效率。
多波束测深系统是一种高效、高精度的水下地形测量系统。多艇协同搭载多波束测深系统进行海底地形测量时,实时传输数据有利于测量工作的顺利进行,方便了解数据采集情况,了解是否存在待测区域未涉及等等。多波束测深系统采集的数据量非常巨大,现有通信方式根本无法满足实时回传多波束测深数据的要求。因此,对多波束测深数据的压缩处理就显得非常重要。对多波束测深数据进行压缩不仅可以减小数据文件的大小,有助于节省磁盘空间,还可以极大地改善网络性能,方便数据的传输。
但是,目前对多波束测深数据进行压缩大多为有损压缩,虽然解决了数据传输的问题,但这种压缩方式在一定程度上也造成了海底特征点的丢失,根据压缩后的数据绘制得到的海底地形图也容易出现失真的问题。
发明内容
有鉴于此,本申请实施例提供了一种数据压缩方法、装置、终端设备及存储介质,以解决现有技术中对多波束测深数据进行压缩时,容易造成海底特征点丢失的问题。
本申请实施例的第一方面提供了一种数据压缩方法,包括:
采集多波束数据,根据所述多波束数据生成栅格地图;所述栅格地图中包括多个栅格点;
计算每个栅格点的深度值,并根据所述每个栅格点的深度值,将所述栅格地图划分为多个象元;其中,同一象元包含的各个栅格的栅格深度值相同;
确定每个象元的编码数据,所述编码数据中包括所述象元中各个栅格的栅格深度值;
对具有相同的栅格深度值的象元进行合并,得到多个数据块;
确定每个数据块的目标编码数据,以完成对所述多波束数据的压缩。
本申请实施例的第二方面提供了一种数据压缩装置,包括:
栅格地图生成模块,用于采集多波束数据,根据所述多波束数据生成栅格地图;所述栅格地图中包括多个栅格点;
象元划分模块,用于计算每个栅格点的深度值,并根据所述每个栅格点的深度值,将所述栅格地图划分为多个象元;其中,同一象元包含的各个栅格的栅格深度值相同;
编码数据确定模块,用于确定每个象元的编码数据,所述编码数据中包括所述象元中各个栅格的栅格深度值;
象元合并模块,用于对具有相同的栅格深度值的象元进行合并,得到多个数据块;
数据压缩模块,用于确定每个数据块的目标编码数据,以完成对所述多波束数据的压缩。
本申请实施例的第三方面提供了一种终端设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述第一方面所述的数据压缩方法的步骤。
本申请实施例的第四方面提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述第一方面所述的数据压缩方法的步骤。
与现有技术相比,本申请实施例包括以下优点:
本申请实施例,通过对原始的多波束数据进行栅格化处理,可以基于每个栅格对应的海底区域的水深值,将栅格化处理后得到的栅格地图划分为多个数据块,从而通过确定每个数据块的目标编码数据,可以采用一个目标编码数据表征一个数据块对应的海底区域,不仅压缩了多波束数据的数据量,还可以完整保留原始的多波束数据包含的海底特征点,实现了对多波束数据的无损压缩,可以在不影响成图精度的前提下,提高成图质量。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍。显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种数据压缩方法的步骤流程示意图;
图2是本申请实施例提供的多种象元的示意图;
图3是本申请实施例提供的另一种数据压缩方法的步骤流程示意图;
图4是本申请实施例提供的一种计算栅格点的深度值的示意图;
图5是本申请实施例提供的一种包含多个象元的栅格地图的示意图;
图6是本申请实施例提供的一种包含多个数据块的栅格地图的示意图;
图7是本申请实施例提供的一种数据块编号示意图;
图8是本申请实施例提供的多种基础图形的示意图;
图9是本申请实施例提供的一种数据压缩装置的示意图;
图10是本申请实施例提供的一种终端设备的示意图。
具体实施方式
以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本申请实施例。然而,本领域技术人员应当清楚,在没有这些具体细节的其他实施例中也可以实现本申请。在其他情况中,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本申请的描述。
下面通过具体实施例来说明本申请的技术方案。
参照图1,示出了本申请实施例提供的一种数据压缩方法的步骤流程示意图,具体可以包括如下步骤:
S101、采集多波束数据,根据所述多波束数据生成栅格地图;所述栅格地图中包括多个栅格点。
本申请实施例中待压缩的数据可以是多波束数据。通常,多波束数据的数据量非常巨大,通过采用本方法对多波束数据进行压缩,可以减小数据量大小,有助于节省磁盘空间,提高多波束数据的传输速率和可靠性。
在本申请实施例的一种可能的应用场景中,无人艇可以搭载多波束测深系统,由多艇协同作业,通过系统中的多波束测深仪对海底地形进行测量,采集得到相应的多波束数据。这些多波束数据可以按照本方法提供的步骤进行压缩,然后传输至岸端基站,由岸端基站对压缩后的数据进行处理,完成海底地形图的绘制。
在本申请实施例中,对于采集得到的多波束数据,可以首先对其进行网格化处理,生成包括多个栅格点的栅格地图。上述栅格点可以是指栅格地图中的任一行与任一列的交叉点。
在本申请实施例的一种可能的实现方式中,在对多波束数据进行采集前,可以首先建立空白栅格地图,然后在采集到多波束数据后,将多波束数据填充至上述空白栅格地图中,得到相应的栅格地图。
S102、计算每个栅格点的深度值,并根据所述每个栅格点的深度值,将所述栅格地图划分为多个象元。
对于通过填充多波束数据得到的栅格地图,地图中的每个栅格点可以对应一个具体的海底位置点。因此,栅格地图中每个栅格点的深度值可以看作是对应的海底位置点的高程值。
在本申请实施例中,可以以正方形作为规则的栅格单元,每个栅格单元对应相应的象元,一个栅格单元对应一个象元。
如图2所示,是本申请实施例的多种象元的示意图。在图2中,示出了四种不同形式的象元图形。其中,图2中的(a)是1×1形式的象元,(b)是2×2形式的象元,(c)是3×3形式的象元,(d)是4×4形式的象元,以此类推,可以得到多种不同形式的象元图形。
在本申请实施例中,可以根据每个栅格点的深度值,将栅格地图划分为多个象元。划分后得到的多个象元中,同一象元包含的各个栅格的栅格深度值相同。即,同一象元中包含的各个栅格对应的海底区域的水深相同。
S103、确定每个象元的编码数据,所述编码数据中包括所述象元中各个栅格的栅格深度值。
在本申请实施例中,对于划分得到的每个象元,可以按照预设的规则对其进行编码,得到每个象元的编码数据。
在本申请实施例中,一个编码数据可以与一个象元相对应,通过某个编码数据,可以唯一地确定一个象元。
通常,为了能够通过编码数据直接、准确地确定出一个象元,该编码数据中应当包含该象元的位置信息。上述位置信息可以是该象元在栅格地图中的位置,也可以是该象元对应的海底区域的实际位置。
因此,在本申请实施例的一种可能的实现方式中,编码数据可以包括当前象元在栅格地图中的初始位置和象元类型。其中,象元类型可以用于表征该象元所包含的栅格单元的形式。例如,象元类型可以表征该象元是1×1形式的象元,还是2×2形式的象元,或者其他形式的象元。
在本申请实施例中,编码数据中还可以包括当前象元中各个栅格的栅格深度值,用于表征该象元对应的海底区域的水深。
S104、对具有相同的栅格深度值的象元进行合并,得到多个数据块。
在本申请实施例中,对具有相同的栅格深度值的象元进行合并可以看作是对具有相同的水深的海底区域进行合并。在完成对象元的合并后,可以得到多个数据块,每个数据块可以是由栅格地图中的一个或多个象元所组成的。
S105、确定每个数据块的目标编码数据,以完成对所述多波束数据的压缩。
在完成对栅格地图中各个象元的合并后,具有相同的栅格深度值的象元被划分至同一数据块中。通过确定每个数据块的目标编码数据,可以将多个象元的编码数据转换为一个数据块的编码数据,从而减少了编码数据的数据量,实现了对多波束数据的压缩。
例如,在合并处理后的栅格地图中,某一数据块由三个象元合并得到。若使用编码数据分别表征上述三个象元,则需要使用三个编码数据。在将三个象元合并为一个数据块后,只需使用到一个目标编码数据即可表征该数据块中包含的三个象元,使得处理后的目标编码数据的个数可以远远小于象元的编码数据的个数,从而有效地减少了后续传输的数据量。
在本申请实施例中,为了使用一个目标编码数据来表征一个或多个象元,则该编码数据中应当包括该数据块在栅格地图中对应的位置信息,以及该数据块包含的各个象元的象元类型。此外,为了便于后续对海底地形图的绘制,该目标编码数据中还可以包含该数据块或包含的各个象元所对应的海底区域的水深。
在本申请实施例中,通过对原始的多波束数据进行栅格化处理,可以基于每个栅格对应的海底区域的水深值,将栅格化处理后得到的栅格地图划分为多个数据块,从而通过确定每个数据块的目标编码数据,可以采用一个目标编码数据表征一个数据块对应的海底区域,不仅压缩了多波束数据的数据量,还可以完整保留原始的多波束数据包含的海底特征点,实现了对多波束数据的无损压缩,可以在不影响成图精度的前提下,提高成图质量。
参照图3,示出了本申请实施例提供的另一种数据压缩方法的步骤流程示意图,具体可以包括如下步骤:
S301、采集多波束数据,根据所述多波束数据生成栅格地图;所述栅格地图中包括多个栅格点。
需要说明的是,本方法可以应用于对海底地形进行测量的过程中。通过在无人艇上搭载多波束测深系统,可以采用系统中的多波束测深仪采集海底区域的多波束数据。然后在按照本方法对多波束数据进行压缩处理后,可以实时地传输至岸端基站,用于绘制海底地形图。
在本申请实施例中,为了便于后续的数据压缩,对于采集得到的多波束数据,可以首先对其进行栅格化处理,得到相应的栅格地图。
S302、计算每个栅格点的深度值,并根据所述每个栅格点的深度值,将所述栅格地图划分为多个象元。
在本申请实施例中,栅格地图中的每个栅格点可以对应一个具体的海底位置点。在计算每个栅格点的深度值时,可以以该栅格点为圆心,搜索预设半径范围内的一个或多个测深点。
示例性地,预设半径可以由计算机根据当前原始的多波束数据的分辨率确定,一般可以为测量区域内原始测量数据最低分辨率的一半。栅格间的间隔大小可以通过交互式操作,根据实际需要确定,本申请实施例对此不作限定。
在本申请实施例中,每个测深点可以分别具有相应的高程值,该高程值可以看作是该测深点对应的水深值。
因此,可以通过计算预设半径范围内一个或多个测深点的高程值的加权平均值,将该加权平均值作为圆心对应的栅格点的深度值。
图4是本申请实施例提供的一种计算栅格点的深度值的示意图。在图4中,对于栅格地图中的某一栅格点P,其坐标可以表示为P(X,Y)。在计算P点的深度值时,可以以P点为圆心,以R为半径搜索P点周围的测深点。搜索得到的测深点的坐标及高程值可以表示为Xi,Yi,Zi,其中i=1,2,3,……n。
然后,可以利用高斯加权平均内插法求得P点的深度值为:
其中,Li表示第i个测深点到P点的水平距离:
上述式中a与半径R存在如下关系:
ε为很小的常数。
在计算得到栅格地图中每个栅格点的深度值户,可以根据每个栅格点的深度值,将栅格地图划分为多个象元。划分后得到的多个象元中,同一象元包含的各个栅格的栅格深度值相同。即,同一象元中包含的各个栅格对应的海底区域的水深相同。
S303、确定每个象元的初始位置以及所述每个象元的象元类型,所述初始位置为所述象元包含的初始栅格在所述栅格地图中的行序号及列序号。
在本申请实施例中,为了使用编码数据唯一地确定一个象元,可以首先确定该象元的初始位置,也就是该象元包含的初始栅格在栅格地图中的行序号及列序号。
由于不同象元可以是由不同的栅格单元组成的,因此,在对象元进行编码前,还可以确定每个象元的象元类型。例如,象元类型为2可以表示该象元是由2×2的四个小正方形组成的。每个正方形表示一个栅格单元,一个规则的正方形栅格还可以被划分成很多个更小的正方形,如2×2的田字格,3×3的九宫格等等。每个正方形的边长可以用于表示多波束数据的分辨率。
S304、根据所述初始位置的行序号及列序号、所述象元类型,和所述象元中各个栅格的栅格深度值,生成所述象元的编码数据。
在本申请实施例中,每个象元的编码数据可以由该象元的初始位置在栅格地图中的行序号及列序号、象元类型,以及该象元对应的海底区域的水深值组成。象元对应的海底区域的水深值即是该象元中各个栅格的栅格深度值。
如图5所示,是本申请实施例提供的一种包含多个象元的栅格地图的示意图。编码数据为(1,7,2,d2)对应的象元即是以图5中的栅格地图的第1行、第7列为初始位置,由2×2的四个小正方形组成的栅格区域,该象元对应的海底区域的水深为d2。
对于图5中各个象元,其相应的编码数据可以表示为:
(1,1,2,d1)(1,3,2,d1)(1,5,2,d1)(1,7,2,d2)(1,9,4,d3)(1,13,2,d4)(1,15,1,d5)(1,16,1,d6)(1,17,2,d7)(1,19,2,d7)
(2,15,1,d8)(2,16,1,d5)
(3,1,2,d1)(3,3,3,d9)(3,6,3,d9)(3,13,2,d4)(3,15,2,d4)(3,17,2,d4)(3,19,2,d7)
(5,1,2,d10)(5,9,1,d11)(5,10,1,d11)(5,11,1,d11)(5,9,12,d11)(5,13,4,d3)(5,17,4,d3)
(6,3,1,d12)(6,4,1,d12)(6,5,1,d12)(6,6,3,d9)(6,9,3,d9)(6,10,1,d14)(6,12,1,d13)
(7,1,2,d10)(7,3,2,d10)(7,5,1,d12)(7,12,1,d13)
(8,5,1,d12)(8,12,1,d13)
(9,1,2,d14)(9,3,1,d15)(9,4,1,d16)(9,5,1,d16)(9,6,6,d17)(9,12,1,d18)(9,13,1,d18)(9,14,1,d18)(9,15,2,d19)(9,16,4,d3)
(10,3,1,d15)(10,4,1,d15)(10,5,1,d16)(10,12,1,d18)(10,13,1,d20)(10,14,1,d21)
(11,1,2,d14)(11,3,2,d14)(11,5,1,d16)(11,12,1,d18)(11,13,2,d19)(11,15,1,d21)(11,16,1,d22)
(12,5,1,d23)(12,12,1,d24)(12,15,1,d25)(12,16,1,d21)
(13,1,2,d26)(13,3,2,d14)(13,5,1,d23)(13,12,1,d27)(13,13,1,d28)(13,14,1,d29)(13,15,2,d19)(13,17,2,d30)(13,19,2,d31)
(14,5,1,d23)(14,12,1,d28)(14,13,1,d29)(14,14,1,d28)
(15,1,5,d32)(15,6,2,d33)(15,8,2,d34)(15,10,2,d33)(15,12,1,d35)(15,13,1,d29)(15,14,1,d36)(15,15,1,d36)(15,16,1,d36)(15,17,2,d31)(15,19,2,d30)
(16,12,1,d29)(16,13,1,d37)(16,14,1,d38)(16,15,1,d36)(16,16,1,d38)
(17,6,2,d33)(17,8,2,d33)(17,10,2,d33)(17,12,1,d37)(17,13,1,d37)(17,14,1,d37)(17,15,1,d38)(17,16,1,d39)(17,17,2,d31)(17,19,2,d30)
(18,12,1,d40)(18,13,1,d37)(18,14,1,d38)(18,15,1,d39)(18,16,1,d38)
(19,6,2,d33)(19,8,1,d41)(19,9,1,d42)(19,10,2,d33)(19,12,1,d40)(19,13,1,d43)(19,14,1,d39)(19,15,1,d44)(19,16,1,d39)(19,17,2,d30)(19,19,2,d31)
(20,1,1,d45)(20,2,1,d45)(20,3,1,d45)(20,4,1,d45)(20,5,1,d46)(20,8,1,d42)(20,9,1,d41)(20,12,1,d40)(20,13,1,d40)(20,14,1,d44)(20,15,1,d44)(20,16,1,d44)
S305、提取所述栅格地图中具有相同的栅格深度值的至少一个象元。
在本申请实施例中,为了减少多波束数据的数据量,可以根据每个象元对应的海底区域的水深,对具有相同的水深即相同的栅格深度值,且相互间包含至少一个共同的栅格点的象元进行合并。
因此,可以以编码数据中的第四个元素值为依据,提取具有相同水深的象元。
S306、将所述具有相同的栅格深度值的至少一个象元置入空白栅格地图中与所述至少一个象元对应的位置处,得到多个数据块。
对于提取出的具有相同水深的一个或多个象元,可以将其置入空白栅格地图中与该一个或多个象元对应的位置处,得到多个数据块。
在本申请实施例的一种可能的实现方式中,可以分别建立多个空白栅格地图,多个空白栅格地图与当前的栅格地图具有同等比例大小。然后,以栅格深度值为判别依据,可以将具有相同的栅格深度值的至少一个象元置入一个空白栅格地图中,得到多个目标栅格地图,使得每个目标栅格地图中分别包括至少一个数据块。
如图6所示,是本申请实施例提供的一种包含多个数据块的栅格地图的示意图。图6中的各个数据块即是对图5中具有相同水深的象元进行合并所得到的。
在本申请实施例中,为了便于后续的图形匹配,在图6的栅格地图基础上,还可以对栅格地图中的各个数据块进行编号,得到如图7所示的数据块编号示意图。通过编号可以了解,图6中的栅格地图一共包含46种数据块。
S307、分别对所述多个数据块进行图形匹配,确定与各个数据块的形状相匹配的至少一个目标基础图形,所述目标基础图形具有相应的图形序号。
在本申请实施例中,可以预先设置多种不同形状的基础图形,构建出相应的图形库,从而用于后续的匹配。图形库中的每一种基础图形可以通过对栅格单元进行不同组合得到。
如图8所示,是本申请实施例提供的多种基础图形的示意图。图8中的44种基础图形可以构成一个图形库。可以将S306得到的多个数据块与图形库中的各个基础图形进行匹配。
在具体实现中,可以分别对各个数据块进行二值化处理,提取二值化处理后的各个数据块的连通区域的轮廓线,上述连通区域可以是二值化处理后的图像中相连像素组成的形状,即每个水深值相同的象元组成的形状。
然后,可以采用该轮廓线与预设图形库中的各个基础图形的轮廓线进行匹配,确定与各个数据块的形状相匹配的至少一个目标基础图形。
例如,对于图7中编号为1的数据块,将其在图8所示的图形库中进行匹配后,可知该数据块与编号为18的基础图形相同。
S308、根据所述数据块的初始位置的行序号及列序号、所述数据块包含的象元的象元类型、与所述数据块相匹配的至少一个目标基础图形的图形序号,以及,所述数据块包含的象元中各个栅格的栅格深度值,生成所述数据块的目标编码数据,以完成对所述多波束数据的压缩。
在本申请实施例中,各个数据块对应的目标编码数据可以由该数据块的初始位置的行序号及列序号、该数据块包含的象元的象元类型、与该数据块相匹配的至少一个目标基础图形的图形序号,以及,该数据块包含的象元中各个栅格的栅格深度值组成。
下面,结合图7和图8,分别对各个数据块的匹配及编码过程进行介绍。
1、对于图7中编号为1的数据块,通过在图8所示的图形库中寻找匹配的基础图形,可以匹配出该1号数据块与18号基础图形相匹配。因此,18号基础图形也就是1号数据块对应的目标基础图形。1号数据块对应的目标编码数据可以表示为(1,1,2,18,d1),其中,目标编码数据中的(1,1)表示1号数据块在栅格地图中的初始位置,即第1行、第1列,2表示该数据块由多个2×2的栅格组成,18表示1号数据块与图形库中编号为18的基础图形匹配,d1为该数据块对应的海底区域的水深。
2、对于图7中编号为2的数据块,通过在图8所示的图形库中寻找匹配的基础图形,可以匹配出该2号数据块与1号基础图形相匹配,其对应的目标编码数据可以表示为(1,7,2,1,d2)。
3、对于图7中编号为11的数据块,通过在图8所示的图形库中寻找匹配的基础图形,可以匹配出该11号数据块与12号基础图形、1号基础图形相匹配,其对应的目标编码数据可以表示为(1,9,4,12,d3),(5,17,4,1,d3)。
4、对于图7中编号为3的数据块,通过在图8所示的图形库中寻找匹配的基础图形,可以匹配出该3号数据块与16号基础图形相匹配,其对应的目标编码数据可以表示为(1,13,2,16,d4)。
5、对于图7中编号为4的数据块,通过在图8所示的图形库中寻找匹配的基础图形,可以匹配出该4号数据块与2号基础图形相匹配,其对应的目标编码数据可以表示为(1,15,1,2,d5)。
6、对于图7中编号为6的数据块,通过在图8所示的图形库中寻找匹配的基础图形,可以匹配出该6号数据块与1号基础图形相匹配,其对应的目标编码数据可以表示为(1,16,1,1,d6)。
7、对于图7中编号为7的数据块,通过在图8所示的图形库中寻找匹配的基础图形,可以匹配出该7号数据块与6号基础图形相匹配,其对应的目标编码数据可以表示为(1,17,2,6,d7)。
8、对于图7中编号为5的数据块,通过在图8所示的图形库中寻找匹配的基础图形,可以匹配出该5号数据块与1号基础图形相匹配,其对应的目标编码数据可以表示为(2,15,1,1,d8)。
9、对于图7中编号为45的数据块,通过在图8所示的图形库中寻找匹配的基础图形,可以匹配出该45号数据块与24号基础图形相匹配,其对应的目标编码数据可以表示为(3,3,3,24,d9)。
10、对于图7中编号为46的数据块,通过在图8所示的图形库中寻找匹配的基础图形,可以匹配出该46号数据块与4号基础图形相匹配,其对应的目标编码数据可以表示为(5,1,2,4,d10)。
11、对于图7中编号为44的数据块,通过在图8所示的图形库中寻找匹配的基础图形,可以匹配出该44号数据块与43号基础图形相匹配,其对应的目标编码数据可以表示为(5,9,1,43,d11)。
12、对于图7中编号为43的数据块,通过在图8所示的图形库中寻找匹配的基础图形,可以匹配出该43号数据块与19号、1号基础图形相匹配,其对应的目标编码数据可以表示为(6,3,1,19,d12),(8,5,1,1,d12)。
13、对于图7中编号为8的数据块,通过在图8所示的图形库中寻找匹配的基础图形,可以匹配出该8号数据块与14号基础图形相匹配,其对应的目标编码数据可以表示为(6,12,1,14,d13)。
14、对于图7中编号为41的数据块,通过在图8所示的图形库中寻找匹配的基础图形,可以匹配出该41号数据块与26号基础图形相匹配,其对应的目标编码数据可以表示为(9,1,2,26,d14)。
15、对于图7中编号为42的数据块,通过在图8所示的图形库中寻找匹配的基础图形,可以匹配出该42号数据块与4号基础图形相匹配,其对应的目标编码数据可以表示为(9,3,1,4,d15)。
16、对于图7中编号为39的数据块,通过在图8所示的图形库中寻找匹配的基础图形,可以匹配出该39号数据块与6号、1号基础图形相匹配,其对应的目标编码数据可以表示为(9,4,1,6,d16),(11,5,1,1,d16)。
17、对于图7中编号为40的数据块,通过在图8所示的图形库中寻找匹配的基础图形,可以匹配出该40号数据块与1号基础图形相匹配,其对应的目标编码数据可以表示为(9,6,6,1,d17)。
18、对于图7中编号为9的数据块,通过在图8所示的图形库中寻找匹配的基础图形,可以匹配出该9号数据块与18号、1号基础图形相匹配,其对应的目标编码数据可以表示为(9,12,1,18,d18),(11,12,1,1,d18)。
19、对于图7中编号为16的数据块,通过在图8所示的图形库中寻找匹配的基础图形,可以匹配出该16号数据块与10号基础图形相匹配,其对应的目标编码数据可以表示为(9,15,2,10,d19)。
20、对于图7中编号为12的数据块,通过在图8所示的图形库中寻找匹配的基础图形,可以匹配出该12号数据块与1号基础图形相匹配,其对应的目标编码数据可以表示为(10,13,1,1,d20)。
21、对于图7中编号为14的数据块,通过在图8所示的图形库中寻找匹配的基础图形,可以匹配出该14号数据块与12号基础图形相匹配,其对应的目标编码数据可以表示为(10,14,1,12,d21)。
22、对于图7中编号为15的数据块,通过在图8所示的图形库中寻找匹配的基础图形,可以匹配出该15号数据块与1号基础图形相匹配,其对应的目标编码数据可以表示为(11,16,1,1,d22)。
23、对于图7中编号为38的数据块,通过在图8所示的图形库中寻找匹配的基础图形,可以匹配出该38号数据块与14号基础图形相匹配,其对应的目标编码数据可以表示为(12,5,1,14,d23)。
24、对于图7中编号为10的数据块,通过在图8所示的图形库中寻找匹配的基础图形,可以匹配出该10号数据块与1号基础图形相匹配,其对应的目标编码数据可以表示为(12,12,1,1,d24)。
25、对于图7中编号为18的数据块,通过在图8所示的图形库中寻找匹配的基础图形,可以匹配出该18号数据块与1号基础图形相匹配,其对应的目标编码数据可以表示为(12,15,1,1,d25)。
26、对于图7中编号为37的数据块,通过在图8所示的图形库中寻找匹配的基础图形,可以匹配出该37号数据块与1号基础图形相匹配,其对应的目标编码数据可以表示为(13,1,2,1,d26)。
27、对于图7中编号为13的数据块,通过在图8所示的图形库中寻找匹配的基础图形,可以匹配出该13号数据块与1号基础图形相匹配,其对应的目标编码数据可以表示为(13,12,1,1,d27)。
28、对于图7中编号为17的数据块,通过在图8所示的图形库中寻找匹配的基础图形,可以匹配出该17号数据块与9号基础图形相匹配,其对应的目标编码数据可以表示为(13,13,1,9,d28)。
29、对于图7中编号为19的数据块,通过在图8所示的图形库中寻找匹配的基础图形,可以匹配出该19号数据块与34号基础图形相匹配,其对应的目标编码数据可以表示为(13,14,1,34,d29)。
30、对于图7中编号为20的数据块,通过在图8所示的图形库中寻找匹配的基础图形,可以匹配出该20号数据块与31号基础图形相匹配,其对应的目标编码数据可以表示为(13,17,2,31,d30)。
31、对于图7中编号为24的数据块,通过在图8所示的图形库中寻找匹配的基础图形,可以匹配出该24号数据块与30号基础图形相匹配,其对应的目标编码数据可以表示为(13,19,2,30,d31)。
32、对于图7中编号为36的数据块,通过在图8所示的图形库中寻找匹配的基础图形,可以匹配出该36号数据块与1号基础图形相匹配,其对应的目标编码数据可以表示为(15,1,5,1,d32)。
33、对于图7中编号为32的数据块,通过在图8所示的图形库中寻找匹配的基础图形,可以匹配出该32号数据块与40号基础图形相匹配,其对应的目标编码数据可以表示为(15,6,2,40,d33)。
34、对于图7中编号为33的数据块,通过在图8所示的图形库中寻找匹配的基础图形,可以匹配出该33号数据块与1号基础图形相匹配,其对应的目标编码数据可以表示为(15,8,2,1,d34)。
35、对于图7中编号为21的数据块,通过在图8所示的图形库中寻找匹配的基础图形,可以匹配出该21号数据块与1号基础图形相匹配,其对应的目标编码数据可以表示为(15,12,1,1,d35)。
36、对于图7中编号为23的数据块,通过在图8所示的图形库中寻找匹配的基础图形,可以匹配出该23号数据块与21号基础图形相匹配,其对应的目标编码数据可以表示为(15,14,1,21,d36)。
37、对于图7中编号为26的数据块,通过在图8所示的图形库中寻找匹配的基础图形,可以匹配出该26号数据块与41号基础图形相匹配,其对应的目标编码数据可以表示为(16,13,1,41,d37)。
38、对于图7中编号为22的数据块,通过在图8所示的图形库中寻找匹配的基础图形,可以匹配出该22号数据块与42号基础图形相匹配,其对应的目标编码数据可以表示为(16,14,1,42,d38)。
39、对于图7中编号为25的数据块,通过在图8所示的图形库中寻找匹配的基础图形,可以匹配出该25号数据块与39号基础图形相匹配,其对应的目标编码数据可以表示为(17,16,1,39,d39)。
40、对于图7中编号为28的数据块,通过在图8所示的图形库中寻找匹配的基础图形,可以匹配出该28号数据块与14号、1号基础图形相匹配,其对应的目标编码数据可以表示为(18,12,1,14,d40),(18,12,1,1,d40)。
41、对于图7中编号为29的数据块,通过在图8所示的图形库中寻找匹配的基础图形,可以匹配出该29号数据块与2号基础图形相匹配,其对应的目标编码数据可以表示为(19,8,1,2,d41)。
42、对于图7中编号为31的数据块,通过在图8所示的图形库中寻找匹配的基础图形,可以匹配出该31号数据块与3号基础图形相匹配,其对应的目标编码数据可以表示为(19,9,1,3,d42)。
43、对于图7中编号为30的数据块,通过在图8所示的图形库中寻找匹配的基础图形,可以匹配出该30号数据块与1号基础图形相匹配,其对应的目标编码数据可以表示为(19,13,1,1,d43)。
44、对于图7中编号为27的数据块,通过在图8所示的图形库中寻找匹配的基础图形,可以匹配出该27号数据块与20号基础图形相匹配,其对应的目标编码数据可以表示为(19,15,1,20,d44)。
45、对于图7中编号为35的数据块,通过在图8所示的图形库中寻找匹配的基础图形,可以匹配出该35号数据块与43号基础图形相匹配,其对应的目标编码数据可以表示为(20,1,1,43,d45)。
46、对于图7中编号为34的数据块,通过在图8所示的图形库中寻找匹配的基础图形,可以匹配出该34号数据块与1号基础图形相匹配,其对应的目标编码数据可以表示为(20,5,1,1,d46)。
因此,压缩后的数据可以表示为:
(1,1,2,18,d1)(1,7,2,1,d2)(1,9,4,12,d3)(5,17,4,1,d3)(1,13,2,16,d4)(1,15,1,2,d5)(1,16,1,1,d6)(1,17,2,6,d7)(2,15,1,1,d8)(3,3,3,24,d9)(5,1,2,4,d10)(5,9,1,43,d11)(6,3,1,19,d12)(8,5,1,1,d12)(6,12,1,14,d13)(9,1,2,26,d14)(9,3,1,4,d15)(9,4,1,6,d16)(11,5,1,1,d16)(9,6,6,1,d17)(9,12,1,18,d18)(11,12,1,1,d18)(9,15,2,10,d19)(10,13,1,1,d20)(10,14,1,12,d21)(11,16,1,1,d22)(12,5,1,14,d23)(12,12,1,1,d24)(12,15,1,1,d25)(13,1,2,1,d26)(13,12,1,1,d27)(13,13,1,9,d28)(13,14,1,34,d29)(13,17,2,31,d30)(13,19,2,30,d31)(15,1,5,1,d32)(15,6,2,40,d33)(15,8,2,1,d34)(15,12,1,1,d35)(15,14,1,21,d36)(16,13,1,41,d37)(16,14,1,42,d38)(17,16,1,39,d39)(18,12,1,14,d40)(18,12,1,1,d40)(19,8,1,2,d41)(19,9,1,3,d42)(19,13,1,1,d43)(19,15,1,20,d44)(20,1,1,43,d45)(20,5,1,1,d46)
上述数据的压缩率为52.1%,可以有效地减少数据量。
需要说明的是,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
参照图9,示出了本申请实施例提供的一种数据压缩装置的示意图,具体可以包括如下模块:
栅格地图生成模块901,用于采集多波束数据,根据所述多波束数据生成栅格地图;所述栅格地图中包括多个栅格点;
象元划分模块902,用于计算每个栅格点的深度值,并根据所述每个栅格点的深度值,将所述栅格地图划分为多个象元;其中,同一象元包含的各个栅格的栅格深度值相同;
编码数据确定模块903,用于确定每个象元的编码数据,所述编码数据中包括所述象元中各个栅格的栅格深度值;
象元合并模块904,用于对具有相同的栅格深度值的象元进行合并,得到多个数据块;
数据压缩模块905,用于确定每个数据块的目标编码数据,以完成对所述多波束数据的压缩。
在本申请实施例中,所述象元划分模块902具体可以包括如下子模块:
测深点搜索子模块,用于以所述栅格点为圆心,搜索预设半径范围内的一个或多个测深点;所述一个或多个测深点分别具有相应的高程值;
深度值计算子模块,用于计算所述一个或多个测深点的高程值的加权平均值,将所述加权平均值作为所述栅格点的深度值。
在本申请实施例中,所述编码数据确定模块903具体可以包括如下子模块:
初始位置及象元类型确定子模块,用于确定每个象元的初始位置以及所述每个象元的象元类型,所述初始位置为所述象元包含的初始栅格在所述栅格地图中的行序号及列序号;
编码数据生成子模块,用于根据所述初始位置的行序号及列序号、所述象元类型,和所述象元中各个栅格的栅格深度值,生成所述象元的编码数据。
在本申请实施例中,所述象元合并模块904具体可以包括如下子模块:
象元提取子模块,用于提取所述栅格地图中具有相同的栅格深度值的至少一个象元;
数据块生成子模块,用于将所述具有相同的栅格深度值的至少一个象元置入空白栅格地图中与所述至少一个象元对应的位置处,得到多个数据块。
在本申请实施例中,所述数据块生成子模块具体可以包括如下单元:
数据块生成单元,用于分别建立多个空白栅格地图,并将所述具有相同的栅格深度值的至少一个象元置入一个空白栅格地图中,得到多个目标栅格地图;其中,每个目标栅格地图中分别包括至少一个数据块。
在本申请实施例中,所述数据压缩模块905具体可以包括如下子模块:
图形匹配子模块,用于分别对所述多个数据块进行图形匹配,确定与各个数据块的形状相匹配的至少一个目标基础图形,所述目标基础图形具有相应的图形序号;
目标编码数据生成子模块,用于根据所述数据块的初始位置的行序号及列序号、所述数据块包含的象元的象元类型、与所述数据块相匹配的至少一个目标基础图形的图形序号,以及,所述数据块包含的象元中各个栅格的栅格深度值,生成所述数据块的目标编码数据,以完成对所述多波束数据的压缩。
在本申请实施例中,所述图形匹配子模块具体可以包括如下单元:
轮廓线提取单元,用于分别对各个数据块进行二值化处理,提取二值化处理后的各个数据块的连通区域的轮廓线;
轮廓线匹配单元,用于采用所述轮廓线与预设图形库中的各个基础图形的轮廓线进行匹配,确定与所述各个数据块的形状相匹配的至少一个目标基础图形。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述得比较简单,相关之处参见方法实施例部分的说明即可。
参照图10,示出了本申请实施例提供的一种终端设备的示意图。如图10所示,本实施例的终端设备1000包括:处理器1010、存储器1020以及存储在所述存储器1020中并可在所述处理器1010上运行的计算机程序1021。所述处理器1010执行所述计算机程序1021时实现上述数据压缩方法各个实施例中的步骤,例如图1所示的步骤S101至S105。或者,所述处理器1010执行所述计算机程序1021时实现上述各装置实施例中各模块/单元的功能,例如图9所示模块901至905的功能。
示例性的,所述计算机程序1021可以被分割成一个或多个模块/单元,所述一个或者多个模块/单元被存储在所述存储器1020中,并由所述处理器1010执行,以完成本申请。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段可以用于描述所述计算机程序1021在所述终端设备1000中的执行过程。例如,所述计算机程序1021可以被分割成栅格地图生成模块、象元划分模块、编码数据确定模块、象元合并模块和数据压缩模块,各模块具体功能如下:
栅格地图生成模块,用于采集多波束数据,根据所述多波束数据生成栅格地图;所述栅格地图中包括多个栅格点;
象元划分模块,用于计算每个栅格点的深度值,并根据所述每个栅格点的深度值,将所述栅格地图划分为多个象元;其中,同一象元包含的各个栅格的栅格深度值相同;
编码数据确定模块,用于确定每个象元的编码数据,所述编码数据中包括所述象元中各个栅格的栅格深度值;
象元合并模块,用于对具有相同的栅格深度值的象元进行合并,得到多个数据块;
数据压缩模块,用于确定每个数据块的目标编码数据,以完成对所述多波束数据的压缩。
所述终端设备1000可以是配置于多波束测深系统中,并能够对多波束测深仪采集的多波束数据进行处理的计算设备。所述终端设备1000可包括,但不仅限于,处理器1010、存储器1020。本领域技术人员可以理解,图10仅仅是终端设备1000的一种示例,并不构成对终端设备1000的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述终端设备1000还可以包括输入输出设备、网络接入设备、总线等。
所述处理器1010可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
所述存储器1020可以是所述终端设备1000的内部存储单元,例如终端设备1000的硬盘或内存。所述存储器1020也可以是所述终端设备1000的外部存储设备,例如所述终端设备1000上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(SecureDigital,SD)卡,闪存卡(Flash Card)等等。进一步地,所述存储器1020还可以既包括所述终端设备1000的内部存储单元也包括外部存储设备。所述存储器1020用于存储所述计算机程序1021以及所述终端设备1000所需的其他程序和数据。所述存储器1020还可以用于暂时地存储已经输出或者将要输出的数据。
以上所述实施例仅用以说明本申请的技术方案,而非对其限制。尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围,均应包含在本申请的保护范围之内。