具体实施方式
为了使本技术领域的人员更好地理解本申请中的技术方案,下面将结合本申请实施方式中的附图,对本申请实施方式中的技术方案进行清楚、完整地描述,显然,所描述的实施方式仅仅是本申请一部分实施方式,而不是全部的实施方式。基于本申请中的实施方式,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施方式,都应当属于本申请保护的范围。
本申请提供一种图像检测方法,所述方法可以应用于视频播放网站的后台服务器中。所述后台服务器可以存储从视频中抽取的视频帧,并且可以利用本申请提供的技术方案,针对抽取的视频帧进行清晰度的检测,最终可以将清晰度满足要求的视频帧保留下来。
请参阅图1,本实施方式中提供的图像检测方法可以包括以下步骤。
S1:获取待处理的目标图像,并确定所述目标图像的全局边缘特征。
在本实施方式中,所述目标图像可以是从视频中抽取的一帧视频画面,也可以是需要进行清晰度检测的任意图像。在清晰的图像中,不同对象之间的界线通常比较明显,这种不同对象之间的界线可以作为图像中的边缘特征。上述的不同对象,可以指不同的物体、环境、人物,也可以是同一个物体中的不同配件,或者同一个环境中的不同场景,又或者同一个人物中的不同器官。也就是说,上述的不同对象,可以指不同的个体,也可以指相同个体中的不同组成部分。通常而言,在清晰的图像中,边缘特征的变化程度通常比较剧烈,而在模糊的图像中,边缘特征的变化程度通常比较缓慢。鉴于此,在本实施方式中,首先可以对目标图像的整体进行考量,确定所述目标图像的全局边缘特征。
在本实施方式中,可以通过多种方式确定所述目标图像的全局边缘特征。例如,可以通过基于搜索或者基于零交叉的方式来检测目标图像中的全局边缘特征。具体地,基于搜索的边缘检测方法首先可以计算目标图像的边缘强度,该边缘强度通常用一阶导数表示,该一阶导数例如可以是目标图形的梯度模;然后,可以计算边缘的局部方向,该边缘的局部方向例如可以是梯度的方向,并可以利用此梯度的方向找到局部梯度模的最大值,其中,出现局部梯度模的最大值的位置便可以表征边缘特征所处的位置。此外,基于零交叉的边缘检测方法通常可以由目标图像的二阶导数的零交叉点来定位边缘特征。通常可以用拉普拉斯算子对目标图像进行处理,或者利用非线性微分方程的零交叉点来找寻边缘特征。
在一个实施方式中,可以采用拉普拉斯变换的方法,来确定所述目标图像的全局边缘特征。具体地,拉普拉斯算子是一个二阶的微分算子,针对函数f(x,y),拉普拉斯算子的定义可以如下:
其中:
通过将上述的两个公式结合,便可以得到拉普拉斯算子二阶微分的离散形式:
▽2f(x,y)=f(x+1,y)+f(x-1,y)+f(x,y+1)+f(x,y-1)-4f(x,y)
上述的离散形式可以看作一个多项式,其中,该多项式可以由9个单项式构成,只不过,其中4个单项式的系数均为0,因此只显示出剩余的5个单项式。将上述多项式中各个单项式的系数抽取出来,可以得到3×3的滤波矩阵:
这样,便可以获取到表征拉普拉斯算子二阶微分的离散形式的滤波矩阵,该滤波矩阵中的元素可以用于表征指定多项式中单项式的系数,所述指定多项式便可以是上述的离散形式。
在本实施方式中,在获取到所述滤波矩阵之后,可以将所述目标图像的数据与所述滤波矩阵进行卷积。具体地,所述目标图像的数据可以是按照所述目标图像中像素点的排列顺序进行排列的像素值,所述像素值可以是像素点的灰度值,也可以是像素点在当前色系空间中的颜色分量值。例如,当前的色系空间为RGB(Red,Green,Blue,红绿蓝)色系,那么所述像素值便可以是表征R、G、B这三个颜色分量的分量值。当然,在实际应用中,多个颜色分量的分量值也可以通过加权求和的方式,得到一个数值,并将该数值作为像素点的像素值。这样,通过提取所述目标图像中各个像素点的像素值,从而可以构建按照所述像素点进行排列的像素值矩阵,该像素值矩阵便可以作为上述的目标图像的数据。
在本实施方式中,将所述像素值矩阵与所述滤波矩阵进行卷积运算后,可以得到卷积后的图像数据,所述卷积后的图像数据可以是与所述像素值矩阵具备相同维数的矩阵,该矩阵中的数值可以是卷积运算之后对应的数值。
在本实施方式中,经过卷积运算之后的目标图像,边缘部分的像素值较大,而平滑部分的像素值较小,为了衡量边缘特征的变化程度,可以计算卷积后的图像数据的方差,并将计算得到的所述方差作为所述目标图像的全局边缘特征。具体地,在计算卷积后的图像数据的方差时,首先可以确定所述目标图像的宽度和高度,并基于所述宽度、高度以及所述卷积后的图像数据中像素点的像素值,计算所述卷积后的图像数据的均值。在一个实际应用中,所述均值的计算公式可以如下所示:
其中,μ表示所述均值,w表示所述目标图像的宽度,h表示所述目标图像的高度,▽2f(i,j)表示卷积后的图像中,坐标值为(i,j)的像素值。
然后,根据所述宽度、高度、均值以及所述卷积后的图像数据中像素点的像素值,可以计算所述卷积后的图像数据的方差。在一个实际应用示例中,所述方差的计算公式可以如下所示:
其中,σ表示所述方差。
需要说明的是,上述的宽度和高度,并不是指目标图像的实际尺寸,而是指目标图像横向和纵向分别包含的像素点的个数。例如,所述目标图像在横向的方向上共包含1080个像素点,那么w便可以为1080。
S3:若所述全局边缘特征表征所述目标图像为非模糊图像,从所述目标图像中截取区域图像,并确定所述区域图像的局部边缘特征。
在本实施方式中,根据所述全局边缘特征,可以初步判定所述目标图像是否为模糊图像。具体地,可以根据步骤S1汇总计算出的方差,来判断目标图像是否为模糊图像。由于模糊的图像中边缘特征的变化都不剧烈,因此方差的数值也较小,此时,可以预先设置一个指定阈值,若计算得到的所述方差大于或者等于该指定阈值,则可以判定所述目标图像为非模糊图像;否则,可以判定所述目标图像为模糊图像。在实际应用中,所述指定阈值可以根据需要灵活调整。例如,所述指定阈值可以为50,当计算出的方差小于50时,便判定该目标图像为模糊图像。
在本实施方式中,若所述全局边缘特征表征所述目标图像为模糊图像,则可以直接将该目标图像标记为模糊图像,不需要继续进行后续的检测步骤。而若所述全局边缘特征表征所述目标图像为非模糊图像,为了能够得到精确的检测结果,还需要从所述目标图像中截取区域图像,并针对所述区域图像的局部边缘特征进行检测。
请参阅图2,在本实施方式中,考虑到视频的画面通常由多个区域构成,其中,A1、A3、A4以及A6这四个区域可能会出现黑边,其中,A6还可能出现字幕,A0、A2、A5、A7这四个区域可能会出现台标、播放平台标识、作品名称等信息,因此,上述列举的这8个区域中可能会存在比较明显的边缘特征,而这些边缘特征其实与真实的画面信息并没有关联,因此,为了提高图像检测的精度,可以不考虑这8个区域的画面,而仅针对A8的区域图像进行进一步地检测。因此,在本实施方式中,可以从所述目标图像中截取区域图像,并确定所述区域图像的局部边缘特征。所述区域图像便可以是上述的用于展示实际画面内容的A8区域。
在本实施方式中,可以按照一定的标准参数对目标图像进行截取。例如,可以预先确定横向截取比例和纵向截取比例,然后根据横向截取比例和纵向截取比例从所述目标图像的中间区域截取出所述区域图像。例如,所述横向截取比例可以是0.6,所述纵向截取比例可以是0.4,这样,截取后的区域图像的宽度可以为目标图像的60%,高度可以为目标图像的40%。
在本实施方式中,在截取出所述区域图像之后,可以按照类似的方式,确定所述区域图像的局部边缘特征。具体地,同样可以获取滤波矩阵,所述滤波矩阵中的元素可以用于表征指定多项式中单项式的系数。所述指定多项式便可以是上述的拉普拉斯算子二阶微分的离散形式。然后,可以将所述区域图像的数据与所述滤波矩阵进行卷积,并计算卷积后的图像数据的方差,并将计算得到的所述方差作为所述局部图像的局部边缘特征。
只不过,由于区域图像是从目标图像中截取的,因此区域图像中仅包含目标图像中的部分像素点。那么在计算方差时,针对其中的参数需要进行调整。具体地,首先可以确定所述区域图像的起始像素点在所述目标图像中的坐标值。所述起始像素点例如可以是所述区域图像的左上角顶点的像素点。然后,可以获取所述区域图像的宽度和高度。需要说明的是,所述区域图像的宽度可以指区域图像横向方向上最后一个像素点在目标图像中的横坐标值,所述区域图像的高度可以指区域图像纵向方向上最后一个像素点在目标图像中的纵坐标值。例如,所述区域图像在横向方向上,最后一个像素点的坐标值为(1020,y),其中,y可以根据像素点所处位置的不同而进行变化,但横坐标都是1020,因此,1020便可以作为所述区域图像的宽度。这样,假设区域图像的起始像素点的坐标值为(5,10),那么,该区域图像的像素点的横坐标便可以从5变化至1020。
在本实施方式中,可以基于所述起始像素点的坐标值、宽度、高度以及所述卷积后的图像数据中像素点的像素值,计算所述卷积后的图像数据的均值。在一个应用示例中,计算所述均值的公式可以如下所示:
其中,μ’表示所述均值,w’表示所述区域图像的宽度,h’表示所述目标图像的高度,▽2f(i,j)表示卷积后的图像中,坐标值为(i,j)的像素值,c表示起始像素点的横坐标,d表示起始像素点的纵坐标。
然后,可以根据所述坐标值、宽度、高度、均值以及所述卷积后的图像数据中像素点的像素值,计算所述卷积后的图像数据的方差。在一个应用示例中,计算所述方差的公式可以如下所示:
其中,σ’表示所述方差。
S5:若所述局部边缘特征表征所述区域图像为非模糊图像,在所述目标图像中识别出包含人脸的局部图像,并确定所述局部图像的边缘特征;若所述局部图像的边缘表征所述局部图像为非模糊图像,将所述目标图像标记为清晰图像。
在本实施方式中,根据所述区域图像的局部边缘特征,可以判断所述区域图像是否为模糊图像。在实际应用中,同样可以设定一个指定阈值,并将步骤S3中计算出的方差与所述指定阈值进行比较,从而判断该区域图像是否为模糊图像。
在一个实施方式中,为了提高图像的检测精度,可以针对不同的分辨率,设定不同的阈值。具体地,所述分辨率可以是目标图像的分辨率。例如,当所述目标图像的分辨率小于或者等于640*480时,关联的判定阈值可以是60;又例如,当所述目标图像的分辨率大于1280*720时,关联的判定阈值可以是6。这样,再根据所述局部边缘特征判断区域图像是否为模糊图像时,可以检测所述目标图像的分辨率,并获取与所述分辨率相关联的判定阈值,然后,若计算得到的所述方差大于或者等于所述判定阈值,可以判定所述区域图像为非模糊图像,否则,可以判定所述区域图像为模糊图像。
在本实施方式中,若根据所述局部边缘特征判定所述区域图像为模糊图像,可以直接将所述目标图像标记为模糊图像,而不需要进行后续的检测步骤。若所述局部边缘特征表征所述区域图像为非模糊图像,那么可以针对所述目标图像中包含人脸的局部图像进一步地进行检测。这样处理的目的在于,用户在观看视频时,通常比较关注人脸的表情,如果人脸是模糊的,就算图像的其他区域很清晰,那么用户也会觉得这张图像是比较模糊的。因此,可以针对包含人脸的局部图像进行专门的检测。
在本实施方式中,可以采用上述类似的方式确定所述局部图像的第一类边缘特征。具体地,可以获取滤波矩阵,所述滤波矩阵中的元素可以用于表征指定多项式中单项式的系数。然后,可以将所述局部图像的数据与所述滤波矩阵进行卷积,并计算卷积后的图像数据的第一方差,并将计算得到的所述第一方差作为所述局部图像的第一类边缘特征。其中,计算方差的过程与以上实施方式中的方式类似,这里便不再赘述。在本实施方式中,考虑到包含人脸的局部图像往往比人脸实际的区域会大一些,如果引入非人脸区域,那么会对最终结果产生影响。为了解决这个问题,在本实施方式中,首先可以将所述局部图像划分为指定数量的子区域图像,并分别将各个所述子区域图像的数据与所述滤波矩阵进行卷积,从而得到多个卷积后的图像数据。然后,可以按照以上的方式,计算各个所述子区域图像卷积后的图像数据的第二方差,从而可以得到多个第二方差。此时,为了避免引入非人脸区域带来的误差,可以将计算得到的第二方差中的最小方差作为所述局部图像的第二类边缘特征。具体地,请参阅图3,可以将包含人脸的局部图像划分为4块子区域图像B0、B1、B2、B3,然后分别计算这块子区域图像的方差,从而可以得到4个第二方差,然后再将这四个第二方差中的最小方差作为所述第二类边缘特征。这样,所述第一类边缘特征和所述第二类边缘特征的组合便可以作为所述局部图像的边缘特征。
在本实施方式中,在计算得到所述第一方差和所述最小方差后,可以进一步地判断所述局部图像是否为模糊图像。具体地,可以分别给第一方差和最小方差设定对应的判定阈值,并通过与判定阈值之间的比较,来判断局部图像是否为模糊图像。在实际应用中,判定阈值可以基于局部图像在整体的目标图像中所占的大小进行设定,局部图像所占的比例越大,那么判定阈值可以越小。这样,首先可以确定所述局部图像所占的区域与所述目标图像所占的区域之间的比值,并获取与所述比值相关联的第一判定阈值和第二判定阈值。举例来说,第一判定阈值和第二判定阈值可以与比值的范围进行关联。例如,当该比值大于1%但是小于2%时,第一判定阈值可以设定为25,第二判定阈值可以设定为10。这样,假设当前的比值为1.5%,若第一方差小于或者等于25,并且所述最小方差小于或者等于10时,可以判定所述局部图像为模糊图像,否则,可以判定所述局部图像为非模糊图像。也就是说,在获取与所述比值相关联的第一判定阈值和第二判定阈值之后,可以将第一方差与所述第一判定阈值进行比较,并且将所述最小方差与所述第二判定阈值进行比较。若所述第一方差小于或者等于所述第一判定阈值,并且所述最小方差小于或者等于所述第二判定阈值,判定所述局部图像为模糊图像;否则,判定所述局部图像为非模糊图像。
当然,在实际应用中,针对一些极端情况的比值而言,可能仅会对第一判定阈值进行设定,而针对第二判定阈值,可以不进行设定,或者可以视为无穷大。例如,当比值小于0.5%时,第一判定阈值可以设定为600,第二判定阈值可以不进行设定,或者可以设定为无穷大。又例如,当比值大于或者等于8%时,第一判定阈值可以设定为5,同样地,第二判定阈值可以不进行设定,或者可以设定为无穷大。
在本实施方式中,若所述局部图像依然被判定为非模糊图像,那么表示所述目标图像经过上述的多个步骤的检测,结果均为非模糊图像,此时,可以将所述目标图像标记为非模糊图像。后续可以利用该目标图像生成视频的封面。此外,若在上述任意一个步骤中,判定结果为模糊图像,则可以直接将该目标图像标记为模糊图像。后续则可以将该目标图像剔除。
本申请还提供一种计算机存储介质,其上存储有计算机程序,所述计算机程序被执行时,实现以下步骤:
S1:获取待处理的目标图像,并确定所述目标图像的全局边缘特征。
S3:若所述全局边缘特征表征所述目标图像为非模糊图像,从所述目标图像中截取区域图像,并确定所述区域图像的局部边缘特征。
S5:若所述局部边缘特征表征所述区域图像为非模糊图像,在所述目标图像中识别出包含人脸的局部图像,并确定所述局部图像的边缘特征;若所述局部图像的边缘表征所述局部图像为非模糊图像,将所述目标图像标记为清晰图像。
在一个实施方式中,所述计算机程序被执行时,还实现以下步骤:
获取滤波矩阵,所述滤波矩阵中的元素用于表征指定多项式中单项式的系数;
将所述局部图像的数据与所述滤波矩阵进行卷积,并计算卷积后的图像数据的第一方差,并将计算得到的所述第一方差作为所述局部图像的第一类边缘特征;
将所述局部图像划分为指定数量的子区域图像,并将所述子区域图像的数据与所述滤波矩阵进行卷积;
计算所述子区域图像卷积后的图像数据的第二方差,并将计算得到的第二方差中的最小方差作为所述局部图像的第二类边缘特征;
其中,所述第一类边缘特征和所述第二类边缘特征的组合作为所述局部图像的边缘特征。
在一个实施方式中,所述计算机程序被执行时,还实现以下步骤:
确定所述局部图像所占的区域与所述目标图像所占的区域之间的比值,并获取与所述比值相关联的第一判定阈值和第二判定阈值;
若所述第一方差小于或者等于所述第一判定阈值,并且所述最小方差小于或者等于所述第二判定阈值,判定所述局部图像为模糊图像;否则,判定所述局部图像为非模糊图像。
在本申请中,所述计算机存储介质可以包括用于存储信息的物理装置,通常是将信息数字化后再以利用电、磁或者光学等方法的媒体加以存储。本实施方式所述的计算机存储介质又可以包括:利用电能方式存储信息的装置,如RAM、ROM等;利用磁能方式存储信息的装置,如硬盘、软盘、磁带、磁芯存储器、磁泡存储器、U盘;利用光学方式存储信息的装置,如CD或DVD。当然,还有其他方式的存储器,例如量子存储器、石墨烯存储器等等。
在本申请中,所述处理器可以按任何适当的方式实现。例如,所述处理器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application SpecificIntegrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式等等。
本申请还提供一种图像检测装置,所述图像检测装置中设置有上述的计算机存储介质。
本说明书实施方式提供的计算机存储介质以及图像检测装置,其实现的具体功能,可以与本说明书中的前述实施方式相对照解释,并能够达到前述实施方式的技术效果,这里便不再赘述。
由上可见,本申请提供的技术方案,可以对目标图像的清晰度进行多次判定,从而提高清晰度的检测精度。具体地,首先可以针对整个目标图像,确定全局边缘特征。该全局边缘特征可以反应目标图像的整体是否达到指定的清晰度要求。若该全局边缘特征表征所述目标图像为非模糊图像,则可以进一步地针对目标图像中局部的区域图像进行检测。在本申请中,可以将所述目标图像中具备明显边缘特征的区域剔除,剩下的区域便可以作为进一步检测的对象。按照类似的方式,可以确定该区域图像的局部边缘特征,若该局部边缘特征依然表征区域图像为非模糊图像,则可以进一步地对目标图像中的人脸进行识别。这样处理的意义在于,若目标图像中背景都很清晰,但是人脸不清晰的话,用户还是会觉得目标图像不够清晰,因此,可以从目标图像中识别出包含人脸的局部图像,并检测该局部图像的清晰度。若该局部图像依然清晰,那么可以将所述目标图像标记为清晰图像。当然,如果上述过程中,有一个判定过程表征该目标图像为模糊图像,则可以结束检测过程,直接将该目标图像标记为模糊图像。由上可见,本申请提供的技术方案,针对目标图像可以进行多次的清晰度判定,从而可以提高清晰度检测的精度。
在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(Programmable Logic Device,PLD)(例如现场可编程门阵列(Field Programmable GateArray,FPGA))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字***“集成”在一片PLD上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logic compiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(Hardware Description Language,HDL),而HDL也并非仅有一种,而是有许多种,如ABEL(Advanced Boolean Expression Language)、AHDL(Altera Hardware DescriptionLanguage)、Confluence、CUPL(Cornell University Programming Language)、HDCal、JHDL(Java Hardware Description Language)、Lava、Lola、MyHDL、PALASM、RHDL(RubyHardware Description Language)等,目前最普遍使用的是VHDL(Very-High-SpeedIntegrated Circuit Hardware Description Language)与Verilog2。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
本领域技术人员也知道,除了以纯计算机可读程序代码方式实现图像检测装置以外,完全可以通过将方法步骤进行逻辑编程来使得图像检测装置以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种图像检测装置可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施方式或者实施方式的某些部分所述的方法。
本说明书中的各个实施方式均采用递进的方式描述,各个实施方式之间相同相似的部分互相参见即可,每个实施方式重点说明的都是与其他实施方式的不同之处。尤其,针对计算机存储介质和图像检测装置的实施方式来说,均可以参照前述方法的实施方式的介绍对照解释。
本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
虽然通过实施方式描绘了本申请,本领域普通技术人员知道,本申请有许多变形和变化而不脱离本申请的精神,希望所附的权利要求包括这些变形和变化而不脱离本申请的精神。