基于向下倾角方向的单台TOF相机人体降噪方法及系统与流程

文档序号:18745251发布日期:2019-09-21 02:15阅读:257来源:国知局
基于向下倾角方向的单台TOF相机人体降噪方法及系统与流程

本发明涉及计算机视觉技术领域,尤其涉及一种基于向下倾角方向的单台TOF相机人体降噪方法及系统。



背景技术:

现有技术中,TOF相机的工作原理如图1所示,TOF是Time of flight的简写,直译为飞行时间的意思。所谓飞行时间法3D成像,是通过给目标连续发送光脉冲,然后用传感器接收从物体返回的光,通过探测光脉冲的飞行(往返)时间来得到目标物距离信息就是深度图像(以下简称深度图像)。

目前,通过TOF相机对人体进行检测也是计算机视觉领域一个重要的研究方向,目前对于人体姿态检测的方法大多基于2D图像。相比于2D图像,深度图像因具有的三维空间特征从而为消除人体检测的光照变化、表观近似和遮挡阴影等干扰因素提供了可能,其中TOF相机以其性能和原理的特点被采用较多,而用TOF相机采集深度图像又以单个TOF正面拍摄研究为主(如图1)。对于TOF相机拍摄的深度图像,人体姿态检测的方法多采用提取人体骨架的方式。

但是,在现有技术中,还存在很多缺陷:

一般情况下,现有技术中研究TOF相机多数要求相机必须正对物体拍摄,在特殊的场合不适用;

另外,现有技术中既要保持较高的姿势识别正确率,又要减少算法的复杂度以实现嵌入式技术还不成熟,而且算法复杂度高,导致耗时较多,对于需要高帧率的检测场景也不适用;

再者,单个TOF存在固有的检测精度不高,噪声较多,像素分辨率低等缺点,而且单个TOF的拍摄角度和视野范围也存在局限性,对于360度空间或更大范围空间的深度信息结合在一起目前尚没有完整的解决方案。



技术实现要素:

本发明针对现有技术中的缺点,提供了一种基于向下倾角方向的单台TOF相机人体降噪方法及系统。

为了解决上述技术问题,本发明通过下述技术方案得以解决:

一种基于向下倾角方向的单台TOF相机人体降噪方法,包括以下步骤:

分别获取有人体的前景深度图像以及背景深度图像,对有人体的前景深度图像和背景深度图像进行背景差分处理,得到只有人体的深度图像;

把所述只有人体的深度图像中的每个像素的深度数据映射到二维图像中,得到映射的二维图像;

对所述二维图像进行形态学滤波处理,采用开运算方式处理,去除人体边缘的噪声,得到滤波后的二维图像;

在滤波后的二维图像中找到人体对应的每个像素的深度数据,对所述深度数据进行梯度滤波,得到梯度滤波图像;

将梯度滤波图像中的深度数据转化成世界坐标系下的人体点云数据,对人体点云数据进行平滑处理,得到相对平滑的人体点云数据。

作为一种可实施方式,所述对有人体的前景深度图像和背景深度图像进行背景差分处理,具体为:

将有人体的前景深度图像和背景深度图像进行相减,公式如下:

deep人=||deep场景-deep背景||

其中,deep人表示只有人体的深度图像,deep场景表示有人体的前景深度图像,deep背景表示背景深度图像。

作为一种可实施方式,所述在滤波后的二维图像中找到人体对应的每个像素的深度数据,对所述深度数据进行梯度滤波,得到梯度滤波图像,具体为:

对每个人体点计算这个点和周围n*n大小的核的梯度值x,若-a<x<a,其中,a能进行调节,则认为这个梯度变化不快,能保留这个点的梯度;当周围n*n大小的核的每一个点都和中心点进行比较后,再根据权重对此点进行深度值的调节,得到梯度滤波图像。

作为一种可实施方式,所述将梯度滤波图像中的深度数据转化成世界坐标系下的人体点云数据,具体为:

将梯度滤波图像中的深度数据先从图像坐标(x0,y0,z0)转换到相机坐标(x1,y1,z1),公式如下:

