视频处理方法、装置、电子设备及存储介质
文献发布时间:2023-06-19 11:22:42
技术领域
本公开涉及视频处理技术领域,尤其涉及一种视频处理方法、装置、电子设备及存储介质。
背景技术
碰撞检测是指检测物体之间是否发生碰撞,如检测物体之间是否接触或穿透等,是计算机图像、虚拟现实、计算机游戏、动画、机器人及虚拟制造等领域中的一个重要研究课题。
相关技术中,在对视频画面中的两个物体进行碰撞检测时,会获取这两个物体的包围盒,每个包围盒中包含一个物体,对这两个物体的包围盒进行碰撞检测,若两个包围盒发生碰撞,则确定两个物体发生碰撞。其中,包围盒是指包含物体的区域,物体的所有部分都位于该包围盒中。
然而,物体的包围盒无法准确贴合物体的轮廓,虽然检测出两个包围盒发生了碰撞,但是可能两个物体本身并未发生碰撞,因此上述方案的碰撞检测精度低。
发明内容
本公开提供一种视频处理方法、装置、电子设备及存储介质,能够提高碰撞检测的精度。本公开的技术方案如下:
根据本公开实施例的第一方面,提供一种视频处理方法,所述视频处理方法包括:
获取在视频画面中添加的动态虚拟元素的包围盒;
识别所述视频画面中的原始目标对象对应的目标轮廓点,所述目标轮廓点为所述原始目标对象的轮廓线上的全部轮廓点或部分轮廓点;
基于每两个相邻的目标轮廓点创建一个包围盒,得到所述原始目标对象的多个包围盒;
将所述动态虚拟元素的包围盒与所述原始目标对象的每个包围盒进行碰撞检测;
响应于所述动态虚拟元素的包围盒与所述原始目标对象的任一包围盒发生碰撞,确定所述动态虚拟元素与所述原始目标对象发生碰撞。
在一种可能的实现方式中,所述识别所述视频画面中的原始目标对象对应的目标轮廓点,包括:
逐个遍历所述视频画面的像素点,从所述视频画面的像素点中查询满足轮廓条件的像素点作为原始轮廓点;
从查询的原始轮廓点中,每隔第一参考数量的原始轮廓点提取第二参考数量的目标轮廓点,得到所述目标轮廓点。
在另一种可能的实现方式中,所述逐个遍历所述视频画面的像素点,从所述视频画面的像素点中查询满足轮廓条件的像素点作为原始轮廓点,包括:
逐个遍历所述视频画面中的像素点,响应于当前遍历的像素点是与所述原始目标对象对应的像素点,并且与所述当前遍历的像素点相邻的上一个遍历的像素点不是与所述原始目标对象对应的像素点,将所述当前遍历的像素点确定为第一个原始轮廓点;
基于所述第一个原始轮廓点继续查询其他的原始轮廓点。
在另一种可能的实现方式中,所述基于所述第一个原始轮廓点继续查询其他的原始轮廓点,包括:
在所述第一个原始轮廓点的八邻域内的像素点中,从任一像素点开始,沿着第一参考方向逐个遍历像素点,将当前遍历的满足所述轮廓条件的像素点确定为结束点;
在所述第一个原始轮廓点的八邻域内的像素点中,从第一像素点开始,沿着第二参考方向逐个遍历像素点,将当前遍历的满足所述轮廓条件的像素点确定为第二个原始轮廓点,所述第一像素点是从所述结束点开始,在所述第一个原始轮廓点的八邻域内的像素点中,沿着所述第二参考方向移动而到达的像素点;
循环执行如下步骤:
在当前确定的原始轮廓点的八邻域内的像素点中,从第二像素点开始,沿着所述第二参考方向逐个遍历像素点,将当前遍历的满足所述轮廓条件的像素点确定为下一个原始轮廓点,直至在确定的下一个原始轮廓点为所述结束点时停止循环,所述第二像素点是从前一个原始轮廓点开始,在所述当前确定的原始轮廓点的八邻域内的像素点中,沿着所述第二参考方向移动而到达的像素点;
其中,所述第一参考方向和所述第二参考方向为顺时针方向或逆时针方向,且所述第二参考方向与所述第一参考方向不同。
在另一种可能的实现方式中,所述基于所述第一个原始轮廓点继续查询其他的原始轮廓点,包括:
在所述第一个原始轮廓点的八邻域内的像素点中,从任一像素点开始,沿着第一参考方向逐个遍历像素点,将当前遍历的满足所述轮廓条件的像素点确定为第二个原始轮廓点,所述第一参考方向为顺时针方向或逆时针方向;
循环执行如下步骤:
在当前确定的原始轮廓点的八邻域内的像素点中,从第二像素点开始,沿着所述第一参考方向逐个遍历像素点,将当前遍历的满足所述轮廓条件的像素点确定为下一个原始轮廓点,直至在当前遍历的像素点为所述第一个原始轮廓点时停止循环,所述第二像素点是从前一个原始轮廓点开始,在所述当前确定的原始轮廓点的八邻域内的像素点中,沿着所述第二参考方向移动而到达的像素点。
在另一种可能的实现方式中,所述识别所述视频画面中的原始目标对象对应的目标轮廓点,包括:
对包含所述原始目标对象的所述视频画面进行二值化处理,得到掩膜图像,其中,所述掩膜图像中所述原始目标对象对应的像素点的像素值为第一像素值;
从所述掩膜图像的像素点中,识别所述目标轮廓点。
在另一种可能的实现方式中,所述基于每两个相邻的目标轮廓点创建一个包围盒,得到所述原始目标对象的多个包围盒,包括:
将两个相邻的目标轮廓点间的距离确定为矩形的第一边长,将参考距离确定为矩形的第二边长;
根据所述第一边长和所述第二边长创建一个形状为矩形的包围盒,所述两个相邻的目标轮廓点分别位于所述包围盒对边的中心位置。
在另一种可能的实现方式中,所述获取在视频画面中添加的动态虚拟元素的包围盒,包括:
识别所述视频画面中的所述动态虚拟元素对应的参考轮廓点,所述参考轮廓点为所述动态虚拟元素的轮廓线上的全部轮廓点或部分轮廓点;
基于每两个相邻的参考轮廓点创建一个包围盒,得到所述动态虚拟元素的多个包围盒;
所述将所述动态虚拟元素的包围盒与所述原始目标对象的每个包围盒进行碰撞检测,包括:
将所述动态虚拟元素的每个包围盒与所述原始目标对象的每个包围盒进行碰撞检测。
在另一种可能的实现方式中,所述将所述动态虚拟元素的包围盒与所述原始目标对象的每个包围盒进行碰撞检测,包括:
确定与所述原始目标对象的包围盒的每个边所在方向垂直的第一方向,以及与所述动态虚拟元素的包围盒的每个边所在方向垂直的第二方向;
将所述原始目标对象的包围盒和所述动态虚拟元素的包围盒投影到所述第一方向和所述第二方向上;
响应于所述原始目标对象的包围盒的投影区域与所述动态虚拟元素的包围盒的投影区域在所述第一方向以及所述第二方向上都重叠,确定所述原始目标对象的包围盒与所述动态虚拟元素的包围盒发生碰撞。
根据本公开实施例的第二方面,提供一种视频处理装置,所述视频处理装置包括:
包围盒获取单元,被配置为执行获取在视频画面中添加的动态虚拟元素的包围盒;
轮廓点识别单元,被配置为执行识别所述视频画面中的原始目标对象对应的目标轮廓点,所述目标轮廓点为所述原始目标对象的轮廓线上的全部轮廓点或部分轮廓点;
包围盒创建单元,被配置为执行基于每两个相邻的目标轮廓点创建一个包围盒,得到所述原始目标对象的多个包围盒;
碰撞检测单元,被配置为执行将所述动态虚拟元素的包围盒与所述原始目标对象的每个包围盒进行碰撞检测;
碰撞确定单元,被配置为执行响应于所述动态虚拟元素的包围盒与所述原始目标对象的任一包围盒发生碰撞,确定所述动态虚拟元素与所述原始目标对象发生碰撞。
在一种可能的实现方式中,所述轮廓点识别单元,包括:
轮廓点查询子单元,被配置为执行逐个遍历所述视频画面的像素点,从所述视频画面的像素点中查询满足轮廓条件的像素点作为原始轮廓点;
轮廓点提取子单元,被配置为执行从查询的原始轮廓点中,每隔第一参考数量的原始轮廓点提取第二参考数量的目标轮廓点,得到所述目标轮廓点。
在另一种可能的实现方式中,所述轮廓点查询子单元,被配置为执行逐个遍历所述视频画面中的像素点,响应于当前遍历的像素点是与所述原始目标对象对应的像素点,并且与所述当前遍历的像素点相邻的上一个遍历的像素点不是与所述原始目标对象对应的像素点,将所述当前遍历的像素点确定为第一个原始轮廓点;基于所述第一个原始轮廓点继续查询其他的原始轮廓点。
在另一种可能的实现方式中,所述轮廓点查询子单元,被配置为执行在所述第一个原始轮廓点的八邻域内的像素点中,从任一像素点开始,沿着第一参考方向逐个遍历像素点,将当前遍历的满足所述轮廓条件的像素点确定为结束点;在所述第一个原始轮廓点的八邻域内的像素点中,从第一像素点开始,沿着第二参考方向逐个遍历像素点,将当前遍历的满足所述轮廓条件的像素点确定为第二个原始轮廓点,所述第一像素点是从所述结束点开始,在所述第一个原始轮廓点的八邻域内的像素点中,沿着所述第二参考方向移动而到达的像素点;循环执行如下步骤:在当前确定的原始轮廓点的八邻域内的像素点中,从第二像素点开始,沿着所述第二参考方向逐个遍历像素点,将当前遍历的满足所述轮廓条件的像素点确定为下一个原始轮廓点,直至在确定的下一个原始轮廓点为所述结束点时停止循环,所述第二像素点是从前一个原始轮廓点开始,在所述当前确定的原始轮廓点的八邻域内的像素点中,沿着所述第二参考方向移动而到达的像素点;其中,所述第一参考方向和所述第二参考方向为顺时针方向或逆时针方向,且所述第二参考方向与所述第一参考方向不同。
在另一种可能的实现方式中,所述轮廓点查询子单元,被配置为执行在所述第一个原始轮廓点的八邻域内的像素点中,从任一像素点开始,沿着第一参考方向逐个遍历像素点,将当前遍历的满足所述轮廓条件的像素点确定为第二个原始轮廓点,所述第一参考方向为顺时针方向或逆时针方向;循环执行如下步骤:在当前确定的原始轮廓点的八邻域内的像素点中,从第二像素点开始,沿着所述第一参考方向逐个遍历像素点,将当前遍历的满足所述轮廓条件的像素点确定为下一个原始轮廓点,直至在当前遍历的像素点为所述第一个原始轮廓点时停止循环,所述第二像素点是从前一个原始轮廓点开始,在所述当前确定的原始轮廓点的八邻域内的像素点中,沿着所述第二参考方向移动而到达的像素点。
在另一种可能的实现方式中,所述轮廓点识别单元,被配置为执行对包含所述原始目标对象的所述视频画面进行二值化处理,得到掩膜图像,其中,所述掩膜图像中所述原始目标对象对应的像素点的像素值为第一像素值;从所述掩膜图像的像素点中,识别所述目标轮廓点。
在另一种可能的实现方式中,所述包围盒创建单元,被配置为执行将两个相邻的目标轮廓点间的距离确定为矩形的第一边长,将参考距离确定为矩形的第二边长;根据所述第一边长和所述第二边长创建一个形状为矩形的包围盒,所述两个相邻的目标轮廓点分别位于所述包围盒对边的中心位置。
在另一种可能的实现方式中,所述包围盒获取单元,被配置为执行识别所述视频画面中的所述动态虚拟元素对应的参考轮廓点,所述参考轮廓点为所述动态虚拟元素的轮廓线上的全部轮廓点或部分轮廓点;基于每两个相邻的参考轮廓点创建一个包围盒,得到所述动态虚拟元素的多个包围盒;
所述碰撞检测单元,被配置为执行将所述动态虚拟元素的每个包围盒与所述原始目标对象的每个包围盒进行碰撞检测。
在另一种可能的实现方式中,所述碰撞检测单元,被配置为执行确定与所述原始目标对象的包围盒的每个边所在方向垂直的第一方向,以及与所述动态虚拟元素的包围盒的每个边所在方向垂直的第二方向;将所述原始目标对象的包围盒和所述动态虚拟元素的包围盒投影到所述第一方向和所述第二方向上;响应于所述原始目标对象的包围盒的投影区域与所述动态虚拟元素的包围盒的投影区域在所述第一方向以及所述第二方向上都重叠,确定所述原始目标对象的包围盒与所述动态虚拟元素的包围盒发生碰撞。
根据本公开实施例的第三方面,提供一种电子设备,所述电子设备包括:
一个或多个处理器;
用于存储所述一个或多个处理器可执行指令的易失性或非易失性存储器;
其中,所述一个或多个处理器被配置为执行如上述方面所述的视频处理方法。
根据本公开实施例的第四方面,提供一种计算机可读存储介质,当所述计算机可读存储介质中的指令由所述电子设备的处理器执行时,使得电子设备能够执行如上述方面所述的视频处理方法。
根据本公开实施例的第五方面,提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现上述方面所述的视频处理方法。
本公开的实施例提供的技术方案至少带来以下有益效果:
在本公开实施例中,基于视频画面中原始目标对象对应的多个目标轮廓点中每两个相邻的目标轮廓点创建一个包围盒,则能够为原始目标对象创建多个包围盒,该多个包围盒能够很好地贴合原始目标对象的轮廓,因此,基于该多个包围盒进行碰撞检测的结果能够准确反映原始目标对象是否与视频画面中添加的动态虚拟元素发生碰撞,保证了碰撞检测结果的准确性,提高了碰撞检测的精度。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理,并不构成对本公开的不当限定。
图1是根据一示例性实施例示出的一种实施环境的示意图。
图2是根据一示例性实施例示出的一种视频处理方法的流程图。
图3是根据一示例性实施例示出的一种视频处理方法的流程图。
图4是根据一示例性实施例示出的一种包含原始目标对象的视频画面。
图5是根据一示例性实施例示出的一种原始目标对象对应的掩膜图像的示意图。
图6是根据一示例性实施例示出的一种在掩膜图像中查询全部原始轮廓点的过程示意图。
图7是根据一示例性实施例示出的一种在掩膜图像中查询结束点的过程示意图。
图8是根据一示例性实施例示出的一种原始轮廓点的八邻域内的像素点的示意图。
图9是根据一示例性实施例示出的一种在掩膜图像中查询第二个原始轮廓点的过程示意图。
图10是根据一示例性实施例示出的一种原始目标对象的轮廓示意图。
图11是根据一示例性实施例示出的一种将原始目标对象包围在内的包围盒的示意图。
图12是根据一示例性实施例示出的一种与原始目标对象的轮廓贴合的多个包围盒的示意图。
图13是根据一示例性实施例示出的一种基于相邻轮廓点创建的单个包围盒的示意图。
图14是根据一示例性实施例示出的一种方向示意图。
图15是根据一示例性实施例示出的一种视频处理装置的框图。
图16是根据一示例性实施例示出的一种终端的结构示意图。
图17是根据一示例性实施例示出的一种服务器的结构示意图。
具体实施方式
为了使本领域普通人员更好地理解本公开的技术方案,下面将结合附图,对本公开实施例中的技术方案进行清楚、完整地描述。
需要说明的是,本公开的说明书和权利要求书及上述附图说明中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本公开的实施例能够以除了在这里图示或描述的那些以外的顺序实施。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
本申请所使用的术语“至少一个”、“多个”、“每个”、“任一”,至少一个包括一个、两个或两个以上,多个包括两个或两个以上,而每个是指对应的多个中的每一个,任一是指多个中的任意一个。举例来说,多个包围盒包括3个包围盒,而每个是指这3个包围盒中的每一个包围盒,任一是指这3个包围盒中的任意一个,可以是第一个,可以是第二个、也可以是第三个。
图1是本公开实施例提供的一种实施环境的示意图。参见图1,该实施环境包括终端101和服务器102。终端101和服务器102之间通过无线或者有线网络连接。例如,终端101为电脑、手机、平板电脑或者其他终端。例如,服务器102为该目标应用的后台服务器或者为提供云计算以及云存储等服务的云服务器。
例如,终端101上安装由服务器102提供服务的目标应用,终端101能够通过该目标应用实现例如数据传输、消息交互等功能。例如,目标应用为终端101操作系统中的目标应用,或者为第三方提供的目标应用。该目标应用具有碰撞检测的功能,即能够检测视频画面中原始目标对象与在视频画面中添加的动态虚拟元素是否发生碰撞。当然,该目标应用还能够具有其他功能,本公开对此不做限制。例如,该目标应用为短视频应用、导航应用、游戏应用、聊天应用或者其他应用,本公开对此不做限制。
本公开实施例中,服务器102用于对视频画面中的原始目标对象和在该视频画面中添加的动态虚拟元素进行碰撞检测,根据碰撞检测结果确定其他虚拟元素,向终端101发送该其他虚拟元素,终端101用于在该视频画面中添加服务器102发送的其他虚拟元素。
本公开实施例提供的视频处理方法能够应用在任何碰撞检测的场景下。
例如,应用在视频播放的场景下,在播放视频时,能够根据本公开实施例提供的视频处理方法对当前视频画面中的原始目标对象和以及在该视频画面中添加的动态虚拟元素进行碰撞检测,根据碰撞检测结果对该视频画面进行特效渲染。
又如,应用在游戏的场景下,在游戏过程中,能够根据本公开实施例提供的视频处理方法对游戏画面中的原始目标对象和在该游戏画面中添加的动态虚拟元素进行碰撞检测,根据碰撞检测结果对当前的游戏画面进行特效渲染。
再如,应用在直播的场景下,在直播的过程中,能够根据本公开实施例提供的视频处理方法对当前直播画面中的原始目标对象和以及在该直播画面中添加的动态虚拟元素进行碰撞检测,根据碰撞检测结果对该直播画面进行特效渲染。
图2是根据一示例性实施例示出的一种视频处理方法的流程图,如图2所示,该视频处理方法应用于电子设备中,包括以下步骤。
在201中,获取在视频画面中添加的动态虚拟元素的包围盒。
在202中,识别视频画面中的原始目标对象对应的目标轮廓点,目标轮廓点为原始目标对象的轮廓线上的全部轮廓点或部分轮廓点。
在203中,基于每两个相邻的目标轮廓点创建一个包围盒,得到原始目标对象的多个包围盒。
在204中,将动态虚拟元素的包围盒与原始目标对象的每个包围盒进行碰撞检测。
在205中,响应于动态虚拟元素的包围盒与原始目标对象的任一包围盒发生碰撞,确定动态虚拟元素与原始目标对象发生碰撞。
本公开实施例提供的技术方案,基于视频画面中原始目标对象对应的多个目标轮廓点中每两个相邻的目标轮廓点创建一个包围盒,则能够为原始目标对象创建多个包围盒,该多个包围盒能够很好地贴合原始目标对象的轮廓,因此,基于该多个包围盒进行碰撞检测的结果能够准确反映原始目标对象是否与视频画面中添加的动态虚拟元素发生碰撞,保证了碰撞检测结果的准确性,提高了碰撞检测的精度。
在一种可能的实现方式中,识别视频画面中的原始目标对象对应的目标轮廓点,包括:
逐个遍历视频画面的像素点,从视频画面的像素点中查询满足轮廓条件的像素点作为原始轮廓点;
从查询的原始轮廓点中,每隔第一参考数量的原始轮廓点提取第二参考数量的目标轮廓点,得到目标轮廓点。
在另一种可能的实现方式中,逐个遍历视频画面的像素点,从视频画面的像素点中查询满足轮廓条件的像素点作为原始轮廓点,包括:
逐个遍历视频画面中的像素点,响应于当前遍历的像素点是与原始目标对象对应的像素点,并且与当前遍历的像素点相邻的上一个遍历的像素点不是与原始目标对象对应的像素点,将当前遍历的像素点确定为第一个原始轮廓点;
基于第一个原始轮廓点继续查询其他的原始轮廓点。
在另一种可能的实现方式中,基于第一个原始轮廓点继续查询其他的原始轮廓点,包括:
在第一个原始轮廓点的八邻域内的像素点中,从任一像素点开始,沿着第一参考方向逐个遍历像素点,将当前遍历的满足轮廓条件的像素点确定为结束点;
在第一个原始轮廓点的八邻域内的像素点中,从第一像素点开始,沿着第二参考方向逐个遍历像素点,将当前遍历的满足轮廓条件的像素点确定为第二个原始轮廓点,第一像素点是从结束点开始,在第一个原始轮廓点的八邻域内的像素点中,沿着第二参考方向移动而到达的像素点;
循环执行如下步骤:
在当前确定的原始轮廓点的八邻域内的像素点中,从第二像素点开始,沿着第二参考方向逐个遍历像素点,将当前遍历的满足轮廓条件的像素点确定为下一个原始轮廓点,直至在确定的下一个原始轮廓点为结束点时停止循环,第二像素点是从前一个原始轮廓点开始,在当前确定的原始轮廓点的八邻域内的像素点中,沿着第二参考方向移动而到达的像素点;
其中,第一参考方向和第二参考方向为顺时针方向或逆时针方向,且第二参考方向与第一参考方向不同。
在另一种可能的实现方式中,基于第一个原始轮廓点继续查询其他的原始轮廓点,包括:
在第一个原始轮廓点的八邻域内的像素点中,从任一像素点开始,沿着第一参考方向逐个遍历像素点,将当前遍历的满足轮廓条件的像素点确定为第二个原始轮廓点,第一参考方向为顺时针方向或逆时针方向;
循环执行如下步骤:
在当前确定的原始轮廓点的八邻域内的像素点中,从第二像素点开始,沿着第一参考方向逐个遍历像素点,将当前遍历的满足轮廓条件的像素点确定为下一个原始轮廓点,直至在当前遍历的像素点为第一个原始轮廓点时停止循环,第二像素点是从前一个原始轮廓点开始,在当前确定的原始轮廓点的八邻域内的像素点中,沿着第二参考方向移动而到达的像素点。
在另一种可能的实现方式中,识别视频画面中的原始目标对象对应的目标轮廓点,包括:
对包含原始目标对象的视频画面进行二值化处理,得到掩膜图像,其中,掩膜图像中原始目标对象对应的像素点的像素值为第一像素值;
从掩膜图像的像素点中,识别目标轮廓点。
在另一种可能的实现方式中,基于每两个相邻的目标轮廓点创建一个包围盒,得到原始目标对象的多个包围盒,包括:
将两个相邻的目标轮廓点间的距离确定为矩形的第一边长,将参考距离确定为矩形的第二边长;
根据第一边长和第二边长创建一个形状为矩形的包围盒,两个相邻的目标轮廓点分别位于包围盒对边的中心位置。
在另一种可能的实现方式中,获取在视频画面中添加的动态虚拟元素的包围盒,包括:
识别视频画面中的动态虚拟元素对应的参考轮廓点,参考轮廓点为动态虚拟元素的轮廓线上的全部轮廓点或部分轮廓点;
基于每两个相邻的参考轮廓点创建一个包围盒,得到动态虚拟元素的多个包围盒;
将动态虚拟元素的包围盒与原始目标对象的每个包围盒进行碰撞检测,包括:
将动态虚拟元素的每个包围盒与原始目标对象的每个包围盒进行碰撞检测。
在另一种可能的实现方式中,将动态虚拟元素的包围盒与原始目标对象的每个包围盒进行碰撞检测,包括:
确定与原始目标对象的包围盒的每个边所在方向垂直的第一方向,以及与动态虚拟元素的包围盒的每个边所在方向垂直的第二方向;
将原始目标对象的包围盒和动态虚拟元素的包围盒投影到第一方向和第二方向上;
响应于原始目标对象的包围盒的投影区域与动态虚拟元素的包围盒的投影区域在第一方向以及第二方向上都重叠,确定原始目标对象的包围盒与动态虚拟元素的包围盒发生碰撞。
图3是根据一示例性实施例示出的一种视频处理方法的流程图,如图3所示,该视频处理方法应用于电子设备中,包括以下步骤。
在301中,电子设备对包含原始目标对象的视频画面进行二值化处理,得到掩膜图像,其中,掩膜图像中原始目标对象对应的像素点的像素值为第一像素值。
从视频画面的来源来讲,例如,视频画面为其他电子设备发送过来的视频画面,或者,视频画面为该电子设备中存储的视频的画面。从视频画面的类型来讲,例如,视频画面包括短视频中的一帧画面、游戏中的一帧画面等。从视频画面的内容上来讲,视频画面包括原始目标对象和动态虚拟元素,当然,视频画面还能够包括其他内容。
需要说明的一点是,原始目标对象是指视频画面中原本就包含的目标对象。例如,视频画面是针对原始目标对象拍摄的,因此该视频画面中会包含着原始目标对象。例如,针对某个人物拍摄视频,则视频画面中会包含这个人物。当然,该原始目标对象能够为各种物体,例如动物、车辆等,本公开实施例对此不做限制。
视频画面中的动态虚拟元素能够是实时渲染到视频画面中的。例如,本端的电子设备或者其他电子设备在获取到这个视频画面后,能够对该视频画面进行处理,处理时能够根据视频画面中的一些特征在视频画面中添加动态虚拟元素。例如,在视频画面中添加各种形象的贴纸等。另外,添加的动态虚拟元素在视频画面中的位置可能是变化的,即每一帧视频画面中动态虚拟元素的位置都不同,因此,该动态虚拟元素有可能与该视频画面中的原始目标对象发生碰撞。而本公开实施例会检测该动态虚拟元素是否与原始目标对象发生碰撞,在确定发生碰撞的情况下,则能够对视频画面进行进一步的特效处理,例如在视频画面中添加碰撞相关的其他虚拟元素。
视频画面的二值化,就是将视频画面中的像素点的灰度值设置为两个值,例如0或255,也就是将整个视频画面呈现出明显的只有黑和白的视觉效果。
掩膜(mask)图像是一个二值化的图像,掩膜图像中任一像素点的像素值要么是第一像素值,要么是第二像素值,如果像素点的像素值为第一像素值,则表示该像素点为原始目标对象对应的像素点,如果像素点的像素值为第二像素值,则表示该像素点不是原始目标对象对应的像素点。
例如,电子设备对包含原始目标对象的视频画面进行二值化处理,得到掩膜图像的实现方式为:电子设备调用图像分割模型,对包含原始目标对象的视频画面进行图像分割,得到视频画面中原始目标对象所在的画面区域,将该画面区域中像素点的像素值设置为第一像素值,将视频画面中该画面区域之外的其他区域的像素值设置为第二像素值,得到掩膜图像。参考图4和图5,图4为未进行二值化处理的视频画面,图5为对该视频画面进行二值化处理后得到的掩膜图像。
在本公开实施例中,对包含原始目标对象的视频画面进行二值化处理,得到掩膜图像,由于该掩膜图像中只有两种像素值的像素点,即原始目标对象对应的像素值为第一像素值的像素点和像素值为另一像素值的其他像素点,因此,利用像素值差异很容易将原始目标对象对应的像素点和其他像素点区分开,保证了从掩膜图像中识别目标轮廓点的准确性。
在302中,电子设备从掩膜图像的像素点中,识别原始目标对象对应的目标轮廓点。
原始目标对象对应多个像素点,其中一些像素点位于原始目标对象的轮廓线上,则这些像素点就是原始目标对象对应的轮廓点。其中,目标轮廓点为该轮廓线上的全部轮廓点或部分轮廓点。
在一种可能的实现方式中,电子设备从掩膜图像的像素点中,识别原始目标对象对应的目标轮廓点,包括:电子设备逐个遍历掩膜图像的像素点,从掩膜图像的像素点中查询满足轮廓条件的像素点作为原始轮廓点;从查询的原始轮廓点中,每隔第一参考数量的原始轮廓点提取第二参考数量的目标轮廓点,得到目标轮廓点。
其中,第一参考数量和第二参考数量能够为任意数值,例如,第一参考数量为10,第二参考数量为1,本公开实施例对此不做限制。
其中,满足轮廓条件的像素点是指:像素点为原始目标对象对应的像素点,且该像素点相邻的像素点中,至少有一个像素点不是原始目标对象对应的像素点。参考图6,每个格子表示一个像素点,线条包围的区域表示原始目标对象对应的区域,即该区域在掩膜图像中的位置与该原始目标对象在视频画面中的位置相同,该区域中的格子表示原始目标对象对应的像素点。在该区域中,标注有“开始”、“结束”或者数字的像素点,均是原始目标对象对应的像素点,且这些像素点中每个像素点相邻的像素点中,都至少有一个像素点不是原始目标对象对应的像素点。因此,标注有“开始”、“结束”或者数字的像素点即为原始目标对象对应的原始轮廓点。
在本公开实施例中,由于提取目标轮廓点后,需要基于提取的目标轮廓点创建多个包围盒,并基于包围盒进行碰撞检测,因此,从掩膜图像的像素点中查询满足轮廓条件的原始轮廓点后,每隔一定数量的原始轮廓点来提取目标轮廓点,能够减少提取的目标轮廓点的数量,从而减少创建的包围盒的数量,能够极大提高碰撞检测的效率。
在一种可能的实现方式中,电子设备逐个遍历掩膜图像的像素点,从掩膜图像的像素点中查询满足轮廓条件的像素点作为原始轮廓点,包括:电子设备逐个遍历掩膜图像中的像素点,响应于当前遍历的像素点是与原始目标对象对应的像素点,并且与当前遍历的像素点相邻的上一个遍历的像素点不是与原始目标对象对应的像素点,将当前遍历的像素点确定为第一个原始轮廓点;电子设备基于第一个原始轮廓点继续查询其他的原始轮廓点。
例如,电子设备逐个遍历掩膜图像中的像素点的实现方式为:电子设备按照从左到右,从上到下的顺序逐个遍历掩膜图像中的像素点;响应于当前遍历的像素点是与原始目标对象对应的像素点,且上一个遍历的像素点不是与原始目标对象对应的像素点,将当前遍历的像素点确定为第一个原始轮廓点。当然,电子设备也可能按照其他顺序来遍历掩膜图像中的像素点,例如,按照从右到左,从下到上的顺序,本公开实施例对此不做限制。
在本公开实施例中,在查询原始轮廓点时,由于采用的是逐个遍历像素点的方式,因此在当前遍历的像素点是与原始目标对象对应的像素点,且与当前遍历的像素点相邻的上一个遍历的像素点不是与原始目标对象对应的像素点的情况下,当前遍历的像素点一定是个轮廓点,因此,通过上述方式来查询第一个原始轮廓点,保证了确定的第一个原始轮廓点的准确性。另外,考虑到轮廓点与轮廓点之间位置的相关性,基于第一个原始轮廓点来继续查询其他原始轮廓点,能够提高查询其他原始轮廓点的效率。
在一些实施例中,电子设备基于第一个原始轮廓点继续查询其他的原始轮廓点的实现方式有两种,第一种包括以下步骤(1)-(3)。
(1)电子设备在第一个原始轮廓点的八邻域内的像素点中,从任一像素点开始,沿着第一参考方向逐个遍历像素点,将当前遍历的满足轮廓条件的像素点确定为结束点。
其中,第一参考方向为顺时针方向或者逆时针方向。参考图7,假设确定的第一个原始轮廓点为标注有“开始”的像素点,第一参考方向为顺时针方向,则在第一个原始轮廓点的八邻域内的像素点中,从标注有数字4的像素点开始,沿着顺时针方向逐个遍历像素点,当前遍历的满足轮廓条件的像素点为标注有数字5的像素点,则该像素点即为结束点。
(2)电子设备在第一个原始轮廓点的八邻域内的像素点中,从第一像素点开始,沿着第二参考方向逐个遍历像素点,将当前遍历的满足轮廓条件的像素点确定为第二个原始轮廓点。
其中,第二参考方向为逆时针方向或者逆时针方向,且第二参考方向与第一参考方向不同。第一像素点是从结束点开始,在第一个原始轮廓点的八邻域内的像素点中,沿着第二参考方向移动而到达的像素点。第一个原始轮廓点的八邻域内的像素点是指:第一个原始轮廓点周围的八个的像素点,参考图8,假设标注有“X,Y”的像素点为第一个原始轮廓点,则第一个原始轮廓点周围标注有数字的八个像素点就是第一个原始轮廓点的八邻域内的像素点。
例如,参考图9,假设标注有“开始”的像素点为第一个原始轮廓点,标注有“结束”的像素点为结束点,第二参考方向为逆时针方向,则从结束点开始,在标注有“开始”的像素点的八邻域内的像素点中,沿着逆时针方向移动而到达的像素点为结束点上面的像素点,该像素点即是第一像素点。从该像素点开始,在标注有“开始”的像素点的八邻域内的像素点中,沿着逆时针方向逐个遍历像素点,则当前遍历的满足轮廓条件的像素点为标注有“当前”的像素点,则电子设备将标注有“当前”的像素点确定为第二个原始轮廓点。
(3)电子设备循环执行如下步骤:
电子设备在当前确定的原始轮廓点的八邻域内的像素点中,从第二像素点开始,沿着第二参考方向逐个遍历像素点,将当前遍历的满足轮廓条件的像素点确定为下一个原始轮廓点,直至在确定的下一个原始轮廓点为结束点时停止循环。
其中,第二像素点是从前一个原始轮廓点开始,在当前确定的原始轮廓点的八邻域内的像素点中,沿着第二参考方向移动而到达的像素点。由于电子设备刚确定出第二个原始轮廓点,因此在该步骤中,第一次循环中的当前确定的原始轮廓点为第二个原始轮廓点,前一个原始轮廓点为第一个原始轮廓点。
例如,继续参考图9,假设标注有“开始”的像素点为第一个原始轮廓点,标注有“结束”的像素点为结束点,标注有“当前”的像素点为第二个原始轮廓点,第二参考方向为逆时针方向,则在第一次循环中,第二像素点为从标注有“开始”的像素点开始,在标注有“当前”的像素点的八邻域内的像素点中,沿着逆时针方向移动而到达的像素点,即标注有1的像素点。此时,电子设备在标注有“当前”的像素点的八邻域内的像素点中,从标注有1的像素点开始,沿着逆时针方向逐个遍历像素点,则当前遍历的满足轮廓条件的像素点为标注有5的像素点,则标注有5的像素点即为下一个原始轮廓点,即第三个原始轮廓点。
当电子设备将标注有5的像素点确定为第三个原始轮廓点后,则进入了步骤(3)中的第二次循环,此时,第三个原始轮廓点为当前确定的原始轮廓点,第二个原始轮廓点成为前一个原始轮廓点。然后,电子设备按照与确定第三个原始轮廓点同理的方式继续确定下一个原始轮廓点,以此类推,直到确定的下一个原始轮廓点为结束点为止。
继续参考图6,假设标注有“开始”的像素点为第一个原始轮廓点,标注有“结束”的像素点为结束点,标注有2的像素点为第二个原始轮廓点,第二参考方向为逆时针方向,则电子设备会按照箭头标注的顺序,依次确定出每个原始轮廓点,直到确定的下一个原始轮廓点为标注有“结束”的结束点。
在本公开实施例中,考虑到原始目标对象的边缘是连续的,原始目标对象对应的多个原始轮廓点中相连的两个原始轮廓点互为对方八邻域内的像素点,因此每次在当前确定的原始轮廓点的八邻域内的像素点中,从第二像素点开始逐个遍历像素点,将当前遍历的满足轮廓条件的像素点确定为下一个原始轮廓点,则不用遍历掩膜图像中的每个像素点也能够依次找到其余的原始轮廓点,从而能够极大地提高确定原始轮廓点的效率。
基于第一个原始轮廓点继续查询其他的原始轮廓点的第一种实现方式中,将上述结束点作为遍历的结束点,在基于第一个原始轮廓点继续查询其他的原始轮廓点的第二种实现方式中,将第一个原始轮廓点作为遍历的结束点,包括以下步骤(A)-(B)。
(A)电子设备在第一个原始轮廓点的八邻域内的像素点中,从任一像素点开始,沿着第一参考方向逐个遍历像素点,将当前遍历的满足轮廓条件的像素点确定为第二个原始轮廓点。
继续参考图7,假设确定的第一个原始轮廓点为标注有“开始”的像素点,第一参考方向为逆时针方向,则在第一个原始轮廓点八邻域内的像素点中,从标注有数字4的像素点开始,沿着逆时针方向逐个遍历像素点,当前遍历的满足轮廓条件的像素点为标注有“开始”的像素点下方的像素点,则该像素点即为第二个原始轮廓点。
(B)电子设备循环执行如下步骤:
在当前确定的原始轮廓点的八邻域内的像素点中,从第二像素点开始,沿着第一参考方向逐个遍历像素点,将当前遍历的满足轮廓条件的像素点确定为下一个原始轮廓点,直至在当前遍历的像素点为第一个原始轮廓点时停止循环。
其中,第二像素点是从前一个原始轮廓点开始,在当前确定的原始轮廓点的八邻域内的像素点中,沿着第二参考方向移动而到达的像素点。
继续参考图6,假设标注有“开始”的像素点为第一个原始轮廓点,标注有2的像素点为第二个原始轮廓点,第一参考方向为逆时针方向,则电子设备会按照箭头标注的顺序,依次确定出每个原始轮廓点,直到当前遍历的像素点为标注有“开始”的第一个原始轮廓点。参考图5和图10,图10为由原始轮廓点构成的原始目标对象的轮廓图,该轮廓图是根据图5所示的掩膜图像确定原始轮廓点后生成的。
在本公开实施例中,考虑到原始目标对象的边缘是连续的,原始目标对象对应的多个原始轮廓点中相连的两个原始轮廓点互为对方八邻域内的像素点,因此每次在当前确定的原始轮廓点的八邻域内的像素点中,从第二像素点开始逐个遍历像素点,将当前遍历的满足轮廓条件的像素点确定为下一个原始轮廓点,则不用遍历掩膜图像中的每个像素点也能够依次找到其余的原始轮廓点,从而能够极大地提高确定原始轮廓点的效率。
需要说明的一点是,获取视频画面的掩膜图像,根据掩膜图像来确定原始目标对象对应的目标轮廓点,仅是识别原始目标对象对应的目标轮廓点的一种实现方式,在其他实施例中,能够通过其他方式识别原始目标对象对应的目标轮廓点,例如,直接从原始的视频画面中识别原始目标对象对应的目标轮廓点,本公开实施例对此不做限制。其中,直接从原始的视频画面中识别原始目标对象对应的目标轮廓点与从掩膜图像中识别原始目标对象对应的目标轮廓点的方式同理,此处不再赘述。
在303中,电子设备基于每两个相邻的目标轮廓点创建一个包围盒,得到原始目标对象的多个包围盒。
在一些实施例中,该步骤包括:电子设备将两个相邻的目标轮廓点间的距离确定为矩形的第一边长,将参考距离确定为矩形的第二边长;根据第一边长和第二边长创建一个形状为矩形的包围盒,其中,两个相邻的目标轮廓点分别位于包围盒对边的中心位置。参考距离能够根据需要设置为任意数值,本公开实施例对此不做限制。
需要说明的一点是,相关技术中,原始目标对象的包围盒是一个最贴近原始目标对象的区域,原始目标对象的所有部分都位于包围盒中。图11为相关技术中的包围盒的示意图,参考图11,其中,原始目标对象为人物,该人物全部位于包围盒内。
在本公开实施例中,原始目标对象具有多个包围盒,且每个包围盒都是基于原始目标对象的相邻的目标轮廓点创建的,因此,该多个包围盒能够很好地贴合原始目标对象的轮廓。图12为本公开实施例中的包围盒的示意图。参考图12,其中,原始目标对象为人物,黑色的矩形区域表示包围盒,该人物具有多个包围盒,多个包围盒与人物的轮廓准确贴合。
在本公开实施例中,在基于原始目标对象的每两个相邻的目标轮廓点创建包围盒时,将包围盒创建为矩形,且两个相邻的目标轮廓点分别位于包围盒对边的中心位置,能够保证创建的多个包围盒更加贴合原始目标对象的轮廓。图13为一个包围盒的示意图。参考图13,该包围盒为矩形,“A”和“B”为相邻的两个目标轮廓点,分别位于矩形对边的中心位置。
需要说明的一点是,由于原始目标对象的轮廓可能为任意形状,因此,本公开实施例中的包围盒可能为任意方向。
在304中,电子设备将动态虚拟元素的包围盒与原始目标对象的每个包围盒进行碰撞检测。
其中,动态虚拟元素是在视频画面中添加的能够移动的虚拟元素。由于该动态虚拟元素在视频画面中的位置会发生变化,因此该动态虚拟元素可能与视频画面中的原始目标对象发生碰撞,因此需要检测动态虚拟元素与原始目标对象是否发生碰撞,例如,该动态虚拟元素为各种形象的贴纸等,本公开实施例对此不做限制。
碰撞检测是指检测动态虚拟元素的包围盒是否与原始目标对象的包围盒发生碰撞。进行碰撞检测包括下述步骤(C)-(D)。
(C)电子设备确定与原始目标对象的包围盒的每个边所在方向垂直的第一方向,以及确定与动态虚拟元素的包围盒的每个边所在方向垂直的第二方向。
参考图14,其中,两个矩形分别表示原始目标对象的包围盒和动态虚拟元素的包围盒,方向1、方向2为电子设备确定的两个第一方向,方向3以及方向4为电子设备确定的两个第二方向。
(D)电子设备将原始目标对象的包围盒和动态虚拟元素的包围盒投影到第一方向和第二方向上,响应于原始目标对象的包围盒的投影区域与动态虚拟元素的包围盒的投影区域在第一方向以及第二方向上都重叠,确定原始目标对象的包围盒与动态虚拟元素的包围盒发生碰撞。
需要说明的一点是,对于原始目标对象的任一的包围盒,需要将该原始目标对象的包围盒与动态虚拟元素的包围盒投影到第一方向和第二方向上,然后检测在第一方向和第二方向上,原始目标对象的包围盒的投影区域与动态虚拟元素的包围盒的投影区域是否重叠,响应于在第一方向和第二方向上都重叠,确定原始目标对象的包围盒与动态虚拟元素的包围盒发生碰撞。
在本公开实施例中,通过确定与原始目标对象的包围盒的每个边所在方向垂直的第一方向,以及与动态虚拟元素的包围盒的每个边所在方向垂直的第二方向,将原始目标对象的包围盒和动态虚拟元素的包围盒投影到第一方向和第二方向上,则如果原始目标对象的包围盒的投影区域与动态虚拟元素的包围盒的投影区域在第一方向或者第二方向不重叠,则说明原始目标对象的包围盒与动态虚拟对象的包围盒在这个方向是分离的,也即表明两个包围盒没有发生碰撞,而如果两个包围盒在第一方向和第二方向上都重叠,则表明不存在一个能够将两个包围盒隔离开的方向,也即表明两个包围盒发生碰撞,因此,上述方法能够准确判定两个包围盒之间是否发生碰撞。
需要说明的一点是,上述步骤(C)-(D)所描述的碰撞检测方法仅是一种示例性说明,在其他实施例中,能够通过其他方式来检测包围盒是否发生碰撞,本公开实施例对此不做限制。
在一种可能的实现方式中,在进行碰撞检测前,要先获取在视频画面中添加的动态虚拟元素的包围盒,相应的,电子设备识别视频画面中的动态虚拟元素对应的参考轮廓点;基于每两个相邻的参考轮廓点创建一个包围盒,得到动态虚拟元素的多个包围盒。其中,参考轮廓点为动态虚拟元素的轮廓线上的全部轮廓点或部分轮廓点。
需要说明的一点是,电子设备创建动态虚拟元素的包围盒的实现方式与创建原始目标对象的包围盒的实现方式同理,此处不再赘述。
在本公开实施例中,基于视频画面中添加的动态虚拟元素对应的多个参考轮廓点中每两个相邻的参考轮廓点创建一个包围盒,则能够为动态虚拟元素创建多个包围盒,该多个包围盒能够很好地贴合动态虚拟元素的轮廓,因此,基于该多个包围盒进行碰撞检测的结果能够准确反映动态虚拟元素是否与视频画面中的原始目标对象发生碰撞,保证了碰撞检测结果的准确性,提高了碰撞检测的精度。
需要说明的另一点是,在一些实施例中,能够按照参考运动轨迹在视频画面中添加动态虚拟元素,因此,当确定出动态虚拟元素在第一帧视频画面中的包围盒后,能够基于动态虚拟元素的运动轨迹确定其在之后的每一帧视频画面中的包围盒,而不需要在每一帧视频画面中都通过识别轮廓点的方式以重新创建包围盒,极大地提高了确定视频画面中动态虚拟元素的包围盒的效率,从而提高了碰撞检测的效率。
需要说明的再一点是,在动态虚拟元素具有多个包围盒的情况下,电子设备将动态虚拟元素的包围盒与原始目标对象的每个包围盒进行碰撞检测,包括:电子设备将动态虚拟元素的每个包围盒与原始目标对象的每个包围盒进行碰撞检测。
在305中,电子设备响应于动态虚拟元素的包围盒与原始目标对象的任一包围盒发生碰撞,确定原始目标对象与动态虚拟元素发生碰撞。
需要说明的一点是,在动态虚拟元素具有多个包围盒的情况下,动态虚拟元素的任一包围盒与原始目标对象的任一包围盒发生碰撞,电子设备则确定原始目标对象与动态虚拟元素发生碰撞。
在一些实施例中,电子设备在确定原始目标对象与动态虚拟对象发生碰撞后,还能够在视频画面中添加与原始目标对象以及动态虚拟元素对应的其他虚拟元素。例如,原始目标对象是人物,动态虚拟元素为标注有胖字的贴纸,则在确定该人物与该贴纸发生碰撞的情况下,在视频画面中添加人物的眼泪特效。又如,原始目标对象为气球,动态虚拟元素为钉子,则在确定该气球与钉子发生碰撞的情况下,在视频画面中添加气球破裂的特效等,本公开实施例对此不做限制。
在本公开实施例中,基于视频画面中原始目标对象对应的多个目标轮廓点中每两个相邻的目标轮廓点创建一个包围盒,则能够为原始目标对象创建多个包围盒,该多个包围盒能够很好地贴合原始目标对象的轮廓,因此,基于该多个包围盒进行碰撞检测的结果能够准确反映原始目标对象是否与视频画面中添加的动态虚拟元素发生碰撞,保证了碰撞检测结果的准确性,提高了碰撞检测的精度。
图15是根据一示例性实施例示出的一种视频处理装置的框图,如图15所示,该视频处理装置包括:
包围盒获取单元1501,被配置为执行获取在视频画面中添加的动态虚拟元素的包围盒;
轮廓点识别单元1502,被配置为执行识别视频画面中的原始目标对象对应的目标轮廓点,目标轮廓点为原始目标对象的轮廓线上的全部轮廓点或部分轮廓点;
包围盒创建单元1503,被配置为执行基于每两个相邻的目标轮廓点创建一个包围盒,得到原始目标对象的多个包围盒;
碰撞检测单元1504,被配置为执行将动态虚拟元素的包围盒与原始目标对象的每个包围盒进行碰撞检测;
碰撞确定单元1505,被配置为执行响应于动态虚拟元素的包围盒与原始目标对象的任一包围盒发生碰撞,确定动态虚拟元素与原始目标对象发生碰撞。
在一种可能的实现方式中,轮廓点识别单元1502,包括:
轮廓点查询子单元,被配置为执行逐个遍历视频画面的像素点,从视频画面的像素点中查询满足轮廓条件的像素点作为原始轮廓点;
轮廓点提取子单元,被配置为执行从查询的原始轮廓点中,每隔第一参考数量的原始轮廓点提取第二参考数量的目标轮廓点,得到目标轮廓点。
在另一种可能的实现方式中,轮廓点查询子单元,被配置为执行逐个遍历视频画面中的像素点,响应于当前遍历的像素点是与原始目标对象对应的像素点,并且与当前遍历的像素点相邻的上一个遍历的像素点不是与原始目标对象对应的像素点,将当前遍历的像素点确定为第一个原始轮廓点;基于第一个原始轮廓点继续查询其他的原始轮廓点。
在另一种可能的实现方式中,轮廓点查询子单元,被配置为执行在第一个原始轮廓点的八邻域内的像素点中,从任一像素点开始,沿着第一参考方向逐个遍历像素点,将当前遍历的满足轮廓条件的像素点确定为结束点;在第一个原始轮廓点的八邻域内的像素点中,从第一像素点开始,沿着第二参考方向逐个遍历像素点,将当前遍历的满足轮廓条件的像素点确定为第二个原始轮廓点,第一像素点是从结束点开始,在第一个原始轮廓点的八邻域内的像素点中,沿着第二参考方向移动而到达的像素点;循环执行如下步骤:在当前确定的原始轮廓点的八邻域内的像素点中,从第二像素点开始,沿着第二参考方向逐个遍历像素点,将当前遍历的满足轮廓条件的像素点确定为下一个原始轮廓点,直至在确定的下一个原始轮廓点为结束点时停止循环,第二像素点是从前一个原始轮廓点开始,在当前确定的原始轮廓点的八邻域内的像素点中,沿着第二参考方向移动而到达的像素点;其中,第一参考方向和第二参考方向为顺时针方向或逆时针方向,且第二参考方向与第一参考方向不同。
在另一种可能的实现方式中,轮廓点查询子单元,被配置为执行在第一个原始轮廓点的八邻域内的像素点中,从任一像素点开始,沿着第一参考方向逐个遍历像素点,将当前遍历的满足轮廓条件的像素点确定为第二个原始轮廓点,第一参考方向为顺时针方向或逆时针方向;循环执行如下步骤:在当前确定的原始轮廓点的八邻域内的像素点中,从第二像素点开始,沿着第一参考方向逐个遍历像素点,将当前遍历的满足轮廓条件的像素点确定为下一个原始轮廓点,直至在当前遍历的像素点为第一个原始轮廓点时停止循环,第二像素点是从前一个原始轮廓点开始,在当前确定的原始轮廓点的八邻域内的像素点中,沿着第二参考方向移动而到达的像素点。
在另一种可能的实现方式中,轮廓点识别单元1502,被配置为执行对包含原始目标对象的视频画面进行二值化处理,得到掩膜图像,其中,掩膜图像中原始目标对象对应的像素点的像素值为第一像素值;从掩膜图像的像素点中,识别目标轮廓点。
在另一种可能的实现方式中,包围盒创建单元1503,被配置为执行将两个相邻的目标轮廓点间的距离确定为矩形的第一边长,将参考距离确定为矩形的第二边长;根据第一边长和第二边长创建一个形状为矩形的包围盒,两个相邻的目标轮廓点分别位于包围盒对边的中心位置。
在另一种可能的实现方式中,包围盒获取单元1501,被配置为执行识别视频画面中的动态虚拟元素对应的参考轮廓点,参考轮廓点为动态虚拟元素的轮廓线上的全部轮廓点或部分轮廓点;基于每两个相邻的参考轮廓点创建一个包围盒,得到动态虚拟元素的多个包围盒;
碰撞检测单元1504,被配置为执行将动态虚拟元素的每个包围盒与原始目标对象的每个包围盒进行碰撞检测。
在另一种可能的实现方式中,碰撞检测单元1504,被配置为执行确定与原始目标对象的包围盒的每个边所在方向垂直的第一方向,以及与动态虚拟元素的包围盒的每个边所在方向垂直的第二方向;将原始目标对象的包围盒和动态虚拟元素的包围盒投影到第一方向和第二方向上;响应于原始目标对象的包围盒的投影区域与动态虚拟元素的包围盒的投影区域在第一方向以及第二方向上都重叠,确定原始目标对象的包围盒与动态虚拟元素的包围盒发生碰撞。
本公开实施例提供的技术方案,基于视频画面中原始目标对象对应的多个目标轮廓点中每两个相邻的目标轮廓点创建一个包围盒,则能够为原始目标对象创建多个包围盒,该多个包围盒能够很好地贴合原始目标对象的轮廓,因此,基于该多个包围盒进行碰撞检测的结果能够准确反映原始目标对象是否与视频画面中添加的动态虚拟元素发生碰撞,保证了碰撞检测结果的准确性,提高了碰撞检测的精度。
需要说明的是:上述实施例提供的视频处理装置在进行视频处理时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将电子设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的视频处理装置与视频处理方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
本公开实施例还提供了一种电子设备,该电子设备包括一个或多个处理器,和用于存储一个或多个处理器可执行指令的易失性或非易失性存储器,一个或多个处理器被配置为执行上述实施例的视频处理方法。
例如,该电子设备提供为终端。图16示出了本申请一个示例性实施例提供的终端1600的结构示意图。该终端1600可以是:智能手机、平板电脑、MP3播放器(Moving PictureExperts Group Audio Layer III,动态影像专家压缩标准音频层面3)、MP4(MovingPicture Experts Group Audio Layer IV,动态影像专家压缩标准音频层面4)播放器、笔记本电脑或台式电脑。终端1600还可能被称为用户设备、便携式终端、膝上型终端、台式终端等其他名称。
终端1600包括有:处理器1601和存储器1602。
处理器1601可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器1601可以采用DSP(Digital Signal Processing,数字信号处理)、FPGA(Field-Programmable Gate Array,现场可编程门阵列)、PLA(Programmable Logic Array,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器1601也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称CPU(Central ProcessingUnit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器1601可以集成有GPU(Graphics Processing Unit,图像处理器),GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器1601还可以包括AI(Artificial Intelligence,人工智能)处理器,该AI处理器用于处理有关机器学习的计算操作。
存储器1602可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器1602还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。在一些实施例中,存储器1602中的非暂态的计算机可读存储介质用于存储至少一个程序代码,该至少一个程序代码用于被处理器1601所执行以实现本申请中方法实施例提供的视频处理方法。
在一些实施例中,终端1600还可选包括有:外围设备接口1603和至少一个外围设备。处理器1601、存储器1602和外围设备接口1603之间可以通过总线或信号线相连。各个外围设备可以通过总线、信号线或电路板与外围设备接口1603相连。具体地,外围设备包括:射频电路1604、显示屏1605、摄像头组件1606、音频电路1607、定位组件1608和电源1609中的至少一种。
外围设备接口1603可被用于将I/O(Input/Output,输入/输出)相关的至少一个外围设备连接到处理器1601和存储器1602。在一些实施例中,处理器1601、存储器1602和外围设备接口1603被集成在同一芯片或电路板上;在一些其他实施例中,处理器1601、存储器1602和外围设备接口1603中的任意一个或两个可以在单独的芯片或电路板上实现,本实施例对此不加以限定。
射频电路1604用于接收和发射RF(Radio Frequency,射频)信号,也称电磁信号。射频电路1604通过电磁信号与通信网络以及其他通信设备进行通信。射频电路1604将电信号转换为电磁信号进行发送,或者,将接收到的电磁信号转换为电信号。例如,射频电路1604包括:天线系统、RF收发器、一个或多个放大器、调谐器、振荡器、数字信号处理器、编解码芯片组、用户身份模块卡等等。射频电路1604可以通过至少一种无线通信协议来与其它终端进行通信。该无线通信协议包括但不限于:城域网、各代移动通信网络(2G、3G、4G及5G)、无线局域网和/或WiFi(Wireless Fidelity,无线保真)网络。在一些实施例中,射频电路1604还可以包括NFC(Near Field Communication,近距离无线通信)有关的电路,本申请对此不加以限定。
显示屏1605用于显示UI(User Interface,用户界面)。该UI可以包括图形、文本、图标、视频及其它们的任意组合。当显示屏1605是触摸显示屏时,显示屏1605还具有采集在显示屏1605的表面或表面上方的触摸信号的能力。该触摸信号可以作为控制信号输入至处理器1601进行处理。此时,显示屏1605还可以用于提供虚拟按钮和/或虚拟键盘,也称软按钮和/或软键盘。在一些实施例中,显示屏1605可以为一个,设置终端1600的前面板;在另一些实施例中,显示屏1605可以为至少两个,分别设置在终端1600的不同表面或呈折叠设计;在另一些实施例中,显示屏1605可以是柔性显示屏,设置在终端1600的弯曲表面上或折叠面上。甚至,显示屏1605还可以设置成非矩形的不规则图形,也即异形屏。显示屏1605可以采用LCD(Liquid Crystal Display,液晶显示屏)、OLED(Organic Light-Emitting Diode,有机发光二极管)等材质制备。
摄像头组件1606用于采集图像或视频。例如,摄像头组件1606包括前置摄像头和后置摄像头。前置摄像头设置在终端的前面板,后置摄像头设置在终端的背面。在一些实施例中,后置摄像头为至少两个,分别为主摄像头、景深摄像头、广角摄像头、长焦摄像头中的任意一种,以实现主摄像头和景深摄像头融合实现背景虚化功能、主摄像头和广角摄像头融合实现全景拍摄以及VR(Virtual Reality,虚拟现实)拍摄功能或者其它融合拍摄功能。在一些实施例中,摄像头组件1606还可以包括闪光灯。闪光灯可以是单色温闪光灯,也可以是双色温闪光灯。双色温闪光灯是指暖光闪光灯和冷光闪光灯的组合,可以用于不同色温下的光线补偿。
音频电路1607可以包括麦克风和扬声器。麦克风用于采集用户及环境的声波,并将声波转换为电信号输入至处理器1601进行处理,或者输入至射频电路1604以实现语音通信。出于立体声采集或降噪的目的,麦克风可以为多个,分别设置在终端1600的不同部位。麦克风还可以是阵列麦克风或全向采集型麦克风。扬声器则用于将来自处理器1601或射频电路1604的电信号转换为声波。扬声器可以是传统的薄膜扬声器,也可以是压电陶瓷扬声器。当扬声器是压电陶瓷扬声器时,不仅可以将电信号转换为人类可听见的声波,也可以将电信号转换为人类听不见的声波以进行测距等用途。在一些实施例中,音频电路1607还可以包括耳机插孔。
定位组件1608用于定位终端1600的当前地理位置,以实现导航或LBS(LocationBased Service,基于位置的服务)。定位组件1608可以是基于美国的GPS(GlobalPositioning System,全球定位系统)、中国的北斗系统、俄罗斯的格雷纳斯系统或欧盟的伽利略系统的定位组件。
电源1609用于为终端1600中的各个组件进行供电。电源1609可以是交流电、直流电、一次性电池或可充电电池。当电源1609包括可充电电池时,该可充电电池可以支持有线充电或无线充电。该可充电电池还可以用于支持快充技术。
在一些实施例中,终端1600还包括有一个或多个传感器1610。该一个或多个传感器1610包括但不限于:加速度传感器1611、陀螺仪传感器1612、压力传感器1613、指纹传感器1614、光学传感器1615以及接近传感器1616。
加速度传感器1611可以检测以终端1600建立的坐标系的三个坐标轴上的加速度大小。比如,加速度传感器1611可以用于检测重力加速度在三个坐标轴上的分量。处理器1601可以根据加速度传感器1611采集的重力加速度信号,控制显示屏1605以横向视图或纵向视图进行用户界面的显示。加速度传感器1611还可以用于游戏或者用户的运动数据的采集。
陀螺仪传感器1612可以检测终端1600的机体方向及转动角度,陀螺仪传感器1612可以与加速度传感器1611协同采集用户对终端1600的3D动作。处理器1601根据陀螺仪传感器1612采集的数据,可以实现如下功能:动作感应(比如根据用户的倾斜操作来改变UI)、拍摄时的图像稳定、游戏控制以及惯性导航。
压力传感器1613可以设置在终端1600的侧边框和/或显示屏1605的下层。当压力传感器1613设置在终端1600的侧边框时,可以检测用户对终端1600的握持信号,由处理器1601根据压力传感器1613采集的握持信号进行左右手识别或快捷操作。当压力传感器1613设置在显示屏1605的下层时,由处理器1601根据用户对显示屏1605的压力操作,实现对UI界面上的可操作性控件进行控制。可操作性控件包括按钮控件、滚动条控件、图标控件、菜单控件中的至少一种。
指纹传感器1614用于采集用户的指纹,由处理器1601根据指纹传感器1614采集到的指纹识别用户的身份,或者,由指纹传感器1614根据采集到的指纹识别用户的身份。在识别出用户的身份为可信身份时,由处理器1601授权该用户执行相关的敏感操作,该敏感操作包括解锁屏幕、查看加密信息、下载软件、支付及更改设置等。指纹传感器1614可以被设置终端1600的正面、背面或侧面。当终端1600上设置有物理按键或厂商Logo时,指纹传感器1614可以与物理按键或厂商Logo集成在一起。
光学传感器1615用于采集环境光强度。在一个实施例中,处理器1601可以根据光学传感器1615采集的环境光强度,控制显示屏1605的显示亮度。具体地,当环境光强度较高时,调高显示屏1605的显示亮度;当环境光强度较低时,调低显示屏1605的显示亮度。在另一个实施例中,处理器1601还可以根据光学传感器1615采集的环境光强度,动态调整摄像头组件1606的拍摄参数。
接近传感器1616,也称距离传感器,设置在终端1600的前面板。接近传感器1616用于采集用户与终端1600的正面之间的距离。在一个实施例中,当接近传感器1616检测到用户与终端1600的正面之间的距离逐渐变小时,由处理器1601控制显示屏1605从亮屏状态切换为息屏状态;当接近传感器1616检测到用户与终端1600的正面之间的距离逐渐变大时,由处理器1601控制显示屏1605从息屏状态切换为亮屏状态。
本领域技术人员可以理解,图16中示出的结构并不构成对终端1600的限定,可以包括比图示更多或更少的组件,或者组合某些组件,或者采用不同的组件布置。
例如,该电子设备提供为服务器。图17是本申请实施例提供的一种服务器的结构示意图,该服务器1700可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(central processing units,CPU)1701和一个或一个以上的存储器1702,其中,所述存储器1702中存储有至少一条程序代码,所述至少一条程序代码由所述处理器1701加载并执行以实现上述各个方法实施例提供的视频处理方法。当然,该服务器还可以具有有线或无线网络接口、键盘以及输入输出接口等部件,以便进行输入输出,该服务器还可以包括其他用于实现设备功能的部件,在此不做赘述。
在示例性实施例中,还提供了一种计算机可读存储介质,例如包括程序代码的存储器,上述程序代码可由电子设备中的处理器执行以完成上述实施例中的视频处理方法。例如,计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
在示例性实施例中,还提供了一种计算机程序产品,包括计算机程序,计算机程序被处理器执行时实现上述实施例中的视频处理方法。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为例如,本公开的真正范围和精神由下面的权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。
- 视频处理方法、视频处理装置、电子设备及存储介质
- 视频处理方法、视频处理装置、存储介质与电子设备