一种背景模型和运动物体检测方法及系统的制作方法_3

文档序号:9616637阅读:来源:国知局
也被包括运动物体边缘 的矩形框所限制。
[0113] 例如,对如附图7所示的检测到的明显运动部位进行基于深度连续性的区域增 长,即从左右手的部分开始往附图10所示的1-8这八个方向进行增长,所谓"增长"就是 在输入帧F中找到与左右手在深度上连续的像素点,并判定这些像素点属于运动物体,再 结合运动物体边缘图像,使得增长范围不超出运动物体边缘以及矩形框,最终找到输入帧F 这个深度图像中明显运动部位所属于的完整的人。在腿以上部位进行八个方向的增长是由 于身体与明显运动部位连接的位置不能确定在哪个方位,且八个方向皆有可能。但当算法 判断出增长位置到了腿部时,再往下就只有与地面相连并对人产生支撑作用的腿了,故将 增长方向限定在6-8这三个向下的方向。
[0114] 这样做的好处是有效解决了脚部和地面相连的问题,因为在实际的深度图中,由 于人的脚部是站立在地面上的,所以将会造成脚部和地面在各个方向上深度都是连续变化 的。而传统的基于深度连续性的区域增长算法使用的是对深度图进行全区域搜索,可参考 附图10。这样的事实导致传统的基于深度连续性的区域增长算法无法找到脚部和地面连接 的边缘,因此如果不采取特殊措施,在检测过程中很容易把地面和运动的人体连在一起,导 致检测无效。
[0115] 步骤S600 :输出完整运动物体。
[0116] 参照附图12,为本发明提供的背景模型和运动物体检测方法实施例中最终检测到 的完整运动物体0不意图。
[0117] 根据步骤S500中增长出的结果,得到输入帧F中明显运动部分所属于的运动物 体,将属于运动物体部分的像素点的值标为1,其余像素点的值标为〇,从而得到一个0/1分 布的完整运动物体0的图像。
[0118] 步骤S700 :更新背景帧,
[0119] 利用最终检测到的完整运动物体0,所有在完整运动物体0中值为0的像素点,在 输入帧F中均能找到相同位置的像素点,将输入帧F中这些所述像素点判定为输入帧F中 的背景像素,由于输入帧F中的背景像素含有在背景帧B被明显运动部位遮挡住的部分,所 以,输入帧F中的背景像素可用来在当前输入帧F处理结束之后更新背景帧B,从而保证背 景帧B跟上输入帧F的变化。
[0120] 从上述实施例可以看出,本发明提供的背景模型和运动物体检测方法不需要专门 训练背景模型,即插即用,而且可以学习随着时间变化的背景,并且不要求特定的初始条 件,运动物体可以自始至终处于视野里,也可以一直处于运动状态。该方法不需要大量的运 算,很适合于计算资源有限的场合,例如移动设备或者嵌入式设备。
[0121] 较佳的,参照附图13,为本发明提供的背景模型和运动物体检测方法实施例中步 骤S100的进一步具体流程示意图。
[0122] 所述模型初始化的步骤S100还可进一步包括以下步骤:
[0123] 步骤S101 :设定用来区别当前运动像素点和当前背景像素点的负阈值-Thp以及 用于区别前一刻运动像素点和前一刻背景像素点的正阈值Th2。
[0124] 本实施例中,正负阈值的选取应参考运动物体所在环境加以判断,例如人和背景 的距离的大小,一般选取正负阈值的绝对值不小于0. 5米。
[0125] 步骤S102 :对输入帧F和背景帧B进行做差运算,即对输入帧F和背景帧B中对 应位置的点进行做差Α,-Β#
[0126] 步骤S103 :对深度差小于负阈值-^^的像素点,判定为当前运动像素点,将所述 当前运动像素点的%,值在掩码帧Μ中标记为1,其余的像素点判定为当前背景像素点,将 所述当前背景像素点的Mg值在掩码帧Μ中标记为0,如公式(1)所示。
[0127]
[0128] 步骤S104 :如公式(2)所示,对深度差大于正阈值11!2的像素点,判定为前一刻运 动像素点,将所述前一刻运动像素点的ιγ,值在标号帧τ中标记为〇,其余的像素点判定为 前一刻背景像素点,将所述前一刻背景像素点的ιγ,值在标号帧τ中标记为1。
[0129]
[0130] 其中,步骤S103与步骤S104的顺序可以互换,也可以同时执行。
[0131] 步骤S105 :将掩码帧Μ初始时刻的第一帧单独保存为初始运动物体掩码帧Μ。,接 下来的时刻中,掩码帧Μ均表不运动物体掩码帧。
[0132] 从上述步骤可以看出,将掩码帧Μ作为整体物体检测的起始条件,这可以有效去 除深度图像本身的噪声,减小误判的可能性。
[0133] 参照附图14,为本发明提供的背景模型和运动物体检测方法实施例中步骤S200 的进一步具体流程示意图;
[0134] 较佳的,明显运动部位检测的步骤S200中,所述一种快速的多目标标记和提取算 法,还可进一步包括以下步骤:
[0135] 步骤S201 :输入0/1分布的运动物体掩码帧Μ图像和深度图像输入帧F。
[0136] 步骤S202 :初始化表示物体的数据结构:{矩形框=空,均值=0,像素点集合= 空},拷贝0/1分布的运动物体掩码帧Μ到标号帧Τ,并设定当前的标号值初始值为2,标号 值用来将标号帧Τ中满足条件的像素点的ιγ,值替换成对应的标号值。
[0137] 步骤S203 :从左到右,从上到下,逐行扫描标号帧T。其中,也可以从右到左,从下 到上,或采用其他顺序扫描。
[0138] 步骤S204 :如果发现0/1分布的标号帧Τ上的一个像素点的L值为1,则将所述 像素点的IV,值重新赋值为当前的标号值,接着从输入帧F上获取该像素点对应的深度值, 重新计算当前标有相同标号值的所有像素点的深度均值,更新当前深度均值,将当前深度 均值、该像素点位置及其相关信息一起压入堆栈。将处理过的像素点的IV,值重置为0,之 后不扫描该点。其中,在扫描标号帧T的过程中,如果标号帧T上的一个像素点的值为0则 继续向下一个像素点扫描。
[0139] 步骤S205:如果堆栈非空,从堆栈弹出一个标号帧T上的像素点,搜索该像素点的 邻域像素点,如果某个邻域像素点的IV,值为1,将该像素点的Tu值赋值为当前标号值,并 把该像素点和深度图像输入帧F上对应像素点的相关信息压入堆栈。
[0140] 步骤S206 :如果堆栈为空,标号值增加1,并把现有的像素点集合和信息拷贝到输 出序列中。
[0141] 步骤S207 :直到整个图形扫描完毕,输出所有提取到的物体及多个物体的深度均 值、像素点集合及其相关信息。
[0142] 步骤S200的目的是将明显运动部分所处位置,即标号帧T中标1的属于不同明显 运动部位的像素点同时提取出来,并将深度图像输入帧F中对应像素点的深度信息加以提 取和保存。例如,当步骤S200的输入为附图4所示的标号帧T和附图3所示的输入帧F时, 标号帧T中所有属于明显运动部位的像素点标号均为1。本算法要将属于不同的明显运动 部位的像素点标记为不同的标号值,即将如附图4所示的标号帧T中左右两只手中原本全 部标为1的像素点分别标记成不同的标号值,例如附图7中两只手上的像素点的值分别为2 和3。由于标号帧T原本是0/1分布的,故本实施例中标号值从2开始。在执行步骤S203的 扫描过程中,遇到的第一个标号帧T中值为1的像素点将会被执行步骤S204所述的动作, 并将其相关信息计算并压入堆栈,其中,所述遇到的第一个标号帧T中值为1的像素点会根 据扫描顺序的不同出现在标号帧T上的不同位置。接下来,执行步骤S205,搜索这个值为1 的像素点相邻的像素点并进行处理,直到附图7中人的右手所有值为1的像素点都被标成 了 2,当右手中所有的像素点被标记完毕后,堆栈为空,接下来执行步骤S206,标号值加1变 成了 3,此时回到步骤S205,重复上述过程标记附图7中人的左手。最终会将标号帧T中所 有属于明显运动部分的像素点标记为不同的标号值输出。
[0143] 参照附图15,为本发明提供的背景模型和运动物体检测方法实施例中步骤S400 的进一步具体流程示意图;
[0144] 较佳的,限定搜索区域的步骤S400中,所述一种基于深度连续性的矩形框提取方 法,还可以进一步包括以下步骤:
[0145] 步骤S401 :输入为0/1分布的运动物体边缘图像和检测到的明显运动部位。
[0146] 步骤S402 :初始化表示物体的数据结构:{矩形框=空,均值=0,像素点集合= 空}。
[0147] 步骤S403 :从左到右,从上到下,分别逐行扫描运动物体边缘图像和检测到的明 显运动部位。其中,也可以从右到左,从下到上,或采用其他顺序扫描。
[0148] 步骤S404 :如果发现运动物体边缘图像中的一个像素点的值为1,并且检测到的 明显运动部位中对应位置的像素点的值也是1,则更新矩形框使矩形框包含该像素点,更新 所述检测到的明显运动部位中对应值也是1的像素点的均值,同时把该点位置及其相关信 息压入堆栈。将处理过的像素点重置为0,之后不扫描该像素点。
[0149] 通过步骤S404看到,在扫描过后,若运动物体边缘图像中的一个像素点的值为1, 先不直接处理该像素点对应的深度值及相关信息,而是仅当检测到的明显运动部位中对应 像素点的值也是1时,才对该像素点的深度值及相关信息进行处理,通过这种方式可以使 得对一个像素点是否属于运动物体的判断更加准确。
[0150] 步骤S405 :如果堆栈非空,从堆栈弹出一个像素点,搜索该像素点的邻域,如果某 个邻域像素点的值为1并且和当前堆栈弹出像素点的距离小于给定阈值,更新并把该像素 点位置及其相关信息压入堆栈。将处理过的像素点重置为〇,之后不扫描该像素点。
[0151] 步骤S406 :如果堆栈为空,把现有的像素点集合和信息拷贝到输出序列中作为一 个物体的矩形
当前第3页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1