v=(x0-320*0.5,y0-240*0.5,foclen

x1=v.x*s

y1=v.y*s

z1=v.z*s

其中:foclen=320*0.5/tan[(90*0.5)*π/180]

scalefactor=0.041667

z0=img.at(y0,x0)-147

再从相机坐标(x1,y1,z1)转换到世界坐标(x2,y2,z2),公式如下:

pp=remap*p

x2=pp(0,0)

y2=pp(1,0)

z2=pp(2,0)

其中:P是一个[4*1]矩阵,P(0,0)=x1,p(1,0)=y1,p(2,0)=z1,p(3,0)=0,remap是变换的矩阵,图像中的每个像素点的坐标:(x0,y0,z0),其中z0表示这个像素点深度值,以相机为原点的三维坐标表示为:x1,y1,z1),v、s是参数,foclen、scalefoclen,是一个固定的系数,img.at(y0,x0)表示这一点的深度值。

作为一种可实施方式,所述对人体点云数据进行平滑处理,具体为:

对人体点云数据做卷积处理,得到平滑滤波器,通过平滑滤波器进行平滑处理,滤波器处理的输出像素值g(i,j,z)是输入图像像素值f(i+k,j+I,z+H)的加权和,公式如下:

g(i,j,z)=∑f(i+k,j+I,z+H)h(k,I,H)

其中,h(k,I,H),表示滤波器的加权系数,即滤波器的滤波系数。

一种基于向下倾角方向的单台TOF相机人体降噪系统,包括差分处理模块、映射模块、第一滤波模块、梯度滤波模块和转化处理模块;

所述差分处理模块,用于分别获取有人体的前景深度图像以及背景深度图像,对有人体的前景深度图像和背景深度图像进行背景差分处理,得到只有人体的深度图像;

所述映射模块,用于把所述只有人体的深度图像中的每个像素的深度数据映射到二维图像中,得到映射的二维图像;

所述第一滤波模块,用于对所述二维图像进行形态学滤波处理,采用开运算方式处理,去除人体边缘的噪声,得到滤波后的二维图像;

所述梯度滤波模块,用于在滤波后的二维图像中找到人体对应的每个像素的深度数据,对所述深度数据进行梯度滤波,得到梯度滤波图像;

所述转化处理模块,用于将梯度滤波图像中的深度数据转化成世界坐标系下的人体点云数据,对人体点云数据进行平滑处理,得到相对平滑的人体点云数据。

作为一种可实施方式,所述差分处理模块被设置为:

将有人体的前景深度图像和背景深度图像进行相减,公式如下:

deep人=||deep场景-deep背景||

其中,deep人表示只有人体的深度图像,deep场景表示有人体的前景深度图像,deep背景表示背景深度图像。

作为一种可实施方式,所述梯度滤波模块被设置为:

对每个人体点计算这个点和周围n*n大小的核的梯度值x,若-a<x<a,其中,a能进行调节,则认为这个梯度变化不快,能保留这个点的梯度;当周围n*n大小的核的每一个点都和中心点进行比较后,再根据权重对此点进行深度值的调节,得到梯度滤波图像。

作为一种可实施方式,所述转化处理模块被设置为:

将梯度滤波图像中的深度数据先从图像坐标(x0,y0,z0)转换到相机坐标(x1,y1,z1),公式如下:

v=(x0-320*0.5,y0-240*0.5,foclen)

x1=v.x*s

y1=v.y*s

z1=v.z*s

其中:foclen=320*0.5/tan[(90*0.5)*π/180]

scalefactor=0.041667

z0=img.at(y0,x0)-147

再从相机坐标(x1,y1,z1)转换到世界坐标(x2,y2,z2),公式如下:

pp=remap*p

x2=pp(0,0)

y2=pp(1,0)

z2=pp(2,0)

其中:P是一个[4*1]矩阵,P(0,0)=x1,p(1,0)=y1,p(2,0)=z1,p(3,0)=0,remap是变换的矩阵,图像中的每个像素点的坐标:(x0,y0,z0),其中z0表示这个像素点深度值,以相机为原点的三维坐标表示为:x1,y1,z1),v、s是参数,foclen、scalefoclen是一个固定的系数,img.at(y0,x0)表示这一点的深度值。

作为一种可实施方式,所述转化处理模块被设置为:

对人体点云数据做卷积处理,得到平滑滤波器,通过平滑滤波器进行平滑处理,滤波器处理的输出像素值g(i,j,z)是输入图像像素值f(i+k,j+I,z+H)的加权和,公式如下:

g(i,j,z)=∑f(i+k,j+I,z+H)h(k,I,H)

