本申请涉及图像处理技术领域,具体涉及一种拍照方法、装置、电子设备及存储介质。
背景技术:
随着智能设备的迅速发展,越来越多的人开始使用智能设备进行拍照,在拍摄时,被拍摄者只能根据摄影师的经验来指导摆出姿势,并选取合适的角度进行拍摄。但是在绝大多数拍摄者没有摄影经验,拍摄出的照片并不是很具有美感,被拍摄者在没有摄影经验的情况下,也不能摆出合适的拍摄姿势。
技术实现要素:
本申请实施例提供一种拍照方法、装置、电子设备及存储介质。能够对拍摄主体提供构图建议并拍照。
第一方面,本申请实施例提供了一种拍照方法,该方法包括:
获取拍摄场景的预览图像,对所述预览图像进行拍摄主体检测,得到所述拍摄主体对应的检测框;
调用关键点识别模型对所述检测框中的图像内容进行关键点检测,得到所述拍摄主体的目标关键点;
根据所述检测框对所述目标关键点进行归一化处理,得到所述拍摄主体对应的归一化关键点;
根据所述归一化关键点以及所述检测框,从构图模板库中确定出所述拍摄主体对应的目标构图模板;
当所述目标关键点与所述目标构图模板对应的构图点不匹配时,输出用于指示调整电子设备拍摄姿态的提示信息。
第二方面,本申请实施例提供了一种拍照装置,该装置包括:
第一获取模块,用于获取拍摄场景的预览图像,对所述预览图像进行拍摄主体检测,得到对应所述拍摄主体的检测框;
调用模块,用于调用关键点识别模型对所述检测框中的图像内容进行关键点检测,得到所述拍摄主体的目标关键点;
第一处理模块,用于根据所述检测框对所述目标关键点进行归一化处理,得到对应所述拍摄主体的归一化关键点;
确定模块,用于根据所述归一化关键点以及所述检测框,从构图模板库中确定出所述拍摄主体对应的目标构图模板;
匹配模块,用于当所述目标关键点与所述目标构图模板对应的构图点不匹配时,输出用于指示调整电子设备拍摄姿态的提示信息。
第三方面,本申请实施例提供的存储介质,其上存储有计算机程序,当所述计算机程序在计算机上运行时,使得所述计算机执行如本申请任一实施例提供的拍照方法。
第四方面,本申请实施例提供的电子设备,包括处理器和存储器,所述存储器有计算机程序,所述处理器通过调用所述计算机程序,用于执行如本申请任一实施例提供的拍照方法。
本申请实施例中,在拍照时通过获取拍摄场景的预览图像,对预览图像进行拍摄主体检测,得到拍摄主体对应的检测框;然后调用关键点识别模型对检测框中的图像内容进行关键点检测,得到拍摄主体的目标关键点;再根据检测框对目标关键点进行归一化处理,得到拍摄主体对应的归一化关键点;最后根据归一化关键点以及检测框,从构图模板库中确定出拍摄主体对应的目标构图模板;当目标关键点与目标构图模板对应的构图点不匹配时,输出用于指示调整电子设备拍摄姿态的提示信息。从而在拍照时提出构图建议。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的拍照方法的第一流程示意图。
图2是本申请实施例提供的拍照方法的第二流程示意图。
图3是本申请实施例提供的关键点识别模型的第一结构示意图。
图4是本申请实施例提供的第二识别子模型的第一结构示意图。
图5是本申请实施例提供的第二识别子模型的第二结构示意图。
图6是本申请实施例提供的第二识别子模型的第三结构示意图。
图7是本申请实施例提供的关键点识别模型的第二结构示意图。
图8是本申请实施例提供的沙漏结构的结构示意图。
图9是本申请实施例提供的残差模块的结构示意图。
图10是本申请实施例提供的构图提示信息的示意图。
图11是本申请实施例提供的拍照装置的第一结构示意图。
图12是本申请实施例提供的拍照装置的第二结构示意图。
图13是本申请实施例提供的电子设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本文所使用的术语「模块」可看做为在该运算系统上执行的软件对象。本文不同模块、引擎及服务可看做为在该运算系统上的实施对象。
本申请实施例提供一种拍照方法,该拍照方法的执行主体可以是本申请实施例提供的拍照装置,或者集成了该拍照装置的电子设备。其中,该电子设备可以是智能手机、智能穿戴设备、平板电脑、掌上电脑(pda,personaldigitalassistant)等。以下分别进行详细说明。
请参阅图1,图1是本申请实施例提供的拍照方法的第一流程示意图。该拍照方法能够对拍摄主体提供构图建议并拍照。该拍照方法可以包括以下步骤:
101、获取拍摄场景的预览图像,对预览图像进行拍摄主体检测,得到拍摄主体对应的检测框。
可以理解的是,在拍照时,在电子设备的屏幕上会生成一个预览图像,以便拍摄者随时查看当前的画面信息。
在预览图像中存在拍摄主体时,可以对拍摄主体进行检测。需要说明的是,拍摄主体可以是人、动物、植物、人偶、公仔等多种可以拍摄的主体。电子设备可以识别其中一种拍摄主体,也可以识别多种拍摄主体。
在一些实施例中,在捕获预览图像的时候,可以对预览图像进行识别,判断是否有拍摄主体,若存在拍摄主体的情况下,则对拍摄主体生成一个检测框。检测框中包含拍摄主体,检测框的形状可以是矩形、圆形、椭圆形等规则形状。也可以是不规则的形状,比如是拍摄主体的描边形状。
以拍摄主体为人体为例,可以使用人体检测模型对预览图像中的人体进行检测。比如,人体检测模型使用yolo模型或ssd(singleshotmultiboxdetector)模型等等。在人体检测模型检测人体时,会对人体生成一个矩形的检测框。
102、调用关键点识别模型对检测框中的图像内容进行关键点检测,得到所述拍摄场景中拍摄主体的目标关键点。
在一些实施例中,预览图像中可以包括一个或多个拍摄主体,该一个或多个拍摄主体都有对应的关键点。以拍摄主体为人体为例,人体图像上包括多个关键点,比如头部、胸部、四肢、脖子、关节上都存在关键点。
在预览图像中,关键点识别模型识别出预览图像的关键点。但是并不是所有的关键点都是来自拍摄主体上的,还可能是其他物体上的。比如,预览图像上的背景图像上的关键点,或者是拍摄时的路人的关键点等等。同理,在人像检测框内容中也可能存在无用的关键点。
因此需要对关键点识别模型在图像内容中识别出来的关键点进行筛选,从而获得拍摄主体的目标关键点。
在一些实施例中,还可以判断关键点是否在检测框内,若关键点在检测框内,则认为该关键点为拍摄主体的目标关键点。还可以先初步筛选出检测框内的关键点,然后再对检测框内的关键点进行详细筛选,得到拍摄主体的目标关键点。
103、根据检测框对所述目标关键点进行归一化处理,得到拍摄主体对应的归一化关键点。
可以理解的是,归一化是一种无量纲处理手段,使物理系统数值的绝对值变成某种相对值关系。简单来说,归一化的具体作用是归纳统一样本的统计分布性。归一化在0-1之间是统计的概率分布,归一化在-1至+1之间是统计的坐标分布。即该函数在(-∞,+∞)的积分为1。
在本申请实施例中,对目标关键点进行归一化处理,是为了方便后续和构图模板库中的数据进行对比,同时也有利于对目标关键点数据处理的过程。比如,每一个目标关键点在检测框的图像内容中都有一个二维坐标,即每一个目标关键点都包括横坐标和纵坐标。通过对目标关键点横坐标除以检测框的宽度得到处理关键点的横坐标,通过对目标关键点的纵坐标除以检测框的高度得到处理关键点的纵坐标,从而确定出处理关键点。同时也能够得到检测框的宽高之比。
104、根据归一化关键点以及检测框,从构图模板库中确定出拍摄主体对应的目标构图模板。
构图模板库中包含多种构图类型的构图模板,例如面部特写、全身像以及摆出不同姿势的构图类别等等。构图模板中都有对应的候选构图点,在与拍摄主体的目标关键点匹配的过程中,可以用于在预览图像上生成可见的构图点。
在一些实施例中,拍摄主体的目标关键点可以是多个,所以归一化关键点也有多个,归一化关键点可以生成一个归一化关键点集。而每一个构图模板中都包括至少一个候选构图点,则每一个构图模板可以认为是一个样本集。通过归一化关键点集和样本集之间进行对比,可以从构图模板库中确定出拍摄主体对应的目标构图模板。其中,在归一化关键点集和样本集对比的过程中,归一化关键点的坐标和检测框的宽高比都是拍摄主体的特征。
105、当目标关键点与目标构图模板对应的构图点不匹配时,输出用于指示调整电子设备拍摄姿态的提示信息。
在获取到目标构图模板之后,可以先获取目标构图模板中的目标候选构图点,然后根据预览图像的宽度和高度信息,根据预览图像的宽度和高度信息对目标候选构图点进行处理,得到预览图像上的构图点,也就是目标构图模板对应的构图点。
在一些实施例中,可以将构图点和目标关键点进行匹配。在构图点和目标关键点都为多个的情况下,可以认为目标关键点是一个集,构图点也是一个集,获取目标关键点和构图点之间的明式距离,当构图点和目标关键点之间的明式距离小于预设阈值的情况下,则认为构图点和目标关键点匹配成功。
若构图点和目标关键点之间的明式距离不小于预设阈值的情况下,则认为构图点和目标关键点不匹配,此时,可以在预览图像上生成用于指示调整电子设备拍摄姿态的提示信息。
用户可以对拍摄姿态进行调整,从而使得构图点和目标关键点匹配,从而进行拍照。
本申请实施例中,在拍照时通过获取拍摄场景的预览图像,对预览图像进行拍摄主体检测,得到拍摄主体对应的检测框;然后调用关键点识别模型对检测框中的图像内容进行关键点检测,得到拍摄主体的目标关键点;再根据检测框对目标关键点进行归一化处理,得到拍摄主体对应的归一化关键点;最后根据归一化关键点以及检测框,从构图模板库中确定出拍摄主体对应的目标构图模板;当目标关键点与目标构图模板对应的构图点不匹配时,输出用于指示调整电子设备拍摄姿态的提示信息。从而在拍照时提出构图建议。
请参阅图2,图2是本申请实施例提供的拍照方法的第二流程示意图。该拍照方法能够对拍摄主体提供构图建议并拍照。该拍照方法可以包括以下步骤:
201、获取拍摄场景的预览图像,对预览图像进行拍摄主体检测,得到拍摄主体对应的检测框。
在用户打开相机时,相机采集拍摄场景信息,电子设备的屏幕上会有实时的预览界面。可以通过人体检测模型检测预览图像中是否有人体,在有人体的情况下,人体会对应生成一个矩形检测框。
202、根据关键点识别模型识别出图像内容中的关键点。
可以理解的是,一个预览图像中可能存在多个人体,也可能存在一个人体。关键点识别模型可以对单个、多个人体进行检测,比如mobilenetv2模型。通过关键点识别模型识别出检测框图像内容中的关键点。
203、将检测框中的图像内容输入至第一子模型,得到预览图像的特征图。
本申请实施例中,关键点识别模型包括第一子模型和第二子模型。具体请参阅图3,图3是本申请实施例提供的关键点识别模型的结构示意图。其中,在获取到预览图像之后,可以直接将预览图像输入至第一子模型进行识别,获取预览图像的特征图(featuremap)。
在一些实施例中,第一子模型可以为mobilenetv2模型,mobilenetv2比较轻量化,在处理图片时速度较快。在电子设备性能较强,算力较强时,第一子模型还可以采用精度更高的模型,例如vgg19模型,resnet50模型等,使用这些模型提取特征能够提高人体关键点的检测精度。
204、将特征图输入至第二子模型,得到预览图像的目标连接特征和目标位置特征。
由图3可知,第二子模型包括多个,多个第二子模型依次连接。第一子模型和第一个第二子模型连接,即第一子模型与图中的第二子模型(1)连接。
在多个第二子模型中,每个第二子模型都能输出对应的位置特征和连接特征。其中位置特征可以是一个三维矩阵,可以是一个height*width*keypoints的三维矩阵,其中height代表图片的高度,width代表图片的宽度,keypints表示关键点的数量,其中该图片为每个连接特征对应的图片。具体的位置特征可以是热图(heatmap)。
连接特征可以是一个三维矩阵,可以是一个height*width*limbs的三维矩阵。其中height代表图片的高度,width代表图片的宽度,limbs表示连接体的数量。其中连接体可以是相关联的两个关键点之间的连接区域,比如,左眼和右眼的连接可以为一个连接体,连接体为左眼和右眼之间的连接区域。每一个连接体对应一个height*width*2的三维矩阵,可以认为连接特征是一个双通道的热图,该双通道的热图中的每个位置包括两个值,例如x值和y值,组成向量(x,y),该向量可以表示对应位置的连接体方向,当x值和y值都为零时,则说明该位置没有肢体。
在一些实施例中,第一个第二子模型的输入为第一子模型输出的特征图。第一个第二子模型对特征图进行处理,得到第一个第二子模型输出的位置特征和连接特征。
请一并参阅图4,图4是本申请实施例提供的第二子模型的第一结构示意图。其中第一个第二子模型对特征图处理后,输出第一个第二子模型输出的位置特征和连接特征。也就是第二子模型(1)对特征图进行处理得到位置特征(1)和连接特征(1)。
将位置特征(1)、连接特征(1)以及特征图输入到第二个第二子模型中,即输入至第二子模型(2)中,得到第二子模型(2)输出的位置特征(2)和连接特征(2)。
再将位置特征(2)、连接特征(2)以及特征图输入到第三个第二子模型中,即输入至第二子模型(3)中,得到第二子模型(3)输出的位置特征(3)和连接特征(3)。依此类推,除去第一个第二子模型的剩余第二子模型中,都是将上一个第二子模型输出的连接特征、位置特征以及第一子模型输出的特征图作为输入,每一个第二子模型输出与其对应的连接特征和位置特征。直至最后一个第二子模型输出目标连接特征和目标位置特征为止。
请一并参阅图5,图5是本申请实施例提供的第二子模型的第二结构示意图。具体的,图5展示的是第一个第二子模型的结构示意图。其中将第一子模型输出的特征图作为输入,输入至第一个第二子模型中。第二子模型包括连接模块和位置模块,连接模块和位置模块均为多个不同类型的卷积层组成的模块。
比如,在连接模块中包括多个第一卷积层和多个第二卷积层,多个第一卷积层依次连接,多个第二卷积层依次连接,最后一个第一卷积层与第一个第二卷积层连接。在位置模块中包括多个第一卷积层和多个第二卷积层,多个第一卷积层依次连接,多个第二卷积层依次连接,最后一个第一卷积层与第一个第二卷积层连接。
在一些实施方式中,第一卷积层可以是3*3的卷积层,第二卷积层可以为1*1的卷积层。在连接模块中第一卷积层可以为三个,第二卷积层为两个,位置模块的结构可以与连接模块的结构相同。在实际的应用中,第一卷积层和第二卷积层的类型、数量都可以根据实际要求发生改变。
由图5可知,将第一子模型输出的特征图输入至第一个第二子模型中,由于第二子模型中存在连接模块和位置模块,连接模块和位置模块可以分别对特征图进行处理,从而得到连接特征(1)和位置特征(1)。
请继续参阅图6,图6是本申请实施例提供的第二子模型的第三结构示意图。具体的,图6所示的是出第一个第二子模型的剩余第二子模型的结构示意图。其中每个第二子模型都包括连接模块和位置模块,连接模块和位置模块中包括多个不同类型的卷积层。
比如,连接模块中包括多个第三卷积层和多个第二卷积层,多个第三卷积层依次连接,多个第二卷积依次连接,最后一个第三卷积层和第一个第二卷积层连接。位置模块中包括五个第三卷积层和两个第二卷积层,多个第三卷积层依次连接,多个第二卷积依次连接,最后一个第三卷积层和第一个第二卷积层连接。
在一些实施方式中,第三卷积层可以是7*7的卷积层,第二卷积层可以为1*1的卷积层。在连接模块中第三卷积层可以为五个,第二卷积层为两个,位置模块的结构可以与连接模块的结构相同。在实际的应用中,第一卷积层和第二卷积层的类型、数量都可以根据实际要求发生改变。
由图6可知,除第一个第二子模型的剩余第二子模型中,每一个第二子模型的输入为上一个第二子模型输出的连接特征、位置特征以及第一子模型输出的特征图,即连接特征(m-1)和位置特征(m-1)。每一个第二子模型可以输出与其对应的连接特征和位置特征,即连接特征(m)和位置特征(m)。需要说明的是,最后一个第二子模型输出的为目标位置特征和目标连接特征。
在一些实施例中,在除了第一个第二子模型之外的剩余第二子模型中,可以将第三卷积层替换为第一卷积层,从而减少计算量和参数,使得第二子模型处理任务更快。
205、根据目标位置特征确定关键点中的候选关键点。
在一些实施例中,可以选取目标位置特征中的最大值的位置为候选关键点,例如在热图(heatmap)中选取像素点数值最大的为候选关键点。在实际应用中,可以对热图进行最大池化,然后将池化前和池化后的热图对比,将池化前和池化后的热图中取值相等的位置作为候选关键点。
206、根据目标连接特征和候选关键点确定拍摄主体的目标关键点。
可以理解的是,在获取到候选关键点之后,能够根据目标连接特征中的连接体的方向来对候选关键点进行连接,以得到完整的个体。
在一些实施例中,可以每次获取一个连接体对应的目标连接特征,连接着个连接体两端的候选关键点。从而求出两个候选关键点来自同一个体的置信度,具体可以用以下置信度公式表示:
其中
可以理解的是,在实际应用中,会在两个候选关键点之间取多个位置,比如在区间[0,1]上均匀间隔采样得到u,近似求积分。
在预览图像上只有一个拍摄主体时,则可以确定所有的候选关键点都是来自同一拍摄个体的,当所有的候选关键点连接时,就可以表示一个完整的拍摄主体。
在预览图像上有多个拍摄个体时,可以生成一个关键点关联集,关联集中有每一个个体的候选关键点集合。比如在候选关键点上有眼睛对应的候选关键点,鼻子对应的候选关键点等等。其中每个拍摄个体中,眼睛和鼻子两者有对应的候选关键点,手腕和手肘两者有对应的关键点,多个候选关键点可以组成一个代表拍摄主体的个体。多个候选关键点集合形成一个关联集。可以在其中寻找到一个最佳的关联集,比如:
关联集z中,j1,j2表示关键点类别(眼睛、鼻子、手腕等),m和n表示对应关键点类别内的关键点编号。利用上述置信度公式使得:
ec为所有已连接的连接体的总置信度,即多个连接体连接形成的个体的总置信度。在匹配的过程中可以使用匈牙利算法来匹配,得到最佳的关联集。
需要说明的是,当
通过置信度来确定候选关键点之间的关联度,从而确定拍摄主体上的目标关键点。即置信度越高的时候,候选关键点之间的关联度越高,越有可能来自同一个个体。
207、根据检测框对目标关键点进行归一化处理,得到对应拍摄主体对应的归一化关键点。
在一些实施例中,每一个目标关键点在检测框的图像内容中都有一个二维坐标,即每一个目标关键点都包括横坐标和纵坐标。通过对目标关键点横坐标除以检测框的宽度得到处理关键点的横坐标,通过对目标关键点的纵坐标除以检测框的高度得到处理关键点的纵坐标,从而确定出处理关键点。同时也能够得到检测框的宽高之比。
需要说明的是,在预览图像中只存在单个人体时,可以不使用图3至图6所示的模型来进行关键点识别。可以使用其他模型直接对人体的目标关键点进行识别,例如hourglass模型。
具体请参阅图7,图7是本申请实施例提供的关键点识别模型的第二结构示意图。
其中该关键点识别模型包括卷积层、池化层、残差模块和沙漏结构。如图7所示,可以将检测框中的图像内容输入至该关键点识别模型中,首先经过卷积层对输入的图像内容进行处理。然后卷积层输出的结果通过残差模块和池化层处理。残差模块和池化层输出的结果输入至沙漏结构处理,沙漏结构处理的结果输入至下一个残差模块和池化层。下一个残差模块和池化层处理的结果输入至下一个沙漏结构中。
由图7可知,该关键点识别模型中包括多个沙漏结构,经过多个沙漏结构对输入的检测框图像内容进行处理,在最后一个沙漏结构输出的结果输入至最后一个残差模块和池化层中,最后一个残差模块和池化层输出的结果输入至最后一个卷积层中,最后一个卷积层输出检测框的图像内容的位置特征。
其中,第一个卷积层和最后一个卷积层可以是7*7结构的卷积层。沙漏结构的数量取决于电子设备的计算性能,在计算性能越强的情况下,沙漏结构可以采用的越多。在一些实施例中,沙漏结构的数量最高为8个。
请一并参阅图8,图8是本申请实施例提供的沙漏结构的结构示意图。在该关键点识别模型中,多个沙漏结构的构造可以是相同的。每个沙漏包括四个残差模块、四个下采样模块、四个上采样模块。
如图8所示,沙漏结构对输入的数据进行通过下采样模块下采样处理,然后再经过中间的卷积层进行运算,卷积层的数量和结构可以根据实际情况进行调整,图中8只是示意。然后对沙漏结构的中间卷积层输出的数据通过上采样进行上采样处理。其中每个下采样模块和每个上采样模块中包括多个卷积层和池化层。
请结合图9,图9是本申请实施例提供的残差模块的结构示意图。其中,残差模块可以由128个1*1卷积层、128个3*3卷积层和256个1*1卷积层依次连接形成的。考虑到下采样和上采样的过程中,对数据是有所损失的,每个下采样模块输出的第一处理特征图经过对应的残差模块进行处理,得到第二处理特征图,然后第二处理特征图和第一处理特征图相加作为残差模块最终输出的结果。
由图8可知,在上采样的过程中,在输入上采样模块之前,都需要将残差模块输出的结果与上一个结构输出的结果相加,作为上采样模块输入的数据。比如,残差模块4输出的结果和上采样模块3输出的结果相加,作为上采样模块4输入的数据。
在经过图7所示的关键点识别模型识别出检测框的图像内容的位置特征之后,由于检测框不唯一,可能同一个人体生成了多个检测框,而该关键点识别模型会对每个人体检测框检测得到一套目标关键点,这套目标关键点可以包括人体姿态。因此同一个人可能会得到多套人体姿态信息,需要对这些人体姿态信息进行筛选,得到效果最佳的一组。
具体可以采用以下筛选方式:首先获取每一套目标关键点的置信度,然后将置信度高的那一套目标关键点对应的人体姿态作为参照数据。然后获取剩余的每一套目标关键点的置信度,如果获取的置信度低于预设置信度阈值,则排除这一套目标关键点及其对应的人体姿态。
具体的,每一套目标关键点和作为参照数据的目标关键点之间的距离,可以通过parametricposenms(参数化姿态非最大化抑制,parametricposenon-maximum-suppressionnms)模块来处理,可以通过以下方式计算:可以计算作为参照数据的目标关键点和待测的目标关键点之间的距离。其中计算公式为:
d(pi,pj)=k(pi,pj)+λh(pi,pj)
其中k(pi,pj)用于衡量关键点之间的相似度,h(pi,pj)用于衡量关键点之间的空间距离。λ是一个系数。d(pi,pj)为参照数据的模板关键点和待测的目标关键点之间的距离。
其中,
其中,
当参照数据的目标关键点和待测的目标关键点之间的距离小于预设测量阈值的情况下,则认为这两套目标关键点相似度过高,可能来自同一个人,排除待测的目标关键点。最终选取保留下的目标关键点及其对应的人体姿态。
最终将最终保留的目标关键点在步骤207中进行归一化处理,得到对应拍摄主体对应的归一化关键点。请继续参阅图2。
208、获取多张样本图片,并根据关键点识别模型识别出多张样本图片中的样本关键点。
需要说明的是,在将归一化关键点和目标构图模板对应的构图点匹配之前,还需要生成一个构图模板库。步骤208、步骤209、步骤210,可以在步骤211之前的任一位置,图2中所示的步骤208、步骤209和步骤210插入的步骤位置是为了方便对于本方案的理解,不应成为对本申请的限制。
可以理解的是,可以获取大量的包含人体构图的样本图片,然后利用关键点识别模型来识别出样本图片中的样本关键点,具体的和上述识别拍摄主体的目标关键点类似,在此不作赘述。
209、对每个样本图片的样本关键点进行归一化处理,得到候选构图点。
具体的对样本关键点进行归一化的过程,和上述对目标关键点进行归一化的过程类似,在此不作赘述。在对每个样本图片的样本关键点进行归一化处理后,得到候选构图点。其中每个样本对应的都有一套候选构图点。在进行归一化的过程中,每个样本都有对用的检测框宽高比。每个样本可以作为一个构图模板。
210、对所述候选构图点进行聚类处理,得到多个不同构图类别的构图模板及构图模板库。
可以将每个构图模板对应的候选构图点和宽高比作为特征进行q型聚类,即多个样本组合形成一个样本集。其中每个样本都包含多个候选构图点,每个候选构图点都包含其坐标位置。
可以使用明氏距离衡量样本之间的相似度,例如,样本a=(x1,x2,…,xn),样本b=(y1,y2,…,yn),则样本a和样本b之间的距离为:
其中p为正整数,x为a中的样本点,y为b中的样本点,n为样本点的编号,i为第i个样本点。
具体的,可以使用agens层次聚类算法进行聚类,根据样本集中人体姿态的分布确定构图类别的数量,人体姿态比较多变时可设置较多的构图类别,人体姿态较少时设置较少的构图类别。最终得到多个不同构图类别的构图模板及构图模板库。
比如,在根据聚类算法对候选构图点进行聚类处理后,能够得到多个不同的类别,每个类别之间是不同的,可以根据类别的数量来确定出构图类别的数量。比如每种类别可以对应一种人体摆拍姿势,每一种人体摆拍姿势可以作为一种构图类别,在人体摆拍姿势比较多时可设置较多的构图类别,人体摆拍姿势较少时可以设置较少的构图类别。最终可以根据构图类别确定出多个构图模板,多个构图模板组合成构图模板库。
211、判断目标关键点与目标构图模板对应的构图点是否匹配。
在一些实施例中,可以根据构图模板对应的候选构图点获取构图类别对应的类别中心。每个构图类别中包括多个构图模板,每个构图模板对应多个候选构图点,每个构图点都包括对应的坐标位置。可以将多个构图模板中的眼部候选构图点坐标求平均值,得到一个眼部中心坐标,则这个眼部中心坐标可以代表该构图类别中所有构图模板的眼部候选构图点。同理,可以获取一个构图类别中多个构图模板的类别中心。
然后判断多个类别中心与归一化关键点集之间的明式距离,根据明是距离选取与归一化关键点集距离最近的类别中心为目标构图模板。
然后根据目标构图模板中候选构图点的坐标信息和预览图像的宽度和高度信息,确定出目标构图模板在预览图像上的构图点。目标构图模板对应的构图点会显示在预览图像上,来生成构图建议。
然后计算目标关键点与目标构图模板对应的构图点之间的明式距离,若目标关键点与目标构图模板对应的构图点的明式距离不小于预设阈值,则进入步骤212中。若目标关键点与目标构图模板对应的构图点的明式距离小于预设阈值,则进入步骤213中。
212、输出用于指示调整电子设备拍摄姿态的提示信息。
可以理解的是,在目标关键点与目标构图模板对应的构图点的明式距离不小于预设阈值时,则在屏幕上生成构图提示信息。如图10所示,图10时本申请实施例提供的构图提示信息的示意图。
其中可以生成一个箭头,由目标关键点指向构图点,提示用户调整电子设备的拍摄姿态。需要说明的是,人体图像上包括多个目标关键点,图10中仅仅是示意其中之一。
其中,提示信息还可以是文字、字符、图画等其他提醒内容。每一个人体部位的目标关键点和对应的构图点可以是同一种颜色,比如,眼部目标管家点为蓝色,则眼部目标关键点对应的眼部构图点也是蓝色。人体的目标关键点可以是常显示效果的点。构图点可以是间隔显示效果的点,如同呼吸灯效果。
213、对拍摄场景进行拍摄,得到拍摄图像。
目标关键点与目标构图模板对应的构图点的明式距离小于预设阈值,电子设备可以自动拍摄当前的拍摄场景,生成拍摄图像。
综上所述,本申请实施例中,在拍照时通过获取拍摄场景的预览图像,对预览图像进行拍摄主体检测,得到拍摄主体对应的检测框;然后调用关键点识别模型对检测框中的图像内容进行关键点检测,得到拍摄主体的目标关键点;再根据检测框对目标关键点进行归一化处理,得到拍摄主体对应的归一化关键点;最后根据归一化关键点以及检测框,从构图模板库中确定出拍摄主体对应的目标构图模板;当目标关键点与目标构图模板对应的构图点不匹配时,输出用于指示调整电子设备拍摄姿态的提示信息。从而在拍照时提出构图建议。
请参阅图11,图11是本申请实施例提供的拍照装置的第一结构示意图。其中该装置可以包括:第一获取模块310、调用模块320、第一处理模块330、确定模块340、匹配模块350。
第一获取模块310,用于获取拍摄场景的预览图像,对所述预览图像进行拍摄主体检测,得到对应所述拍摄主体的检测框。
在一些实施例中,在捕获预览图像的时候,可以对预览图像进行识别,判断是否有拍摄主体,若存在拍摄主体的情况下,则对拍摄主体生成一个检测框。检测框中包含拍摄主体,检测框的形状可以是矩形、圆形、椭圆形等规则形状。也可以是不规则的形状,比如是拍摄主体的描边形状。
以拍摄主体为人体为例,可以使用人体检测模型对预览图像中的人体进行检测。比如,人体检测模型使用yolo模型或ssd(singleshotmultiboxdetector)模型等等。在人体检测模型检测人体时,会对人体生成一个矩形的检测框。
调用模块320,用于调用关键点识别模型对所述检测框中的图像内容进行关键点检测,得到所述拍摄主体的目标关键点。
在一些实施例中,预览图像中可以包括一个或多个拍摄主体,该一个或多个拍摄主体都有对应的关键点。以拍摄主体为人体为例,人体图像上包括多个关键点,比如头部、胸部、四肢、脖子、关节上都存在关键点。
调用模块320可以调用关键点识别模型识别出预览图像的关键点。但是并不是所有的关键点都是来自拍摄主体上的,还可能是其他物体上的。比如,预览图像上的背景图像上的关键点,或者是拍摄时的路人的关键点等等。同理,在人像检测框内容中也可能存在无用的关键点。
因此需要对关键点识别模型识别出来的关键点进行筛选,从而获得拍摄主体的目标关键点。
第一处理模块330,用于根据所述检测框对所述目标关键点进行归一化处理,得到对应所述拍摄主体的归一化关键点。
在本申请实施例中,第一处理模块330对目标关键点进行归一化处理,是为了方便后续和构图模板库中的数据进行对比,同时也有利于对目标关键点数据处理的过程。比如,每一个目标关键点在检测框的图像内容中都有一个二维坐标,即每一个目标关键点都包括横坐标和纵坐标。通过对目标关键点横坐标除以检测框的宽度得到处理关键点的横坐标,通过对目标关键点的纵坐标除以检测框的高度得到处理关键点的纵坐标,从而确定出处理关键点。同时也能够得到检测框的宽高之比。
确定模块340,用于根据所述归一化关键点以及所述检测框,从构图模板库中确定出所述拍摄主体对应的目标构图模板。
在一些实施例中,拍摄主体的目标关键点可以是多个,所以归一化关键点也有多个,归一化关键点可以生成一个归一化关键点集。而每一个构图模板中都包括至少一个候选构图点,则每一个构图模板可以认为是一个样本集。确定模块340通过归一化关键点集和样本集之间进行对比,可以从构图模板库中确定出拍摄主体对应的目标构图模板。其中,在归一化关键点集和样本集对比的过程中,归一化关键点的坐标和检测框的宽高比都是拍摄主体的特征。
匹配模块350,用于当所述目标关键点与所述目标构图模板对应的构图点不匹配时,输出用于指示调整电子设备拍摄姿态的提示信息。
在获取到目标构图模板之后,可以先获取目标构图模板中的目标候选构图点,然后根据预览图像的宽度和高度信息,根据预览图像的宽度和高度信息对目标候选构图点进行处理,得到预览图像上的构图点,也就是目标构图模板对应的构图点。
在一些实施例中,匹配模块350可以将构图点和目标关键点进行匹配。在构图点和目标关键点都为多个的情况下,可以认为目标关键点是一个集,构图点也是一个集,获取目标关键点和构图点之间的明式距离,当构图点和目标关键点之间的明式距离小于预设阈值的情况下,则认为构图点和目标关键点匹配成功。
若构图点和目标关键点之间的明式距离不小于预设阈值的情况下,则认为构图点和目标关键点不匹配,此时,可以在预览图像上生成用于指示调整电子设备拍摄姿态的提示信息。
用户可以对拍摄姿态进行调整,从而使得构图点和目标关键点匹配,从而进行拍照。
请一并参阅图12,图12是本申请实施例提供的拍照装置的第二结构示意图,其中该拍照装置还包括:第二获取模块360、第二处理模块370、第三处理模块380。
第二获取模块360,用于获取多张样本图片,并根据所述关键点识别模型识别出多张所述样本图片中的样本关键点。
可以理解的是,可以获取大量的包含人体构图的样本图片,然后利用关键点识别模型来识别出样本图片中的样本关键点,具体的和上述识别拍摄主体的目标关键点类似,在此不作赘述。
第二处理模块370,用于对每个所述样本图片的所述样本关键点进行归一化处理,得到候选构图点。
具体的对样本关键点进行归一化的过程,和上述对目标关键点进行归一化的过程类似,在此不作赘述。在对每个样本图片的样本关键点进行归一化处理后,得到候选构图点。其中每个样本对应的都有一套候选构图点。在进行归一化的过程中,每个样本都有对用的检测框宽高比。每个样本可以作为一个构图模板。
第三处理模块380,用于对所述候选构图点进行聚类处理,得到多个不同构图类别的构图模板及所述构图模板库。
第三处理模块380可以将每个构图模板对应的候选构图点和宽高比作为特征进行q型聚类,即多个样本组合形成一个样本集。其中每个样本都包含多个候选构图点,每个候选构图点都包含其坐标位置。
具体的,第三处理模块380可以使用agens层次聚类算法进行聚类,根据样本集中人体姿态的分布确定构图类别的数量,人体姿态比较多变时可设置较多的构图类别,人体姿态较少时设置较少的构图类别。最终得到多个不同构图类别的构图模板及构图模板库。
综上所述,本申请实施例中,在拍照时通过获取拍摄场景的预览图像,对预览图像进行拍摄主体检测,得到拍摄主体对应的检测框;然后调用关键点识别模型对检测框中的图像内容进行关键点检测,得到拍摄主体的目标关键点;再根据检测框对目标关键点进行归一化处理,得到拍摄主体对应的归一化关键点;最后根据归一化关键点以及检测框,从构图模板库中确定出拍摄主体对应的目标构图模板;当目标关键点与目标构图模板对应的构图点不匹配时,输出用于指示调整电子设备拍摄姿态的提示信息。从而在拍照时提出构图建议。
相应的,本申请实施例还提供一种电子设备,如图13所示,图13是本身实施例提供的电子设备的结构示意图。该电子设备可以包括、包括有一个或一个以上计算机可读存储介质的输入单元410、显示单元420、电源430、wifi模块440、传感器450、存储器460以及包括有一个或者一个以上处理核心的处理器470等部件。本领域技术人员可以理解,图13中示出的电子设备结构并不构成对电子设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:
输入单元410可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。可选的,触敏表面可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器470,并能接收处理器470发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触敏表面。除了触敏表面,输入单元410还可以包括其他输入设备。
显示单元420可包括显示面板,可选的,可以采用液晶显示器(lcd,liquidcrystaldisplay)、有机发光二极管(oled,organiclight-emittingdiode)等形式来配置显示面板。进一步的,触敏表面可覆盖显示面板,当触敏表面检测到在其上或附近的触摸操作后,传送给处理器470以确定触摸事件的类型,随后处理器470根据触摸事件的类型在显示面板上提供相应的视觉输出。虽然在图13中,触敏表面与显示面板是作为两个独立的部件来实现输入和输入功能,但是在某些实施例中,可以将触敏表面与显示面板集成而实现输入和输出功能。
wifi属于短距离无线传输技术,电子设备通过wifi模块440可以帮助用户收发文件、浏览网页和wifi定位等,它为用户提供了无线的宽带互联网访问。
电子设备还可包括至少一种传感器450,比如光传感器、运动传感器以及其他传感器。具体地,光传感器可包括环境光传感器及接近传感器。运动传感器可包括重力加速度传感器、陀螺仪等传感器;电子设备还可以包括气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。
存储器460可用于存储软件程序以及模块,处理器470通过运行存储在存储器460的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器460可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据电子设备的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器460可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器460还可以包括存储器控制器,以提供处理器470和输入单元410对存储器460的访问。
处理器470是电子设备的控制中心,利用各种接口和线路连接整个手机的各个部分,通过运行或执行存储在存储器460内的软件程序和/或模块,以及调用存储在存储器460内的数据,执行电子设备的各种功能和处理数据,从而对手机进行整体监控。可选的,处理器470可包括一个或多个处理核心;优选的,处理器470可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器470中。
电子设备还包括给各个部件供电的电源430(比如电池),优选的,电源可以通过电源管理系统与处理器470逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源430还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
尽管未示出,电子设备还可以包括摄像头、蓝牙模块等,在此不再赘述。具体在本实施例中,电子设备中的处理器470会按照如下的指令,将一个或一个以上的应用程序的进程对应的可执行文件加载到存储器460中,并由处理器470来运行存储在存储器460中的应用程序,从而实现各种功能:
获取拍摄场景的预览图像,对所述预览图像进行拍摄主体检测,得到所述拍摄主体对应的检测框;
调用关键点识别模型对所述检测框中的图像内容进行关键点检测,得到所述拍摄主体的目标关键点;
根据所述检测框对所述目标关键点进行归一化处理,得到所述拍摄主体对应的归一化关键点;
根据所述归一化关键点以及所述检测框,从构图模板库中确定出所述拍摄主体对应的目标构图模板;
当所述目标关键点与所述目标构图模板对应的构图点不匹配时,输出用于指示调整电子设备拍摄姿态的提示信息。
本领域普通技术人员可以理解,上述实施例的各种方法中的全部或部分步骤可以通过指令来完成,或通过指令控制相关的硬件来完成,该指令可以存储于一计算机可读存储介质中,并由处理器进行加载和执行。
为此,本申请实施例提供一种存储介质,其中存储有多条指令,该指令能够被处理器进行加载,以执行本申请实施例所提供的任一种拍照方法中的步骤。例如,该指令可以执行如下步骤:
获取拍摄场景的预览图像,对所述预览图像进行拍摄主体检测,得到所述拍摄主体对应的检测框;
调用关键点识别模型对所述检测框中的图像内容进行关键点检测,得到所述拍摄主体的目标关键点;
根据所述检测框对所述目标关键点进行归一化处理,得到所述拍摄主体对应的归一化关键点;
根据所述归一化关键点以及所述检测框,从构图模板库中确定出所述拍摄主体对应的目标构图模板;
当所述目标关键点与所述目标构图模板对应的构图点不匹配时,输出用于指示调整电子设备拍摄姿态的提示信息。
以上各个操作的具体实施可参见前面的实施例,在此不再赘述。
其中,该存储介质可以包括:只读存储器(rom,readonlymemory)、随机存取记忆体(ram,randomaccessmemory)、磁盘或光盘等。
由于该存储介质中所存储的指令,可以执行本申请实施例所提供的任一种拍照方法中的步骤,因此,可以实现本申请实施例所提供的任一种拍照方法所能实现的有益效果,详见前面的实施例,在此不再赘述。
以上对本申请实施例所提供的一种拍照方法、装置、电子设备及存储介质进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。