一种区域填充方法、装置、电子设备及存储介质
技术领域
本发明涉及图像处理技术领域,尤其涉及一种区域填充方法、装置、电子设备及存储介质。
背景技术
填图游戏中,通常使用单点判定方式来判定用户的点击区域。当点击区域的放大倍数有限,而点击区域又非常小时,该方法经常导致判定失败。因此,现有技术中存在无法准确识别用户的点击区域的问题。
发明内容
有鉴于此,本发明实施例提供一种区域填充方法、装置、电子设备及存储介质,能够提高点击区域的识别率。
第一方面,本发明实施例提供一种区域填充方法,包括:
获取用户输入的原始坐标,并将所述原始坐标转换为贴图坐标,其中,所述贴图坐标为将所述原始坐标转换到贴图空间后的坐标;
利用预设的模型,将所述贴图坐标转换为模型坐标;
对所述模型坐标点进行合法性判断;
若所述模型坐标对应的模型坐标点通过合法性判断,则将所述模型坐标点作为注水点,以利用所述注水点填充待填充区域。
结合第一方面,在第一方面的第一种实施方式中,所述将所述原始坐标转换为贴图坐标,包括:
将所述原始坐标转换为世界坐标;
将所述世界坐标转换为贴图空间内的坐标;
对所述贴图空间内的坐标进行像素率转换,获得所述贴图坐标。
结合第一方面,在第一方面的第二种实施方式中,所述利用预设的模型,将所述贴图坐标转换为模型坐标,包括:
以所述贴图坐标对应的贴图坐标点为中心点,在所述中心点的第一方向、第二方向、第三方向、第四方向上,分别利用预设的步长采集多个采样点;
将所述采样点的坐标输入到所述预设的模型中,获得模型坐标点。
结合第一方面的第二种实施方式,在第一方面的第三种实施方式中,所述预设的模型包括手指模型或章模型。
结合第一方面,在第一方面的第四种实施方式中,所述对所述模型坐标对应的模型坐标点进行合法性判断,包括:
判断所述模型坐标点的alpha(阿尔法)值是否在预设范围内,以及判断所述模型坐标点是否为边界点;
所述若所述模型坐标点通过合法性判断,则将所述模型坐标点作为注水点,并利用所述注水点填充待填充区域,包括:
若所述模型坐标点的alpha值在所述预设范围内且所述模型坐标点不是边界点,则将所述模型坐标点作为注水点,并利用所述注水点填充待填充区域。
第二方面,本发明实施例提供一种区域填充装置,包括:
获取模块,用于获取用户输入的原始坐标,并将所述原始坐标转换为贴图坐标,其中,所述贴图坐标为将所述原始坐标转换到贴图空间后的坐标;
转换模块,用于利用预设的模型,将所述贴图坐标转换为模型坐标;
判断模块,用于对所述模型坐标对应的模型坐标点进行合法性判断;
填充模块,用于若所述模型坐标点通过合法性判断,则将所述模型坐标点作为注水点,以利用所述注水点填充待填充区域。
结合第二方面,在第二方面的第一种实施方式中,所述获取模块包括:
第一转换子模块,用于将所述原始坐标转换为世界坐标;
第二转换子模块,用于将所述世界坐标转换为贴图空间内的坐标;
获取子模块,用于对所述贴图空间内的坐标进行像素率转换,获得所述贴图坐标。
结合第二方面,在第二方面的第二种实施方式中,所述转换模块包括:
采集子模块,用于以所述贴图坐标对应的贴图坐标点为中心点,在所述中心点的第一方向、第二方向、第三方向、第四方向上,分别利用预设的步长采集多个采样点;
转换子模块,用于将所述采样点的坐标输入到所述预设的模型中,获得模型坐标点。
结合第二方面的第二种实施方式,在第二方面的第三种实施方式中,所述预设的模型包括手指模型或章模型。
结合第二方面,在第二方面的第四种实施方式中,所述判断模块具体用于,判断所述模型坐标点的alpha值是否在预设范围内,以及判断所述模型坐标点是否为边界点;
所述填充模块具体用于,若所述模型坐标点的alpha值在所述预设范围内且所述模型坐标点不是边界点,则将所述模型坐标点作为注水点,并利用所述注水点填充待填充区域。
第三方面,本发明实施例提供一种电子设备,所述电子设备包括:壳体、处理器、存储器、电路板和电源电路,其中,电路板安置在壳体围成的空间内部,处理器和存储器设置在电路板上;电源电路,用于为上述电子设备的各个电路或器件供电;存储器用于存储可执行程序代码;处理器通过读取存储器中存储的可执行程序代码来运行与可执行程序代码对应的程序,用于执行前述任一所述的区域填充方法。
第五方面,本发明的实施例还提供一种应用程序,所述应用程序被执行以实现本发明任一实施例提供的区域填充方法。
在本发明实施例中,将用户的原始坐标转换为贴图坐标,并通过预设的模型将贴图坐标转换为模型点坐标。然后,通过对模型点坐标的合法性判断,确定合法的模型点作为注水点进行填充。通过上述方式,可以模型所在的区域为基本的填充单位而进行填充,从而使得各点的识别率提高,进而提高了点击区域的识别率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1为本发明的实施例区域填充方法的流程图;
图2为本发明的实施例的区域填充装置的示意图;
图3为本发明的实施例电子设备的示意图。
具体实施方式
下面结合附图对本发明实施例进行详细描述。
应当明确,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
图1为本发明的实施例区域填充方法的流程图,如图1所示,本实施例的应用场景是色彩填充场景,例如填色游戏等。本实施例的方法可以包括:
步骤101、获取用户输入的原始坐标,并将所述原始坐标转换为贴图坐标。
本实施例中,用户的原始坐标指的是通过触摸、点击等方式输入的坐标。例如,当用户点击触摸屏时,在触摸屏上形成的触摸点的坐标即使在此的原始坐标。所述贴图坐标为将所述原始坐标转换到贴图空间后的坐标。
具体的,在此步骤中,将所述原始坐标转换为世界坐标,然后,将所述世界坐标转换为贴图空间内的坐标,并对所述贴图空间内的坐标进行像素率转换,获得所述贴图坐标。
具体的,将用户输入的坐标从屏幕空间坐标转换为贴图坐标,使用函数Camera.ScreenToWorldPoint()将屏幕坐标转换为世界坐标。再使用函数Transform.InverseTransfromPoint()将世界坐标转换为贴图空间内的坐标。最后,将坐标值乘上单位到像素转换率(100),得到贴图坐标,并使用MathfRoundToInt()取整数。
步骤102、利用预设的模型,将所述贴图坐标转换为模型坐标。
所述预设的模型包括手指模型或章模型。也即,模型呈手指的图案的形状,或者章的图案的形状。
具体的,以所述贴图坐标对应的贴图坐标点为中心点,在所述中心点的第一方向、第二方向、第三方向、第四方向上,分别利用预设的步长采集多个采样点。然后,将所述采样点的坐标输入到所述预设的模型中,获得模型坐标。
例如,可在中心点的上、下、左、右等四个方向上分别进行采集。其中,该步长可任意设置。在本发明实施例中,定义判定半径做为步长radius。首先,声明并初始化List<Vector2Int>polist。然后,以中心点为基础,采集多个采样点。假设,中心点的坐标为:(center.x,center.y),具体的,按照如下方式获得多个采样点:
1)将中心点向右方向移动,将点(center.x+radius/3,center.y)加入polist;
2)将中心点向右方向移动,将点(center.x+radius*2/3,center.y)加入polist;
3)将中心点向右方向移动,将点(center.x+radius,center.y)加入polist;
4)将中心点向右方向移动,将点(center.x+radius*1.5,center.y)加入polist;
5)将中心点向右方向移动,将点(center.x+radius*1.5,center.y)加入polist;
6)将中心点向右方向,y方向向上移动,将点(center.x+radius/3,center.y+radius/3)加入polist;
7)将中心点向右方向移动,y方向向上移动,将点(center.x+radius*2/3,center.y+radius*2/3)加入polist;
8)将中心点向右方向移动,y方向向上移动,将点(center.x+radius/2,center.y+radius/2)加入polist;
9)将中心点向右方向移动,y方向向上移动,将点(center.x+radius,center.y+radius)加入polist;
10)将中心点y方向向上移动,将点(center.x,center.y+radius/3)加入polist;
11)将中心点y方向向上移动,将点(center.x,center.y+radius*2/3)加入polist;
12)将中心点y方向向上移动,将点(center.x,center.y+radius*1.5)加入polist;
13)将中心点向左方向、y方向向上移动,将点(center.x-radius/3,center.y+radius/2)加入polist;
14)将中心点向左方向、y方向向上移动,将点(center.x-radius*2/3,center.y+radius/2)加入polist;
15)将中心点向左方向、y方向向上移动,将点(center.x-radius/2,center.y+radius/2)加入polist;
16)将中心点向左方向、y方向向上移动,将点(center.x-radius,center.y+radius)加入polist;
17)将中心点向左方向移动,将点(center.x-radius/3,center.y)、加入polist;
18)将中心点向左方向移动,将点(center.X-radius*2/3,center.y)加入polist;
19)将中心点向左方向移动,将点(center.x-radius,center.y)加入polist;
20)将中心点向左方向移动,将点(center.x-radius*1.5,center.y)加入polist;
21)将中心点向左方向、y方向向下移动,将点(center.x-radius/3,center.y-radius/3)加入polist;
22)将中心点向左方向、y方向向下移动,将点(center.x-radius/2,center.y-radius/2)加入polist;
23)将中心点向左方向、y方向向下移动,将点(center.x-radius,center.y-radius)加入polist;
24)将中心点向y方向向下移动,将点(center.x,center.y-radius/2)加入polist;
25)将中心点向y方向向下移动,将点(center.x,center.y-radius)加入polist;
26)将中心点向y方向向下移动,将点(center.x,center.y-radius*1.5)加入polist;
27)将中心点向右、y方向向下移动,将点(center.x+radius/3,enter.y-radius/3)加入polist;
29)将中心点向右、y方向向下移动,将点(center.x+radius*2/3,center.y-radius*2/3)加入polist;
30)将中心点向右、y方向向下移动,将点(center.x+radius/2,center.y-radius/2)加入polist;
31)将中心点向右、y方向向下移动,将点(center.x+radius,center.y-radius)加入polist;
32)中心点向右、y方向向下移动,将点(center.x+radius*1.5,center.y-radius*1.5)加入polist。
经过上述过程,以中心点为中心,获取与中心点呈现出米字形或手指型的坐标点,并存入列表。
步骤103、对所述模型坐标对应的模型坐标点进行合法性判断。
在此步骤中,对于队列中的点,判断所述模型坐标点的alpha值是否在预设范围内,以及判断所述模型坐标点是否为边界点。Alpha是一个8位的灰度图像通道,该通道用256级灰度来记录图像中的透明度信息,定义透明、不透明和半透明区域,其中黑表示透明,白表示不透明,灰表示半透明。其取值通常在0~1之间。其中,预设范围可任意设置。如果,模型坐标点的alpha值在预设范围内且不是边界点,那么则通过合法性判断;否则,未通过合法性判断。
步骤104、若所述模型坐标点通过合法性判断,则将所述模型坐标点作为注水点,以利用所述注水点填充待填充区域。
若所述模型坐标点的alpha值在所述预设范围内且所述模型坐标点不是边界点,则将所述模型坐标点作为注水点,并利用所述注水点填充待填充区域。
具体的,将该点作为注入点,利用洪水填充算法进行填充线条图层,并放弃列表里的其他坐标点,完成点击填充判定。也即,在本发明实施例中,将第一个合法的模型点作为注水点,执行洪水填充算法,完成填充。
在本发明实施例中,将用户的原始坐标转换为贴图坐标,并通过预设的模型将贴图坐标转换为模型点坐标。然后,通过对模型点坐标的合法性判断,确定合法的模型点作为注水点进行填充。通过上述方式,可以模型所在的区域为基本的填充单位而进行填充,从而使得各点的识别率提高,进而提高了点击区域的识别率。
在上述实施例的基础上,为提供识别效率,还可在步骤101之前还可首先准备线条贴图,定义点击判断模型,例如手指型、章型。然后,根据模型定义,实现模型算法,如手指类型,及收集该模型点。
图2为本发明实施例区域填充装置实施例一的结构示意图。如图2所示,本实施例的装置可以包括:
获取模块201,用于获取用户输入的原始坐标,并将所述原始坐标转换为贴图坐标,其中,所述贴图坐标为将所述原始坐标转换到贴图空间后的坐标;转换模块202,用于利用预设的模型,将所述贴图坐标转换为模型坐标;判断模块203,用于对所述模型坐标对应的模型坐标点进行合法性判断;填充模块204,用于若所述模型坐标点通过合法性判断,则将所述模型坐标点作为注水点,以利用所述注水点填充待填充区域。
具体的,所述获取模块201包括:
第一转换子模块2011,用于将所述原始坐标转换为世界坐标;第二转换子模块2012,用于将所述世界坐标转换为贴图空间内的坐标;获取子模块2013,用于对所述贴图空间内的坐标进行像素率转换,获得所述贴图坐标。
具体的,所述转换模块202包括:
采集子模块2021,用于以所述贴图坐标对应的贴图坐标点为中心点,在所述中心点的第一方向、第二方向、第三方向、第四方向上,分别利用预设的步长采集多个采样点;转换子模块2022,用于将所述采样点的坐标输入到所述预设的模型中,获得模型坐标点。
在本发明实施例中,所述预设的模型包括手指模型或章模型。
其中,所述判断模块203具体用于,判断所述模型坐标点的alpha值是否在预设范围内,以及判断所述模型坐标点是否为边界点;所述填充模块204具体用于,若所述模型坐标点的alpha值在所述预设范围内且所述模型坐标点不是边界点,则将所述模型坐标点作为注水点,并利用所述注水点填充待填充区域。
本实施例的装置,可以用于执行图1所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
本发明实施例还提供一种电子设备,图3为本发明电子设备一个实施例的结构示意图,可以实现本发明图1所示实施例的流程,如图3所示,上述电子设备可以包括:壳体31、处理器32、存储器33、电路板34和电源电路35,其中,电路板34安置在壳体31围成的空间内部,处理器32和存储器33设置在电路板34上;电源电路35,用于为上述电子设备的各个电路或器件供电;存储器33用于存储可执行程序代码;处理器32通过读取存储器33中存储的可执行程序代码来运行与可执行程序代码对应的程序,用于执行前述任一实施例所述的方法。
处理器32对上述步骤的具体执行过程以及处理器32通过运行可执行程序代码来进一步执行的步骤,可以参见本发明图1所示实施例的描述,在此不再赘述。
该电子设备以多种形式存在,包括但不限于:
(1)移动通信设备:这类设备的特点是具备移动通信功能,并且以提供话音、数据通信为主要目标。这类终端包括:智能手机(例如iPhone)、多媒体手机、功能性手机,以及低端手机等。
(2)超移动个人计算机设备:这类设备属于个人计算机的范畴,有计算和处理功能,一般也具备移动上网特性。这类终端包括:PDA、MID和UMPC设备等,例如iPad。
(3)便携式娱乐设备:这类设备可以显示和播放多媒体内容。该类设备包括:音频、视频播放器(例如iPod),掌上游戏机,电子书,以及智能玩具和便携式车载导航设备。
(4)服务器:提供计算服务的设备,服务器的构成包括处理器、硬盘、内存、系统总线等,服务器和通用的计算机架构类似,但是由于需要提供高可靠的服务,因此在处理能力、稳定性、可靠性、安全性、可扩展性、可管理性等方面要求较高。
(5)其他具有数据交互功能的电子设备。
本发明的实施例还提供一种应用程序,所述应用程序被执行以实现本发明任一实施例提供的方法。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个......”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。为了描述的方便,描述以上装置是以功能分为各种单元/模块分别描述。当然,在实施本发明时可以把各单元/模块的功能在同一个或多个软件和/或硬件中实现。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random AccessMemory,RAM)等。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。