其中,h(k,I,H),表示滤波器的加权系数,即滤波器的滤波系数。

本发明由于采用了以上技术方案,具有显著的技术效果:

基于本发明的方法和系统,可用于向下倾角的TOF相机检测项目;用三维深度图像映射到二维图像进行需要的处理,避开三维点云数据的滤波,平滑,数据处理等时间复杂度较大的算法,最终才用三维数据做人体数据的平滑滤波。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1是现有技术中TOF相机工作原理示意图;

图2是垂直向下拍摄得到的深度图像;

图3是垂直向下拍摄得到的深度图像;

图4是倾斜向下拍摄得到的深度图像;

图5是本发明的整体流程示意图;

图6是膨胀操作示例图;

图7是膨胀的数学公式;

图8是腐蚀示例图;

图9是腐蚀数学公式;

图10为3*3梯度滤波权重图;

图11为二维图像均值滤波示意图;

图12为本发明系统的整体结构示意图。

具体实施方式

下面结合实施例对本发明做进一步的详细说明,以下实施例是对本发明的解释而本发明并不局限于以下实施例。

实施例1:

一种基于向下倾角方向的单台TOF相机人体降噪方法,如图5所示,包括以下步骤:

S100、分别获取有人体的前景深度图像以及背景深度图像,对有人体的前景深度图像和背景深度图像进行背景差分处理,得到只有人体的深度图像;

S200、把所述只有人体的深度图像中的每个像素的深度数据映射到二维图像中,得到映射的二维图像;

S300、对所述二维图像进行形态学滤波处理,采用开运算方式处理,去除人体边缘的噪声,得到滤波后的二维图像;

S400、在滤波后的二维图像中找到人体对应的每个像素的深度数据,对所述深度数据进行梯度滤波,得到梯度滤波图像;

S500、将梯度滤波图像中的深度数据转化成世界坐标系下的人体点云数据,对人体点云数据进行平滑处理,得到相对平滑的人体点云数据。

1.深度数据:图像中每个点的像素值就是指深度数据,即相机到这一像素点到的物体的距离(mm)。

2.深度图像:图像每个像素的值是深度数据组成的图像,(如图2-4所示,其实是把距离值转换成灰度值显示出来,而不是真正的深度)。

3.点云数据:由每个点到相机的距离转换成三维坐标形成的数据,是一连串的(x,y,z)的坐标形式。

本发明解决向下倾角方向的拍摄角度对于TOF相机成像影响的问题;解决单台TOF存在固有的检测精度不高,噪声较多,像素分辨率低,边缘信息容易出错的缺点对人体检测的影响。本发明可用于向下倾角的TOF相机检测项目;用三维深度图像映射到二维图像进行需要的处理,避开三维点云数据(x,y,z)的滤波,平滑,数据处理等时间复杂度较大的算法,最终才用三维数据做人体数据的平滑滤波。

在步骤S100中,所述对有人体的前景深度图像和背景深度图像进行背景差分处理,具体为:

将有人体的前景深度图像和背景深度图像进行相减,公式如下:

deep人=||deep场景-deep背景||

其中,deep人表示只有人体的深度图像,deep场景表示有人体的前景深度图像,deep背景表示背景深度图像。在本实施例中,背景差分意思是计算前景图像(有人)和后景图像(没有人)的差。因为图像的每个像素表示深度数据,所以相减后得到只有人的深度图像,而没有人的像素因为数值近似相同,相减后近似得到0。

在步骤S200中,把人体的深度图像中每个像素的值(深度值)映射到0-255的二维图像的像素值采用的数学公式为y=x/t*255,其中,t:深度上限,对于TOF相机可是个定值,x:TOF相机得到深度图像的该点的深度值。

在步骤S300中,开运算方式处理,即先腐蚀,后膨胀,在此,膨胀是求局部最大值的操作,从数学角度老说膨胀或者腐蚀操作是讲图像(或图像的一部分区域,称之为A))与核(称之为B)进行卷积,核可以是任何大小形状,多数情况下,核是一个小的正方形或者圆。而膨胀就是就局部最大值的操作,核B与图像卷积,即计算和B覆盖的区域的像素点的最大值,并把这个最大值赋值给参考点制定的像素,这样就会使图像的高亮区域增长,膨胀操作示例图如图6。膨胀的数学公式如图7。腐蚀和膨胀是一对反操作,是求局部最小值的操作,腐蚀示例图如图8,数学公式如图9。

