一种有向距离场计算方法及计算机可读存储介质
文献发布时间:2024-04-18 19:52:40
技术领域
本发明涉及图像处理领域,具体涉及一种有向距离场计算方法及计算机可读存储介质。
背景技术
有向距离场(Signed Distance Field, SDF),即一种标识了到指定位置的距离参数的数据集合,同时还可以通过正负号来标识方向。SDF一开始是用于代替传统的alpha-test(透明测试)来渲染文字,可以使用较小的文本纹理且放大不会严重失真,能够和传统的alpha-test的方法无缝整合,在文本渲染上有很大的优势,不过需要通过一张较大的文本图片预计算出较小的一张有向距离场纹理。有限距离场通常采用递归算法进行计算,时间复杂度为O(nlogn),无法达到线性时间O(n),计算速度较慢。
发明内容
为解决上述问题,本发明提供了一种有向距离场计算方法及计算机可读存储介质,大大提高了有向距离场的计算速度。本发明的具体技术方案如下:
一种有向距离场计算方法,所述方法包括如下步骤:步骤S1,对待处理图像中的像素值进行初始化;步骤S2,按照第一遍历方向对经过初始化的待处理图像中的像素进行第一次遍历,遍历过程中将当前像素值更新为满足第一条件的值,第一次遍历结束后进入步骤S3;步骤S3,按照第二遍历方向对经过第一次遍历的待处理图像中的像素进行第二次遍历,遍历过程中将当前像素值更新为满足第二条件的值,第二次遍历结束后得到待处理图像对应的有向距离场。
进一步地,所述步骤S1中,对待处理图像中的像素值进行初始化的方法具体包括:将待处理图像中的值为预设值的像素值初始化为0,然后将其他的像素值初始化为无穷大。
进一步地,所述步骤S2中的第一遍历方向具体指的是:从待处理图像第一行第一个像素开始,从左到右进行遍历,当遍历完第一行最后一个像素后,从第二行第一个像素继续从左到右进行遍历,以此类推,直至遍历完全部像素。
进一步地,所述步骤S2中满足第一条件的值具体指的是:在遍历过程中,取当前像素左方和上方的像素值并分别加1,然后与当前像素值比较大小,其中,三者之中的最小值为满足第一条件的值。
进一步地,所述步骤S3中的第二遍历方向具体指的是:从待处理图像最后一行最后一个像素开始,从右到左进行遍历,当遍历完最后一行第一个像素后,从倒数第二行最后一个像素继续从右到左进行遍历,以此类推,直至遍历完全部像素。
进一步地,所述步骤S3中满足第二条件的值具体指的是:在遍历过程中,取当前像素右方和下方的像素值并分别加1,然后与当前像素值比较大小,其中,三者之中的最小值为满足第二条件的值。
进一步地,所述第二遍历方向的遍历起点是所述第一遍历方向的遍历终点。
一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被执行时实现所述有向距离场计算方法。
本发明的有益效果为:本发明采用双遍历检测(Two Pass Detect)算法,只需遍历两次图像即可得到传统算法计算有向距离场的近似结果,双遍历检测算法的计算时间复杂度为O(n),即达到了线性速度,大大提高了有向距离场的计算速度。
附图说明
图1为本发明一种实施例所述有向距离场计算方法的流程图。
图2为本发明一种实施例所述有向距离场计算过程示意图。
图3为本发明一种实施例所述有向距离场的计算结果示例图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行详细描述。应当理解,下面所描述的具体实施例仅用于解释本发明,并不用于限定本发明。
有向距离场(Signed Distance Field, SDF),即一种标识了到指定位置的距离参数的数据集合,同时还可以通过正负号来标识方向。SDF一开始是用于代替传统的alpha-test(透明测试)来渲染文字,可以使用较小的文本纹理且放大不会严重失真,能够和传统的alpha-test的方法无缝整合,在文本渲染上有很大的优势,不过需要通过一张较大的文本图片预计算出较小的一张有向距离场纹理。有限距离场通常采用递归算法进行计算,时间复杂度为O(nlogn),无法达到线性时间O(n),计算速度较慢。
因此,如图1所示,本发明提供一种有向距离场计算方法,所述方法包括如下步骤:
步骤S1,对待处理图像中的像素值进行初始化。参照图2,左边的图Init显示了初始化后的待处理图像。在本实施例中,对待处理图像中的像素值进行初始化的方法具体包括:将待处理图像中的值为预设值的像素值初始化为0,然后将其他的像素值初始化为无穷大。初始化过程为后续取最小值作准备。需要说明的是,图Init中标0的位置表示零边界,相当于上文提到的“指定位置”。
步骤S2,按照第一遍历方向对经过初始化的待处理图像中的像素进行第一次遍历,遍历过程中将当前像素值更新为满足第一条件的值,第一次遍历结束后进入步骤S3。在本实施例中,第一遍历方向具体指的是:从待处理图像第一行第一个像素开始,从左到右进行遍历,当遍历完第一行最后一个像素后,从第二行第一个像素继续从左到右进行遍历,以此类推,直至遍历完全部像素,即按照从左到右、从上到下的规则遍历待处理图像的全部像素。在遍历过程中,需要对遍历到的像素(称为当前像素)进行更新,具体为,取当前像素左方和上方的像素值并分别加1,然后与当前像素值比较大小,取三者之中的最小值赋值给当前像素。参照图2,中间的图Relaxation Step 1显示了第一次遍历待处理图像的过程,其中,黑色像素点为visited position,即当前像素,灰色像素点为neighbor,即相邻像素(在本实施例中,取当前像素左方和上方的像素)。假设,当前像素值为无穷大,左方像素值为0,上方像素值为无穷大,那么左方和上方的像素值加1后分别变为1和无穷大,三者之中的最小值为1,于是当前像素值更新为1。上文提及,0的位置为指定位置,因此1的含义为当前像素距离边界的距离为1。需要注意的是,因为第一遍历方向是从待处理图像的左上角到右下角,所以取当前像素左方和上方的像素值可以避免取到未遍历的像素,也就是还没更新过的像素,这样的值没有计算意义。
可选地,第一遍历方向可以是从待处理图像第一行最后一个像素开始,从右到左进行遍历,当遍历完第一行第一个像素后,从第二行最后一个像素继续从右到左进行遍历,以此类推,直至遍历完全部像素,即按照从右到左、从上到下的规则遍历待处理图像的全部像素。此外,第一遍历方向的遍历起点也可以是待处理图像其他顶点所在的像素,按上述类似的规则向对角方向进行遍历,不再赘述。需要说明的是,当第一遍历方向是从待处理图像的右上角到左下角时,取值进行比较时,需要取当前像素右方和上方的像素,同样是为了避免取到未遍历的像素。当第一遍历方向发生变化时,取值需做适应性改变,不再赘述。
步骤S3,按照第二遍历方向对经过第一次遍历的待处理图像中的像素进行第二次遍历,遍历过程中将当前像素值更新为满足第二条件的值,第二次遍历结束后得到待处理图像对应的有向距离场。在本实施例中,第二遍历方向具体指的是:从待处理图像最后一行最后一个像素开始,从右到左进行遍历,当遍历完最后一行第一个像素后,从倒数第二行最后一个像素继续从右到左进行遍历,以此类推,直至遍历完全部像素,即按照从右到左、从下到上的规则遍历待处理图像的全部像素。在遍历过程中,需要再次对遍历到的像素进行更新,具体为,取当前像素右方和下方的像素值并分别加1,然后与当前像素值比较大小,取三者之中的最小值赋值给当前像素。参照图2,右边的图Relaxation Step 2显示了第二次遍历待处理图像的过程,其中,黑色像素点为visited position,即当前像素,灰色像素点为neighbor,即相邻像素(在本实施例中,取当前像素右方和下方的像素)。假设,当前像素值为0,右方像素值为无穷大,下方像素值为1,那么右方和下方的像素值加1后分别变为无穷大和2,三者之中的最小值为0,于是当前像素值仍为0(因为当前像素本身就是指定位置)。
需要说明的是,所述第二遍历方向的遍历起点是所述第一遍历方向的遍历终点。例如,在待处理图像左下角的像素结束第一次遍历时(从右上角开始),第二次遍历就从左下角的像素开始(然后在右上角的像素结束第二次遍历)。这是由于从右上角开始第一次遍历,更新的只是当前像素右方和上方的像素离0的距离,因此第二次遍历需要更新左方和下方的像素离0的距离,将第二遍历方向的遍历起点设置为第一遍历方向的遍历终点可满足此需求。
如图3所示,该实施例为有向距离场的计算结果示例图。图3左上为待处理图像,右上为待处理图像对应的有向距离场,下方为有向距离场对应的数值形式。需要注意的是,右上的有向距离场为矢量渲染图,放大后可以不失真地还原待处理图像,该有向距离场采用双遍历检测算法计算,只需遍历两次待处理图像即可得到传统算法计算有向距离场的近似结果,双遍历检测算法的计算时间复杂度为O(n),即达到了线性速度,大大提高了有向距离场的计算速度。
本发明还提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被执行时实现所述有向距离场计算方法。该程序存储在一个存储介质中,包括若干指令用以使得单片机、芯片或处理器(processor)执行本发明各个实施方式所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。该程序运行时,只需遍历两次图像即可得到传统算法计算有向距离场的近似结果,计算时间复杂度为O(n),即达到了线性速度,大大提高了有向距离场的计算速度。
显然,上述的实施例仅仅是本发明一部分实施例,而不是全部的实施例,各个实施例之间的技术方案可以相互结合。此外,如果实施例中出现“中心”、“上”、“下”、“左”、“右”、“竖直”、“水平”、“内”、“外”等术语,其指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位或以特定的方位构造和操作,因此不能理解为对本发明的限制。如果实施例中出现“第一”、“第二”、“第三”等术语,是为了便于相关特征的区分,不能理解为指示或暗示其相对重要性、次序的先后或者技术特征的数量。
尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同限定以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
- 一种存储管理方法、计算机可读存储介质及终端设备
- 一种元数据存储方法及计算机可读存储介质
- 一种元数据存储方法、装置、设备及计算机可读存储介质
- 一种数据存储方法、计算机可读存储介质及服务器
- 一种存储集群告警方法、装置和计算机可读存储介质
- 行人距离计算方法、系统、计算机及可读存储介质
- 一种人脸图像相似度计算方法、装置、计算机装置及计算机可读存储介质