一种全景图像的识别方法、装置、终端设备和存储介质
技术领域
本发明涉及图像识别技术领域,尤其涉及一种全景图像的识别方法、装置、终端设备和存储介质。
背景技术
全景图像指能给人三维立体感觉的实景全方位图像,已经在VR等技术领域获得广泛的应用。而随着全景图像应用的推广,如何对全景图像进行识别成为技术人员需要考虑的问题。
目前,识别一幅图像是否为全景图像的方法主要通过判断该图像最左一列像素点的RGB值和最右一列像素点的RGB值的差值是否小于预设阈值,以确定该图像最左端和最右端的像素点是否符合同一行像素点一致的条件,从而判断该图像是否为全景图像。然而,对于存在噪点或者图像中部分像素出现列方向偏移的全景图像来说,采用上述方法进行识别的准确率很低。
发明内容
有鉴于此,本发明实施例提供了一种全景图像的识别方法、装置、终端设备和存储介质,能够大大提高全景图像识别的准确率。
本发明实施例的第一方面提供了一种全景图像的识别方法,包括:
获取待识别的目标图像;
根据所述目标图像的第一行像素点的亮度值计算所述第一行像素点之间的亮度值偏差程度;
根据所述目标图像的最后一行像素点的亮度值计算所述最后一行像素点之间的亮度值偏差程度;
若所述第一行像素点对应的亮度值偏差程度和所述最后一行像素点对应的亮度值偏差程度均小于预设的第一阈值,则执行以下步骤:
根据预设的规则从所述目标图像最左边的指定数量像素列内选取多个在列方向上相差指定距离的左端范围区域,所述左端范围区域在行方向上的长度大于或等于一个像素点,且在列方向上的长度大于或等于一个像素点,所述指定距离小于所述左端范围区域在列方向上的长度;
从所述目标图像最右边的指定数量像素列内选取多个右端范围区域,各个所述右端范围区域分别与各个所述左端范围区域在行方向上一一对齐;
统计所述目标图像的不可拼接数,所述不可拼接数为各个所述左端范围区域中第一左端范围区域的数量,其中所述第一左端范围区域为与在行方向上对齐的右端范围区域之间的区域亮度值存在突变、且与在列方向上相邻的左端范围区域之间的区域亮度值不存在突变的左端范围区域;
若所述不可拼接数小于预设的第二阈值,则判定所述目标图像为全景图像。
本发明实施例的第二方面提供了一种全景图像的识别装置,包括:
目标图像获取模块,用于获取待识别的目标图像;
第一亮度值偏差程度计算模块,用于根据所述目标图像的第一行像素点的亮度值计算所述第一行像素点之间的亮度值偏差程度;
第二亮度值偏差程度计算模块,用于根据所述目标图像的最后一行像素点的亮度值计算所述最后一行像素点之间的亮度值偏差程度;
左端范围区域选取模块,用于若所述第一行像素点对应的亮度值偏差程度和所述最后一行像素点对应的亮度值偏差程度均小于预设的第一阈值,则根据预设的规则从所述目标图像最左边的指定数量像素列内选取多个在列方向上相差指定距离的左端范围区域,所述左端范围区域在行方向上的长度大于或等于一个像素点,且在列方向上的长度大于或等于一个像素点,所述指定距离小于所述左端范围区域在列方向上的长度;
右端范围区域选取模块,用于从所述目标图像最右边的指定数量像素列内选取多个右端范围区域,各个所述右端范围区域分别与各个所述左端范围区域在行方向上一一对齐;
不可拼接数统计模块,用于统计所述目标图像的不可拼接数,所述不可拼接数为各个所述左端范围区域中第一左端范围区域的数量,其中所述第一左端范围区域为与在行方向上对齐的右端范围区域之间的区域亮度值存在突变、且与在列方向上相邻的左端范围区域之间的区域亮度值不存在突变的左端范围区域;
判定模块,用于若所述不可拼接数小于预设的第二阈值,则判定所述目标图像为全景图像。
本发明实施例的第三方面提供了一种终端设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如本发明实施例的第一方面提供的全景图像的识别方法的步骤。
本发明实施例的第四方面提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如本发明实施例的第一方面提供的全景图像的识别方法的步骤。
在本发明实施例中,获取待识别的目标图像;根据所述目标图像的第一行像素点和最后一行像素点的亮度值分别计算亮度值偏差程度;若所述第一行像素点和最后一行像素点的亮度值偏差程度均小于预设的第一阈值,则执行以下步骤:根据预设的规则从所述目标图像最左边的指定数量像素列内选取多个在列方向上相差指定距离的左端范围区域;从所述目标图像最右边的指定数量像素列内选取多个右端范围区域,各个所述右端范围区域分别与各个所述左端范围区域在行方向上一一对齐;统计所述目标图像的不可拼接数,所述不可拼接数为各个所述左端范围区域中第一左端范围区域的数量,所述第一左端范围区域与在行方向上对齐的右端范围区域之间的区域亮度值存在突变,且与在列方向上相邻的左端范围区域之间的区域亮度值不存在突变;最后根据所述不可拼接数是否大于预设的阈值来判定所述目标图像是否为全景图像。上述过程首先利用全景图像上下两端各个像素点的亮度值应当趋于一致的特点,通过计算目标图像上下两端像素点的亮度值偏差程度进行第一次全景图像识别,然后根据目标图像左右端预设区域内像素点的亮度值分布规律进行第二次全景图像识别,通过两次识别提高全景图像识别的准确率。而且,在第二次全景图像识别中是判断区域的亮度值是否存在突变,能够有效消除个别噪点或像素点列偏移带来的不良影响,进而能有效提高存在噪点或者图像中部分像素出现列方向偏移的全景图像的识别准确率。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种全景图像的识别方法的第一个实施例的流程图;
图2是本发明实施例提供的一种全景图像的识别方法的第二个实施例的流程图;
图3是本发明实施例提供的一种全景图像的识别方法的第三个实施例的流程图;
图4是本发明实施例提供的一种全景图像的识别装置的一个实施例的结构图;
图5是本发明实施例提供的一种终端设备的示意图。
具体实施方式
以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本发明实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本发明。在其它情况中,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本发明的描述。
本发明实施例提供了一种全景图像的识别方法、装置、终端设备和存储介质,能够大大提高全景图像识别的准确率。
请参阅图1,本发明实施例中一种全景图像的识别方法的第一个实施例包括:
101、获取待识别的目标图像;
所述目标图像为待识别的图像,可能是全景图像,也可能是非全景图像。
102、根据所述目标图像的第一行像素点的亮度值计算所述第一行像素点之间的亮度值偏差程度;
在获取到所述目标图像之后,根据所述目标图像的第一行像素点的亮度值计算所述第一行像素点之间的亮度值偏差程度。所述第一行像素点之间的亮度值偏差程度指第一行像素点中各个像素点的亮度值之间的偏差程度,具体的,可以将各个所述像素点的亮度值方差的平均值作为所述亮度值偏差程度。
103、根据所述目标图像的最后一行像素点的亮度值计算所述最后一行像素点之间的亮度值偏差程度;
在获取到所述目标图像之后,根据所述目标图像的最后一行像素点的亮度值计算所述最后一行像素点之间的亮度值偏差程度。所述最后一行像素点之间的亮度值偏差程度指最后一行像素点中各个像素点的亮度值之间的偏差程度,具体的,可以将各个所述像素点的亮度值方差的平均值作为所述亮度值偏差程度。
104、判断第一行像素点之间的亮度值偏差程度和所述最后一行像素点之间的亮度值偏差程度是否均小于预设的第一阈值;
在计算得到所述第一行像素点之间的亮度值偏差程度和所述最后一行像素点之间的亮度值偏差程度之后,判断它们是否均小于预设的第一阈值。所述第一阈值可以是根据实验测试结果预设的任何数值,比如可以为最大亮度值255的15%的平方,即(255*15%)2=1463。
若所述第一行像素点对应的亮度值偏差程度和所述最后一行像素点对应的亮度值偏差程度均小于所述第一阈值,则执行步骤106至109;若所述第一行像素点对应的亮度值偏差程度大于或等于所述第一阈值,或所述最后一行像素点对应的亮度值偏差程度大于或等于所述第一阈值,则可以执行步骤105,也可以执行其他预设的步骤。
105、判定所述目标图像为非全景图像;
全景图像的第一行像素点和最后一行像素点分别都属于一个像素点展开形成的一行像素点,因此它们应当具有相同或相近的亮度值,即它们的亮度值偏差程度应当极小。因此,若目标图像中所述第一行像素点对应的亮度值偏差程度大于或等于所述第一阈值,或所述最后一行像素点对应的亮度值偏差程度大于或等于所述第一阈值,则可直接判定所述目标图像为非全景图像。
106、根据预设的规则从所述目标图像最左边的指定数量像素列内选取多个在列方向上相差指定距离的左端范围区域;
若所述第一行像素点对应的亮度值偏差程度和所述最后一行像素点对应的亮度值偏差程度均小于所述第一阈值,则说明所述目标图像可能是全景图像,此时继续执行后续的识别步骤。
后续的识别步骤首先根据预设的规则从所述目标图像最左边的指定数量像素列内选取多个在列方向上相差指定距离的左端范围区域,所述最左边的指定数量像素列指所述目标图像从最左边数起的指定数量的像素列,比如最左边的5列像素。所述左端范围区域在行方向上的长度大于或等于一个像素点,且在列方向上的长度大于或等于一个像素点,所述指定距离小于所述左端范围区域在列方向上的长度。比如,某个左端范围区域为4*4像素的区域,其与相邻的其它左端范围区域在列方向上的指定距离是1个像素点。需要说明的是,各个所述左端范围区域的大小可以相同,也可以不同;所述指定距离可以是某一左端范围区域的下端和下方相邻左端范围区域的上端之间的距离(表示两个区域无重叠),也可以是是某一左端范围区域的上端和下方相邻左端范围区域的上端之间的距离(表示两个区域可能有重叠)。为提高图像识别的准确度,可以使得选取出的所有左端范围区域叠加后能够完整覆盖所述目标图像最左边的指定数量像素列。
107、从所述目标图像最右边的指定数量像素列内选取多个右端范围区域,各个所述右端范围区域分别与各个所述左端范围区域在行方向上一一对齐;
在确定好各个左端范围区域后,从所述目标图像最右边的指定数量像素列内选取多个右端范围区域,各个右端范围区域分别与各个左端范围区域对应,且在行方向上一一对齐。由于在行方向上对齐,因此右端范围区域与对应的左端范围区域具有相同数量的像素行,即在列方向上的长度相同。所述最右边的指定数量像素列指所述目标图像从最右边数起的指定数量的像素列,比如最右边的5列像素。
108、统计所述目标图像的不可拼接数;
在确定好所有左端范围区域和对应的右端范围区域后,统计所述目标图像的不可拼接数。所述不可拼接数为各个所述左端范围区域中第一左端范围区域的数量,其中所述第一左端范围区域为与在行方向上对齐的右端范围区域之间的区域亮度值存在突变、且与在列方向上相邻的左端范围区域之间的区域亮度值不存在突变的左端范围区域。所述区域亮度值表示某个区域的亮度值大小,可以是该区域中所有像素点的亮度值的平均值,也可以是该区域中所有像素点的亮度值的叠加值等其它可以表征亮度值大小的数值。若所述第一左端范围区域与在行方向上对齐的右端范围区域之间的区域亮度值存在突变,则说明它们之间的区域亮度值存在较大的差别;若所述第一左端范围区域与在列方向上相邻的左端范围区域之间的区域亮度值不存在突变,则说明它们之间的区域亮度值基本相同。
进一步的,所述各个左端范围区域中任意一个左端范围区域与在行方向上对齐的右端范围区域之间的区域亮度值是否存在突变可以通过以下步骤确定:
(1)利用预设大小的模板区域在所述任意一个左端范围区域和在行方向上对齐的右端范围区域之间沿行方向进行两次以上的单向滑动,每次滑动一个像素点以上的距离,滑动时将所述左端范围区域的最左端作为所述右端范围区域的最右端、并使得所述模板区域包括所述任意一个左端范围区域的最左端的一列像素点和所述在行方向上对齐的右端范围区域的最右端的一列像素点,所述模板区域在行方向上的长度大于或等于两个像素点、且在列方向上的长度大于或等于两个像素点;
(2)依次获取所述模板区域处于各个滑动位置时对应的各个第一目标区域亮度值;
(3)若所述各个第一目标区域亮度值之间依次递增或递减,则确定所述任意一个左端范围区域与在行方向上对齐的右端范围区域之间的区域亮度值存在突变;
(4)若所述各个第一目标区域亮度值之间不存在依次递增或递减的关系,则确定所述任意一个左端范围区域与在行方向上对齐的右端范围区域之间的区域亮度值不存在突变。
在上述步骤(1)中,所述模板区域滑动时将所述左端范围区域的最左端作为所述右端范围区域的最右端,即所述模板区域向左滑动出所述左端范围区域时会从所述右端范围区域的右端向左滑动入所述右端范围区域,所述模板区域向右滑动出所述右端范围区域时会从所述左端范围区域的左端向右滑动入所述左端范围区域。在滑动时使得所述模板区域包括所述任意一个左端范围区域的最左端的一列像素点和所述对应的右端范围区域的最右端的一列像素点,即保证所述模板区域时刻包含所述目标图像左右两端的部分像素点。
对于上述步骤(2)至(4),依次获取所述模板区域处于各个滑动位置时对应的各个第一目标区域亮度值,其中某个第一目标区域亮度值为该模板区域处于某个滑动位置时所覆盖区域的区域亮度值。若所述各个第一目标区域亮度值之间依次递增或递减,则可说明从所述左端范围区域到在行方向上对齐的右端范围区域之间的区域亮度值存在突变。若所述各个第一目标区域亮度值之间不存在依次递增或递减的关系,则可说明所述任意一个左端范围区域与在行方向上对齐的右端范围区域之间的区域亮度值不存在突变。
具体的,可以根据各个所述第一目标区域亮度值之间的比值来判断它们之间是否依次递增或递减。假设依次获取到A、B和C共3个所述第一目标区域亮度值,若A与B的比值大于等于某个预设的数值,且B与C的比值大于等于所述数值,则可以判定A、B和C之间依次递减;若C与B的比值大于等于所述数值,且B与A的比值大于等于所述数值,则可以判定A、B和C之间依次递增,所述数值可以是大于1的任意常数,比如为1.1。对于数量更多的第一目标区域亮度值来说,可以通过相同的方法判断它们之间是否存在突变。
进一步的,所述各个左端范围区域中任意一个左端范围区域与在列方向上相邻的左端范围区域之间的区域亮度值是否存在突变通过以下步骤确定:
(1)利用预设大小的模板区域在所述任意一个左端范围区域和在行方向上对齐的右端范围区域之间沿列方向进行两次以上的单向滑动,每次滑动一个像素以上的距离,滑动时将所述左端范围区域的最左端作为所述右端范围区域的最右端,所述模板区域包括所述任意一个左端范围区域的最左端的一列像素点和所述在行方向上对齐的右端范围区域的最右端的一列像素点,所述模板区域在行方向上的长度大于或等于两个像素点、且在列方向上的长度大于或等于两个像素点;
(2)依次获取所述模板区域处于各个滑动位置时对应的各个第二目标区域亮度值;
(3)若所述各个第二目标区域亮度值中两两之间的比值均落入预设的第一数值和所述第一数值的倒数之间构成的数值范围区间内,则确定所述任意一个左端范围区域与在列方向上相邻的左端范围区域之间的区域亮度值不存在突变;
(4)若所述各个第二目标区域亮度值中两两之间的比值不是均落入所述数值范围区间内,则确定所述任意一个左端范围区域与在列方向上相邻的左端范围区域之间的区域亮度值存在突变。
在上述步骤(1)中,所述模板区域包括所述任意一个左端范围区域的最左端的一列像素点和所述在行方向上对齐的右端范围区域的最右端的一列像素点,即包含所述目标图像左右两端的部分像素点。所述模板区域在行方向上的长度大于或等于两个像素点、且在列方向上的长度大于或等于两个像素点。
对于上述步骤(2)至(4),依次获取所述模板区域处于各个滑动位置时对应的各个第二目标区域亮度值,其中某个第二目标区域亮度值为该模板区域处于某个滑动位置时所覆盖区域的区域亮度值。若所述各个第二目标区域亮度值中两两之间的比值均落入预设的第一数值和所述第一数值的倒数之间构成的数值范围区间内,则说明所述任意一个左端范围区域与在列方向上相邻的左端范围区域之间的区域亮度值不存在突变。若所述各个第二目标区域亮度值中两两之间的比值不是均落入所述数值范围区间内,则说明所述任意一个左端范围区域与在列方向上相邻的左端范围区域之间的区域亮度值存在突变。所述第一数值为大于0的常数,比如可以设为1.1。假设所述目标区域在列方向上滑动时依次获取到A、B和C共3个所述第二目标区域亮度值,若它们中任意两两之间的比值均落入预设的第一数值和所述第一数值的倒数之间构成的数值范围区间(比如[0.91,1.1])内,则可判定对应的左端范围区域与在列方向上相邻的左端范围区域之间的区域亮度值不存在突变,而对于数量更多的第二目标区域亮度值来说,可以通过相同的方法进行判断。
依次判断完所有所述左端范围区域之后,就可以得到第一左端范围区域的数量,即所述目标图像的不可拼接数。
109、判断所述不可拼接数是否大于或等于预设的第二阈值;
在得到目标图像的不可拼接数之后,判断所述不可拼接数是否大于或等于预设的第二阈值。所述第二阈值可以是根据实验测试结果预设的任何数值,比如可以为目标图像宽度的15%,假设目标图像的宽度为256个像素点,则所述第二阈值可以设为256*15%=38。若所述不可拼接数小于所述第二阈值,则执行步骤110;若所述不可拼接数大于或等于预设的第二阈值,则可以执行步骤105,对于全景图像来说,其最左端和最右端的像素列应当是可以拼接的,从而得到所述左端范围区域和对应的右端范围区域之间的区域亮度值应当不存在突变,因此若所述不可拼接数大于或等于预设的第二阈值,则说明目标图像的各个左端范围区域和在行方向上对齐的右端范围区域之间的区域亮度值中存在突变的比例过大,即可判定所述目标图像为非全景图像。
110、判定所述目标图像为全景图像。
若所述不可拼接数小于所述第二阈值,则说明目标图像的各个左端范围区域和在行方向上对齐的右端范围区域之间的区域亮度值中存在突变的比例较小,所述目标图像的左右两端是可以拼接的,从而判定所述目标图像为全景图像。
在实际应用中,采用本发明实施例提出的全景图像识别方法进行全景图像识别的准确率高、鲁棒性强,对于目标图片最左、最右端像素出现列方向偏移、噪点等情况,都能很好的处理。另外,识别树林、草丛、波浪等带有类似波纹的目标图片也具有很高的准确率。
在本发明实施例中,获取待识别的目标图像;根据所述目标图像的第一行像素点和最后一行像素点的亮度值分别计算亮度值偏差程度;若所述第一行像素点或最后一行像素点的亮度值偏差程度大于或等于预设的第一阈值,则可判定所述目标图像为非全景图像;若所述第一行像素点和最后一行像素点的亮度值偏差程度均小于所述第一阈值,则执行以下步骤:根据预设的规则从所述目标图像最左边的指定数量像素列内选取多个在列方向上相差指定距离的左端范围区域;从所述目标图像最右边的指定数量像素列内选取多个右端范围区域,各个所述右端范围区域分别与各个所述左端范围区域在行方向上一一对齐;统计所述目标图像的不可拼接数,所述不可拼接数为各个所述左端范围区域中第一左端范围区域的数量,其中所述第一左端范围区域为与在行方向上对齐的右端范围区域之间的区域亮度值存在突变,且与在列方向上相邻的左端范围区域之间的区域亮度值不存在突变的左端范围区域;最后根据所述不可拼接数是否大于预设的阈值来判定所述目标图像是否为全景图像。上述过程首先利用全景图像上下两端各个像素点的亮度值应当趋于一致的特点,通过计算目标图像上下两端像素点的亮度值偏差程度进行第一次全景图像识别,然后根据目标图像左右端预设区域内像素点的亮度值分布规律进行第二次全景图像识别,通过两次识别提高全景图像识别的准确率。而且,在第二次全景图像识别中是判断区域的亮度值是否存在突变,能够有效消除个别噪点或像素点列偏移带来的不良影响,进而能有效提高存在噪点或者图像中部分像素出现列方向偏移的全景图像的识别准确率。
请参阅图2,本发明实施例中一种全景图像的识别方法的第二个实施例包括:
201、获取待识别的目标图像;
步骤201与步骤101相同,具体可参照步骤101的相关说明。
202、若所述目标图像的大小尺寸超过预设的阈值,则将所述目标图像压缩至指定的大小尺寸;
步骤202判断目标图像的大小尺寸是否超过预设的阈值,若超过预设的阈值,则将所述目标图像压缩至指定的大小尺寸。所述指定的大小尺寸是预设的一个大小尺寸,比如可以设置为较为常见的256*256的图像。由于本发明实施例提供的全景图像识别方法涉及像素点亮度值的计算,若所述目标图像太大会造成计算量过大,影响处理效率,因此可以先将目标图像进行压缩(合理的图像压缩不会影响图像的亮度值特征,因而不会影响全景图像识别的准确性),以减小计算量,提高图像识别的效率。
203、分别获取所述目标图像中第一行像素点的RGB值和最后一行像素点的RGB值;
由于图像的RGB值就包含了亮度值特征,因此可以分别获取所述目标图像中第一行像素点的RGB值和最后一行像素点的RGB值,以进行后续的亮度值计算步骤。
204、将所述第一行像素点的RGB值和最后一行像素点的RGB值转换成YUV值,分别得到所述第一行像素点的YUV亮度值和最后一行像素点的YUV亮度值;
为了减小计算量,提高计算速度,可以将所述第一行像素点的RGB值和最后一行像素点的RGB值转换成YUV值,分别得到所述第一行像素点的YUV亮度值和最后一行像素点的YUV亮度值。从RGB值转换成YUV值可以利用公式:Y=0.299R+0.587G+0.114B。
205、根据所述第一行像素点的YUV亮度值和最后一行像素点的YUV亮度值分别计算所述第一行像素点之间的亮度值偏差程度和最后一行像素点之间的亮度值偏差程度;
YUV中的亮度值Y含有丰富的细节信息,而色度值UV包含的细节信息不多,因此可以只保留亮度值Y进行亮度值的计算,以减小计算量。
206、判断所述第一行像素点之间的亮度值偏差程度和所述最后一行像素点之间的亮度值偏差程度是否均小于预设的第一阈值;
若所述第一行像素点对应的亮度值偏差程度和所述最后一行像素点对应的亮度值偏差程度均小于预设的第一阈值,则执行步骤208至211;若所述第一行像素点对应的亮度值偏差程度大于或等于所述第一阈值,或所述最后一行像素点对应的亮度值偏差程度大于或等于所述第一阈值,则执行步骤207。
207、判定所述目标图像为非全景图像;
步骤207与步骤105相同,具体可参照步骤105的相关说明。
208、根据预设的规则从所述目标图像最左边的指定数量像素列内选取多个在列方向上相差指定距离的左端范围区域;
所述左端范围区域在行方向上的长度大于或等于一个像素点,且在列方向上的长度大于或等于一个像素点,所述指定距离小于所述左端范围区域在列方向上的长度。步骤208与步骤106相同,具体可参照步骤106的相关说明。
209、从所述目标图像最右边的指定数量像素列内选取多个右端范围区域,各个所述右端范围区域分别与各个所述左端范围区域在行方向上一一对齐;
步骤209与步骤107相同,具体可参照步骤107的相关说明。
210、统计所述目标图像的不可拼接数;
所述不可拼接数为所述各个左端范围区域中第一左端范围区域的数量,所述第一左端范围区域与在行方向上对齐的右端范围区域之间的区域亮度值存在突变、且与在列方向上相邻的左端范围区域之间的区域亮度值不存在突变。步骤210与步骤108相同,具体可参照步骤108的相关说明。
进一步的,步骤210中的区域亮度值同样可以通过YUV中的亮度值Y来计算,大大减小计算量,提高图像识别的处理效率。
211、判断所述不可拼接数是否大于或等于预设的第二阈值;
步骤211与步骤109相同,具体可参照步骤109的相关说明。若所述不可拼接数大于或等于预设的第二阈值,则执行步骤207;若所述不可拼接数小于所述第二阈值,则执行步骤212。
212、判定所述目标图像为全景图像。
步骤212与步骤110相同,具体可参照步骤110的相关说明。
在本发明实施例中,获取待识别的目标图像;若所述目标图像的大小尺寸超过预设的阈值,则将所述目标图像压缩至指定的大小尺寸;将目标图像的RGB值转换成YUV值进行亮度值偏差程度和区域亮度值的计算;若所述第一行像素点或最后一行像素点的亮度值偏差程度大于或等于预设的第一阈值,则判定所述目标图像为非全景图像;若所述第一行像素点和最后一行像素点的亮度值偏差程度均小于所述第一阈值,则执行以下步骤:根据预设的规则从所述目标图像最左边的指定数量像素列内选取多个在列方向上相差指定距离的左端范围区域;从所述目标图像最右边的指定数量像素列内选取多个右端范围区域,各个所述右端范围区域分别与各个所述左端范围区域在行方向上一一对齐;统计所述目标图像的不可拼接数,所述不可拼接数为各个所述左端范围区域中第一左端范围区域的数量,其中所述第一左端范围区域为与在行方向上对齐的右端范围区域之间的区域亮度值存在突变,且与在列方向上相邻的左端范围区域之间的区域亮度值不存在突变的左端范围区域;最后根据所述不可拼接数是否大于预设的阈值来判定所述目标图像是否为全景图像。上述过程首先利用全景图像上下两端各个像素点的亮度值应当趋于一致的特点,通过计算目标图像上下两端像素点的亮度值偏差程度进行第一次全景图像识别,然后根据目标图像左右端预设区域内像素点的亮度值分布规律进行第二次全景图像识别,通过两次识别提高全景图像识别的准确率。而且,在第二次全景图像识别中是判断区域的亮度值是否存在突变,能够有效消除个别噪点或像素点列偏移带来的不良影响,进而能有效提高存在噪点或者图像中部分像素出现列方向偏移的全景图像的识别准确率。另外,将目标图像的RGB值转换成YUV值进行亮度值偏差程度和区域亮度值的计算,能够大大减小计算量,提高图像识别的处理效率。
请参阅图3,本发明实施例中一种全景图像的识别方法的第三个实施例包括:
301、获取待识别的目标视频;
所述目标视频是待识别的视频文件,可能是全景视频,也可能是非全景视频。
302、根据预设的规则从所述目标视频中提取一帧图像;
根据预设的规则从所述目标视频中提取一帧图像,所述预设的规则可以是随机获取,也可以是获取指定时间点对应的图像等方式。
303、判断提取到的一帧图像是否为纯色图像;
在从所述目标视频中提取一帧图像之后,判断所述提取到的一帧图像是否为纯色图像,纯色图像即只有单种颜色的图像。
具体的,判断提取到的一帧图像是否为纯色图像可以包括:
(1)计算所述提取到的一帧图像中各个像素点的RGB值的方差;
(2)若所述各个像素点的RGB值的方差均小于预设的第三阈值,则判定所述提取到的一帧图像为纯色图像;
(3)若所述各个像素点的RGB值的方差中存在大于所述第三阈值的方差,则判定所述提取到的一帧图像为非纯色图像。
对于上述步骤(1)至(3),首先计算所述提取到的一帧图像中各个像素点的RGB值的方差,然后根据这些方差是否均小于预设的第三阈值来判断该图像是否为纯色图像,在实际应用中所述第三阈值的大小可以设为(255*4%)2,即104。
若提取到的一帧图像为纯色图像,由于纯色图像各个像素点的亮度值基本相同,不满足后续的图像处理要求,因此返回步骤302,即重新从所述目标视频中提取另一帧图像。若提取到的一帧图像为非纯色图像,则执行步骤304。
304、将所述提取到的一帧图像确定为待识别的目标图像;
步骤304获取到的目标图像是从所述目标视频中提取到的一帧非纯色图像。
305、根据所述目标图像的第一行像素点的亮度值计算所述第一行像素点之间的亮度值偏差程度;
步骤305与步骤102相同,具体可参照步骤102的相关说明。
306、根据所述目标图像的最后一行像素点的亮度值计算所述最后一行像素点之间的亮度值偏差程度;
步骤305与步骤103相同,具体可参照步骤103的相关说明。
307、判断所述第一行像素点之间的亮度值偏差程度和所述最后一行像素点之间的亮度值偏差程度是否均小于预设的第一阈值;
若所述第一行像素点对应的亮度值偏差程度和所述最后一行像素点对应的亮度值偏差程度均小于预设的第一阈值,则执行步骤309至312;若所述第一行像素点对应的亮度值偏差程度大于或等于所述第一阈值,或所述最后一行像素点对应的亮度值偏差程度大于或等于所述第一阈值,则执行步骤308。
308、判定所述目标图像为非全景图像,所述目标视频为非全景视频;
由于所述目标图像为从所述目标视频中提取到的一帧非纯色图像,因此若所述目标图像为非全景图像,则可判定所述目标视频为非全景视频。
309、根据预设的规则从所述目标图像最左边的指定数量像素列内选取多个在列方向上相差指定距离的左端范围区域;
所述左端范围区域在行方向上的长度大于或等于一个像素点,且在列方向上的长度大于或等于一个像素点,所述指定距离小于所述左端范围区域在列方向上的长度。步骤309与步骤106相同,具体可参照步骤106的相关说明。
310、从所述目标图像最右边的指定数量像素列内选取多个右端范围区域,各个所述右端范围区域分别与各个所述左端范围区域在行方向上一一对齐;
步骤310与步骤107相同,具体可参照步骤107的相关说明。
311、统计所述目标图像的不可拼接数;
所述不可拼接数为各个所述左端范围区域中第一左端范围区域的数量,其中所述第一左端范围区域为与在行方向上对齐的右端范围区域之间的区域亮度值存在突变、且与在列方向上相邻的左端范围区域之间的区域亮度值不存在突变的左端范围区域。步骤311与步骤108相同,具体可参照步骤108的相关说明。
312、判断所述不可拼接数是否大于或等于预设的第二阈值;
步骤312与步骤109相同,具体可参照步骤109的相关说明。若所述不可拼接数大于或等于预设的第二阈值,则执行步骤308;若所述不可拼接数小于所述第二阈值,则执行步骤313。
313、判定所述目标图像为全景图像,所述目标视频为全景视频。
由于所述目标图像为从所述目标视频中提取到的一帧非纯色图像,因此若所述目标图像为全景图像,则可判定所述目标视频为全景视频。
在本发明实施例中,获取从待识别视频中提取的目标图像;根据所述目标图像的第一行像素点和最后一行像素点的亮度值分别计算亮度值偏差程度;若所述第一行像素点或最后一行像素点的亮度值偏差程度大于或等于预设的第一阈值,则可判定所述目标图像为非全景图像;若所述第一行像素点和最后一行像素点的亮度值偏差程度均小于所述第一阈值,则执行以下步骤:根据预设的规则从所述目标图像最左边的指定数量像素列内选取多个在列方向上相差指定距离的左端范围区域;从所述目标图像最右边的指定数量像素列内选取多个右端范围区域,各个所述右端范围区域分别与各个所述左端范围区域在行方向上一一对齐;统计所述目标图像的不可拼接数,所述不可拼接数为各个所述左端范围区域中第一左端范围区域的数量,所述第一左端范围区域为与在行方向上对齐的右端范围区域之间的区域亮度值存在突变,且与在列方向上相邻的左端范围区域之间的区域亮度值不存在突变的左端范围区域;最后根据所述不可拼接数是否大于预设的阈值来判定所述目标图像是否为全景图像,从而判断所述目标视频是否为全景视频。上述过程首先利用全景图像上下两端各个像素点的亮度值应当趋于一致的特点,通过计算目标图像上下两端像素点的亮度值偏差程度进行第一次全景图像识别,然后根据目标图像左右端预设区域内像素点的亮度值分布规律进行第二次全景图像识别,通过两次识别提高全景图像识别的准确率。而且,在第二次全景图像识别中是判断区域的亮度值是否存在突变,能够有效消除个别噪点或像素点列偏移带来的不良影响,进而能有效提高存在噪点或者图像中部分像素出现列方向偏移的全景图像的识别准确率。另外,本发明实施例中的目标图像是从待识别视频中提取的图像,通过判定所述目标图像是否为全景图像能够进一步判定所述待识别视频是否为全景视频,使得本发明实施例提出的全景图像识别方法还能用于全景视频的识别,大大扩展了实用性。
应理解,上述各个实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
上面主要描述了一种全景图像的识别方法,下面将对一种全景图像的识别装置进行详细描述。
请参阅图4,本发明实施例中一种全景图像的识别装置的一个实施例包括:
401、目标图像获取模块,用于获取待识别的目标图像;
402、第一亮度值偏差程度计算模块,用于根据所述目标图像的第一行像素点的亮度值计算所述第一行像素点之间的亮度值偏差程度;
403、第二亮度值偏差程度计算模块,用于根据所述目标图像的最后一行像素点的亮度值计算所述最后一行像素点之间的亮度值偏差程度;
404、左端范围区域选取模块,用于若所述第一行像素点之间的亮度值偏差程度和所述最后一行像素点之间的亮度值偏差程度均小于预设的第一阈值,则根据预设的规则从所述目标图像最左边的指定数量像素列内选取多个在列方向上相差指定距离的左端范围区域,所述左端范围区域在行方向上的长度大于或等于一个像素点,且在列方向上的长度大于或等于一个像素点,所述指定距离小于所述左端范围区域在列方向上的长度;
405、右端范围区域选取模块,用于从所述目标图像最右边的指定数量像素列内选取多个右端范围区域,各个所述右端范围区域分别与各个所述左端范围区域在行方向上一一对齐;
406、不可拼接数统计模块,用于统计所述目标图像的不可拼接数,所述不可拼接数为各个所述左端范围区域中第一左端范围区域的数量,其中所述第一左端范围区域为与在行方向上对齐的右端范围区域之间的区域亮度值存在突变、且与在列方向上相邻的左端范围区域之间的区域亮度值不存在突变的左端范围区域;
407、判定模块,用于若所述不可拼接数小于预设的第二阈值,则判定所述目标图像为全景图像。
本发明实施例还提供一种终端设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如图1至图3表示的任意一种全景图像的识别方法的步骤。
本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如图1至图3表示的任意一种全景图像的识别方法的步骤。
图5是本发明一实施例提供的终端设备的示意图。如图5所示,该实施例的终端设备5包括:处理器50、存储器51以及存储在所述存储器51中并可在所述处理器50上运行的计算机程序52。所述处理器50执行所述计算机程序52时实现上述各个全景图像的识别方法的实施例中的步骤,例如图1所示的步骤101至110。或者,所述处理器50执行所述计算机程序52时实现上述各装置实施例中各模块/单元的功能,例如图4所示模块401至407的功能。
所述计算机程序52可以被分割成一个或多个模块/单元,所述一个或者多个模块/单元被存储在所述存储器51中,并由所述处理器50执行,以完成本发明。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序52在所述终端设备5中的执行过程。
本领域技术人员可以理解,图5仅仅是终端设备5的示例,并不构成对终端设备5的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述终端设备5还可以包括输入输出设备、网络接入设备、总线等。
所称处理器50可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
所述存储器51可以是所述终端设备5的内部存储单元,例如终端设备5的硬盘或内存。所述存储器51也可以是所述终端设备5的外部存储设备,例如所述终端设备5上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。进一步地,所述存储器51还可以既包括所述终端设备5的内部存储单元也包括外部存储设备。所述存储器51用于存储所述计算机程序以及所述终端设备所需的其他程序和数据。所述存储器51还可以用于暂时地存储已经输出或者将要输出的数据。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。上述系统中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
在本发明所提供的实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的系统实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或单元的间接耦合或通讯连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,RandomAccess Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括是电载波信号和电信信号。
以上所述实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围,均应包含在本发明的保护范围之内。