发明内容
本发明提供一种应用于直录播***中的运动目标检测处理方法及设备,以解决上述问题。
本发明提供一种应用于直录播***中的运动目标检测处理方法。上述方法包括以下步骤:图形处理器获取待检测图像;所述图形处理器采用n个并行线程分别执行n组运动目标检测流程,其中,每组运动目标检测流程包括t个运动目标检测流程,t、n为大于1的整数,一个所述运动目标检测流程是针对所述待检测图像中的一个像素点进行的运动目标检测处理过程;所述n个并行线程的执行结果是检测出的运动目标。
本发明还提供一种应用于直录播***中的运动目标检测处理设备,上述设备包括:图形处理器,其中,所述图形处理器包括:获取单元、存储单元和处理单元,所述获取单元和所述处理单元分别与所述存储单元连接;所述获取单元用于获取待检测图像,将所述待检测图像发送到所述存储单元;所述存储单元用于接收所述待检测图像发送的待检测图像,所述存储单元还用于存储接收到的所述待检测图像;所述处理单元用于采用n个并行线程分别执行n组运动目标检测流程,其中,每组运动目标检测流程包括t个运动目标检测流程,t、n为大于1的整数,所述处理单元还用于输出所述n个并行线程的执行结果,得到检测出的运动目标。
相较于先前技术,根据本发明提供的应用于直录播***中的运动目标检测处理方法及设备,所述图形处理器采用特殊的分配规则将图形处理器中的多个并列线程分配给运动目标检测流程,实现了线程的二维合理分配处理,充分利用了图形处理器中线程可并行执行的特性,提高了处理效率,并且将运动目标检测中大量的缓存数据存储于图形处理器中,这样减少了图形处理器与CPU之间的数据交换,从而提高了运动目标检测的处理效率。另外,图形处理器GPU相对CPU集成度高,价格低,进一步减小了设备的成本和体积。
具体实施方式
下文中将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
如图1所示为根据本发明的较佳实施例提供的应用于直录播***中的运动目标检测处理方法的流程图。如图1所示,本发明的较佳实施例提供的应用于直录播***中的运动目标检测处理方法包括步骤101-103。
步骤101:图形处理器获取待检测图像;
步骤102:所述图形处理器采用n个并行线程分别执行n组运动目标检测流程,其中,每组运动目标检测流程包括t个运动目标检测流程,t、n为大于1的整数,一个所述运动目标检测流程是针对所述待检测图像中的一个像素点进行的运动目标检测处理过程;
所述图形处理器采用n个并行线程分别执行n组运动目标检测流程的过程,包括:根据所述待检测图像的总像素点数目得到所需线程块的大小;以t个像素点作为一个像素点组对总像素点进行划分;将所述线程块划分为多个并行线程,并使各个并行线程与各个像素点组相对应(即一个并行线程对应t个像素点),得到并行线程序号与像素点组序号的对应关系(即像素点组序号与并行线程序号一一对应);根据所述对应关系,使各并行线程执行对应像素点组的运动目标检测流程。
根据所述待检测图像的总像素点数目得到所需线程块的大小的具体过程为:将所述所需线程块的大小设置为所述待检测图像的总像素点数目的1/t。
根据下述公式确定所述并行线程序号与像素点组序号的对应关系:index=y×width+4x;
其中,x是所述并行线程在x维上的并行线程序号,y是所述并行线程在y维上的并行线程序号,index是所述待检测图像上像素点组的序号,width为所述待检测图像的x维上的像素点总数目。
所述t为4。
所述运动目标检测流程是以下任意一种:背景差分检测流程、帧间差分检测流程、光流检测流程。
所述待检测图像存储于所述图形处理器中。
步骤103:所述n个并行线程的执行结果是检测出的运动目标。
在下文中以背景差分检测流程为例来详细说明本发明的技术方案:
图形处理器进行初始化过程,进行上下文的创建、命令队列的创建和缓存的创建。
处理器(CPU)将当前帧图像发送至图形处理器,图形处理器将该当前帧图像和前一帧图像分别保存在缓存中,(假设当前处理的图像尺寸为1920×1080的图像),待检测图像像素点的示意图,具体如图2所示。
为了提高图像处理器的处理效率,在本实施例中,以4个像素点作为一个像素点组在x维度上对总像素点进行划分,得到480×1080组像素点组,图形处理器将每一组像素点组对应一个并行线程,这样所需要的线程块的大小为(x,y)=(480,1080),即如果要处理480×1080组像素点组,则需要480×1080个并行线程,每一个并行线程执行一组运动目标检测流程,而一组运动目标检测流程包含4个运动目标检测流程(即处理4个像素点的运动目标检测流程),使待检测图像中像素点组序号与并行线程序号一一对应,根据下述公式所述对应关系:index=y×width+4x;以并行线程(0,0)为例,其在x维上的并行线程序号为0,在y维上的并行线程序号为0,width为1920(可以理解是待检测图像的横向所拥有的像素点的数目),因此该并行线程(0,0)分配到的像素点组的序号为index=0×1920+4×0=0,序号为0的像素点组其所包含的4个像素点的编号分别为0、1、2、3。下面继续以并行线程(0,2)为例,并行线程(0,2)分配到的像素点组的序号为index=2×1920+4×0=3840。序号为3840的像素点组对应的像素点的编号为3840、3841、3842、3843。
下面以背景差分检测流程执行该运动目标检测流程为例,背景差分的检测处理是将当前帧图像的像素点的像素值减去背景帧图像的像素点的像素值的绝对值,得到背景差,即背景差=︱当前帧的像素点的像素值-前一帧的像素点的像素值︱。将背景差的预设值设置为30,若所述背景差大于等于预设值,则将当前所处理的像素点的灰度值设为255,若所述背景差小于预设值,则将当前所处理的像素点的灰度值设为0。并行线程(0,0)执行序号为0的像素点组(对应的像素点的编号为0、1、2、3)的运动目标检测流程。图形处理器检测到的前一帧(第3帧)图像中像素点的编号为0、1、2、3的像素值和当前帧(第4帧)图像中编号为0、1、2、3的像素点的像素值,具体下表所示:
|
当前帧的像素值 |
前一帧的像素值 |
背景差 |
像素点的编号为0 |
156 |
129 |
27 |
像素点的编号为1 |
146 |
138 |
8 |
像素点的编号为2 |
87 |
135 |
48 |
像素点的编号为3 |
144 |
192 |
48 |
像素点的编号为0的背景差小于预设值,输出灰度值为0的像素点,像素点的编号为1的背景差小于预设值,输出灰度值为0的像素点,像素点的编号为2的背景差大于预设值,输出灰度值为255的像素点,像素点的编号为3的背景差大于预设值,输出灰度值为255的像素点(输出结果中灰度值为255的像素点为运动目标)。将输出的像素点存入缓存中,由CPU进行读取,完成一帧图像的运动目标检测流程。
图3所示为根据本发明的较佳实施例提供的应用于直录播***中的运动目标检测处理设备的示意图。如图3所示,本发明的较佳实施例提供的应用于直录播***中的运动目标检测处理设备,包括图形处理器300,其中,所述图形处理器300包括:获取单元302、存储单元304和处理单元306,所述获取单元302和所述处理单元306分别与所述存储单元304连接;所述获取单元302用于获取待检测图像,将所述待检测图像发送到所述存储单元304;所述存储单元304用于接收所述待检测图像发送的待检测图像,所述存储单元304还用于存储接收到的所述待检测图像;所述处理单元用于采用n个并行线程分别执行n组运动目标检测流程,其中,每组运动目标检测流程包括t个运动目标检测流程,t、n为大于1的整数,所述处理单元还用于输出所述n个并行线程的执行结果,得到检测出的运动目标。
此外,关于上述设备的具体操作过程同上述方法所述,故于此不再赘述。
综上所述,根据本发明提供的应用于直录播***中的运动目标检测处理方法及设备,所述图形处理器采用特殊的分配规则将图形处理器中的多个并列线程分配给运动目标检测流程,实现了线程的二维合理分配处理,充分利用了图形处理器中线程可并行执行的特性,将运动目标检测中大量的缓存数据存储于图形处理器中,这样减少了图形处理器与CPU之间的数据交换,从而提高了运动目标检测的处理效率。另外,图形处理器GPU相对CPU集成度高,价格低,进一步减小了设备的成本和体积。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。