在步骤S400中,所述在滤波后的二维图像中找到人体对应的每个像素的深度数据,对所述深度数据进行梯度滤波,得到梯度滤波图像,具体为:

对每个人体点计算这个点和周围n*n大小的核的梯度值x,若-a<x<a,其中,a能进行调节,则认为这个梯度变化不快,能保留这个点的梯度;当周围n*n大小的核的每一个点都和中心点进行比较后,再根据权重对此点进行深度值的调节,得到梯度滤波图像。

也就是说,在此实施例中,用3*3来举例说明,对每个点(人体点)计算这个点和周围3*3大小的核的梯度(可以理解为这个点和周围某一个点的深度值的差值的绝对值),对于梯度值x,如果-a<x<a(a可以调节),则可以认为这个梯度变化不快,可以保留这个点的梯度。当周围3*3大小的核的每一个点都和中心点比较后,再根据权重(即比例系数,如图5中的0.1,0.2等)最终调节这个点的深度值。

在步骤S500中,所述将梯度滤波图像中的深度数据转化成世界坐标系下的人体点云数据,具体为:

将梯度滤波图像中的深度数据先从图像坐标(x0,y0,z0)转换到相机坐标(x1,y1,z1),公式如下:

v=(x0-320*0.5,y0-240*0.5,foclen)

x1=v.x*s

y1=v.y*s

z1=v.z*s

其中:foclen=320*0.5/tan[(90*0.5)*π/180]

scalefactor=0.041667

z0=img.at(y0,x0)-147

再从相机坐标(x1,y1,z1)转换到世界坐标(x2,y2,z2),公式如下:

pp=remap*p

x2=pp(0,0)

y2=pp(1,0)

z2=pp(2,0)

其中:P是一个[4*1]矩阵,P(0,0)=x1,p(1,0)=y1,p(2,0)=z1,p(3,0)=0,remap是变换的矩阵(可理解为一个固定的参数),图像中的每个像素点的坐标:(x0,y0,z0),其中z0表示这个像素点深度值(相机到这一点的实际距离),以相机为原点的三维坐标表示为:x1,y1,z1),v、s是参数,foclen、scalefoclen是一个固定的系数,img.at(y0,x0)表示这一点的深度值。

在步骤S500中,所述对人体点云数据进行平滑处理,具体为:

对人体点云数据做卷积处理,得到平滑滤波器,如图11所示,通过平滑滤波器进行平滑处理,滤波器处理的输出像素值g(i,j,z)是输入图像像素值f(i+k,j+I,z+H)的加权和,公式如下:

g(i,j,z)=∑f(i+k,j+I,z+H)h(k,I,H)

其中,h(k,I,H),表示滤波器的加权系数,即滤波器的滤波系数。

实施例2:

一种基于向下倾角方向的单台TOF相机人体降噪系统,如图12所示,包括差分处理模块100、映射模块200、第一滤波模块300、梯度滤波模块400和转化处理模块500;

所述差分处理模块100,用于分别获取有人体的前景深度图像以及背景深度图像,对有人体的前景深度图像和背景深度图像进行背景差分处理,得到只有人体的深度图像;

所述映射模块200,用于把所述只有人体的深度图像中的每个像素的深度数据映射到二维图像中,得到映射的二维图像;

所述第一滤波模块300,用于对所述二维图像进行形态学滤波处理,采用开运算方式处理,去除人体边缘的噪声,得到滤波后的二维图像;

所述梯度滤波模块400,用于在滤波后的二维图像中找到人体对应的每个像素的深度数据,对所述深度数据进行梯度滤波,得到梯度滤波图像;

所述转化处理模块500,用于将梯度滤波图像中的深度数据转化成世界坐标系下的人体点云数据,对人体点云数据进行平滑处理,得到相对平滑的人体点云数据。

进一步地,所述差分处理模块100被设置为:

将有人体的前景深度图像和背景深度图像进行相减,公式如下:

deep人=||deep场景-deep背景||

其中,deep人表示只有人体的深度图像,deep场景表示有人体的前景深度图像,deep背景表示背景深度图像。在本实施例中,背景差分意思是计算前景图像(有人)和后景图像(没有人)的差。因为图像的每个像素表示深度数据,所以相减后得到只有人的深度图像,而没有人的像素因为数值近似相同,相减后近似得到0。

在所述映射模块200中,把人体的深度图像中每个像素的值(深度值)映射到0-255的二维图像的像素值采用的数学公式为y=x/t*255,其中,t:深度上限,对于TOF相机可是个定值,x:TOF相机得到深度图像的该点的深度值。

在第一滤波模块300中,开运算方式处理,即先腐蚀,后膨胀,在此,膨胀是求局部最大值的操作,从数学角度老说膨胀或者腐蚀操作是讲图像(或图像的一部分区域,称之为A))与核(称之为B)进行卷积,核可以是任何大小形状,多数情况下,核是一个小的正方形或者圆。而膨胀就是就局部最大值的操作,核B与图像卷积,即计算和B覆盖的区域的像素点的最大值,并把这个最大值赋值给参考点制定的像素,这样就会使图像的高亮区域增长,膨胀操作示例图如图6。膨胀的数学公式如图7。腐蚀和膨胀是一对反操作,是求局部最小值的操作,腐蚀示例图如图8,数学公式如图9。

所述梯度滤波模块400被设置为:

对每个人体点计算这个点和周围n*n大小的核的梯度值x,若-a<x<a,其中,a能进行调节,则认为这个梯度变化不快,能保留这个点的梯度;当周围n*n大小的核的每一个点都和中心点进行比较后,再根据权重对此点进行深度值的调节,得到梯度滤波图像。也就是说,在此实施例中,用3*3来举例说明,对每个点(人体点)计算这个点和周围3*3大小的核的梯度(可以理解为这个点和周围某一个点的深度值的差值的绝对值),对于梯度值x,如果-a<x<a(a可以调节),则可以认为这个梯度变化不快,可以保留这个点的梯度。当周围3*3大小的核的每一个点都和中心点比较后,再根据权重(即比例系数,如图5中的0.1,0.2等)最终调节这个点的深度值。

所述转化处理模块500被设置为:

将梯度滤波图像中的深度数据先从图像坐标(x0,y0,z0)转换到相机坐标(x1,y1,z1),公式如下:

v=(x0-320*0.5,y0-240*0.5,foclen)

x1=v.x*s

y1=v.y*s

z1=v.z*s

其中:foclen=320*0.5/tan[(90*0.5)*π/180]

scalefactor=0.041667

z0=img.at(y0,x0)-147

再从相机坐标(x1,y1,z1)转换到世界坐标(x2,y2,z2),公式如下:

pp=remap*p

x2=pp(0,0)

y2=pp(1,0)

z2=pp(2,0)

其中:P是一个[4*1]矩阵,P(0,0)=x1,p(1,0)=y1,p(2,0)=z1,p(3,0)=0,remap是变换的矩阵,图像中的每个像素点的坐标:(x0,y0,z0),其中z0表示这个像素点深度值(相机到这一点的实际距离),以相机为原点的三维坐标表示为:x1,y1,z1),v、s是参数,foclen、scalefoclen是一个固定的系数,img.at(y0,x0)表示这一点的深度值。

所述转化处理模块600被设置为:

对人体点云数据做卷积处理,得到平滑滤波器,通过平滑滤波器进行平滑处理,滤波器处理的输出像素值g(i,j,z)是输入图像像素值f(i+k,j+I,z+H)的加权和,公式如下:

g(i,j,z)=∑f(i+k,j+I,z+H)h(k,I,H)

其中,h(k,I,H),表示滤波器的加权系数,即滤波器的滤波系数。

对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。

本领域内的技术人员应明白,本发明的实施例可提供为方法、装置、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

本发明是参照根据本发明的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

需要说明的是:

说明书中提到的“一个实施例”或“实施例”意指结合实施例描述的特定特征、结构或特性包括在本发明的至少一个实施例中。因此,说明书通篇各个地方出现的短语“一个实施例”或“实施例”并不一定均指同一个实施例。

尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。

此外,需要说明的是,本说明书中所描述的具体实施例,其零、部件的形状、所取名称等可以不同。凡依本发明专利构思所述的构造、特征及原理所做的等效或简单变化,均包括于本发明专利的保护范围内。本发明所属技术领域的技术人员可以对所描述的具体实施例做各种各样的修改或补充或采用类似的方式替代,只要不偏离本发明的结构或者超越本权利要求书所定义的范围,均应属于本发明的保护范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1