发明内容
本发明所要解决的技术问题在于提供了一种基于深度相机的最短距离获取方法及装置,以解决现有技术中深度相机最短距离识别不够准确的技术问题。
本发明是通过以下技术方案解决上述技术问题的:
本发明实施例提供了一种基于深度相机的最短距离获取方法,应用于最短距离探测系统,所述最短距离探测系统包括:设置在机器人本体之外的深度相机、以及机器人,所述方法包括:
1)、根据待转换的深度图对应的深度相机的焦距以及所述深度相机的相元尺寸,获取所述深度图中各个像素点对应的空间坐标,并将包含空间坐标的像素点的集合作为所述深度图的点云;
2)、对所述点云进行去噪处理,并获取所述点云中的采样数据;
3)、构建与所述深度图对应的机器人相同工作状态的虚拟机器人,将所述虚拟机器人对应的数据作为机器人点云;并将所述深度图的点云中除对应于所述机器人的区域之外的点云作为不包含机器人点云;
4)、根据所述不包含机器人点云,利用高斯背景建模算法,检测出所述采样数据中包含的闯入的外物;
5)根据所述机器人点云和各个所述闯入的外物的点云,计算所述机器人与所述闯入的外物之间的距离,并获取所述机器人与所述闯入的外物之间的最短距离。
可选的,所述步骤1),包括:
获取待转换的深度图对应的深度相机的横坐标方向的归一化焦距,以及所述深度相机的纵坐标方向的归一化焦距、所述深度相机内参矩阵图像的横坐标以及所述深度相机内参矩阵图像的纵坐标;
利用公式,
计算所述深度图中各个像素点的空间坐标,其中,
Z为各个像素点相对于相机原点在Z轴方向上的距离;depth.ptr<ushort>(m)[n]为获取深度图像像素点坐标相对于相机原点的Z方向距离获取方法;m为深度图在横坐标方向上的像素点数;Camera_cv为深度相机内参矩阵图像的纵坐标;Camera_fy为深度相机的Y方向的归一化焦距;n为深度图在纵坐标方向上的像素点数;Camera_cu为深度相机内参矩阵图像的横坐标;Camera_fx为深度图对应的深度相机的横坐标方向的归一化焦距;Y为深度图像各个像素点相对于相机的Y方向距离;X为深度图像各个像素点相对于相机原点在X方向的距离;
将包含空间坐标的像素点的集合作为所述深度图的点云。
可选的,所述步骤2),包括:
判断所述深度图的原点以及以所述原点为起点的设定二维区域内的像素点,是否位于以所述原点为起点的设定三维区域内;
若是,将所述像素点对应的点云作为滤波后的点云;
针对滤波后的点云中的每一个点云,利用公式,
计算所述点云和所述点云的邻近点云的平均距离,所述点云和所述点云的邻近点云的方差,其中,
d为所述点云和所述点云的邻近点云的平均距离,并且距离d服从均值为μ和方差为σ的高斯分布函数f(d);n为所述点云以及所述点云的邻近点云的集合中包含的点云的数量;x为所述点云相对于相机原点的X方向正负距离;y为所述点云相对于相机原点Y方向距离;z为所述点云的相对于相机原点的Z方向距离;xi为所述点云的邻近点云的相对于相机原点X方向距离;yi为所述点云的邻近点云相对于相机原点Y方向距离;zi为所述点云的邻近点云的相对于相机原点在Z轴方向上的距离;f(d)为高斯分布函数;σ为高斯分布的方差;μ为高斯分布对应的平均值;
判断所述点云和所述点云的邻近点云的平均距离、方差是否在设定为数值范围内;
若是,将位于所述数值范围内的点云作为去噪后的点云;
利用八叉树算法对去噪后的点云的集合进行采样处理,获取所述点云中的采样数据。
可选的,所述步骤4),包括:
计算设定时间段内的深度图像帧中每一个像素点的像素值均值以及像素值方差,利用所述像素值均值以及所述像素值方差识别出所述待转换的深度图中的背景模型;
针对所述待转换的深度图中包含的前景图像中的每一个像素点,将前景图像中的所述像素点作为当前像素点,根据所述背景模型,利用公式,
判断所述当前像素点的像素值与所述背景模型中各像素点的像素值之间的差值是否大于预设阈值,其中,
σ为高斯分布的方差;e为自然底数;ForGroundt(x,y)为前景图像中坐标为(x,y)的像素点的像素点值;Thresh为预设阈值;BackGroundt(x,y)为背景模型中坐标为(x,y)的像素点的像素点值;
若是,将所述当前像素点的作为背景;
若否,将所述当前像素点作为前景运动目标对应的像素点;
利用公式,BackGroundt(x,y)=k*BackGroundt-1(x,y)+(1-k)*ForGroundt(x,y),更新所述背景模型中像素点的像素值,将所述前景图像中除所述当前像素点以外的其他像素点作为当前像素点,并返回执行所述判断所述当前像素点的像素值与所述背景模型中各像素点的像素值之间的差值是否大于预设阈值的步骤,直至所述前景图像中各个像素点都被遍历,其中,
BackGroundt(x,y)为更新后的所述背景模型中像素点的像素值;BackGroundt-1(x,y)为第t-1次更新时背景模型中坐标为(x,y)的像素点的像素点值;ForGroundt(x,y)为前景图像中坐标为(x,y)的像素点的像素点值;k为常数;
将所述前景运动目标对应的像素点构成的前景运动目标作为采样数据中包含的闯入的外物。
可选的,所述步骤5),包括:
利用公式,
计算所述机器人点云和各个所述闯入的外物的距离,其中,
distance为所述机器人点云和各个所述闯入的外物的距离;xj为所述机器人点云相对于相机原点的X方向的距离;yj为所述机器人点云相对于相机原点的Y方向的距离;zj为所述机器人点云相对于相机原点的Z方向的距离;xi为所述闯入的外物相对于相机原点的X方向距离;yi为所述闯入的外物相对于相机原点的Y方向距离;zi为所述闯入的外物相对于所预设的相机原点在Z方向的距离。
本发明实施例还提供了一种基于深度相机的最短距离获取装置,应用于最短距离探测系统,所述最短距离探测系统包括:设置在机器人本体之外的深度相机、以及机器人,所述装置包括:
获取模块,用于根据待转换的深度图对应的深度相机的焦距以及所述深度相机的相元尺寸,获取所述深度图中各个像素点对应的空间坐标,并将包含空间坐标的像素点的集合作为所述深度图的点云;
对所述点云进行去噪处理,并获取所述点云中的采样数据;
构建模块,用于构建与所述深度图对应的机器人相同工作状态的虚拟机器人,将所述虚拟机器人对应的数据作为机器人点云;并将所述深度图的点云中除对应于所述机器人的区域之外的点云作为不包含机器人点云;
检测模块,用于根据所述不包含机器人点云,利用高斯背景建模算法,检测出所述采样数据中包含的闯入的外物;
计算模块,用于根据所述机器人点云和各个所述闯入的外物的点云,计算所述机器人与所述闯入的外物之间的距离,并获取所述机器人与所述闯入的外物之间的最短距离。
可选的,所述获取模块,用于:
获取待转换的深度图对应的深度相机的横坐标方向的归一化焦距,以及所述深度相机的纵坐标方向的归一化焦距、所述深度相机内参矩阵图像的横坐标以及所述深度相机内参矩阵图像的纵坐标;
利用公式,
计算所述深度图中各个像素点的空间坐标,其中,
Z为物体相对于相机原点的Z方向距离;depth.ptr<ushort>(m)[n]为深度图像中不同坐标对应的距离获取方法;m为深度图在横坐标方向上的像素点数;Camera_cv为深度相机内参矩阵图像的纵坐标;Camera_fy为深度相机的Y方向的归一化焦距;n为深度图在纵坐标方向上的像素点数;Camera_cu为深度相机内参矩阵图像的横坐标;Camera_fx为深度图对应的深度相机的横坐标方向的归一化焦距;Y为各个像素点在纵坐标轴上的坐标;X为各个像素点在横坐标轴上的坐标;
将包含空间坐标的像素点的集合作为所述深度图的点云。
可选的,所述获取模块,用于:
判断所述深度图的原点以及以所述原点为起点的设定二维区域内的像素点,是否位于以所述原点为起点的设定三维区域内;
若是,将所述像素点对应的点云作为滤波后的点云;
针对滤波后的点云中的每一个点云,利用公式,
计算所述点云和所述点云的邻近点云的平均距离,所述点云和所述点云的邻近点云的方差,其中,
d为所述点云和所述点云的邻近点云的平均距离;n为所述点云以及所述点云的邻近点云的集合中包含的点云的数量;x为所述点云相对于相机原点的X方向距离;y为所述点云相对于相机原点的Y方向距离;z为所述点云相对于相机原点的Z方向上距离;xi为所述点云的邻近点云相对于相机原点的X方向距离;yi为所述点云的邻近点云相对于相机原点的Y方向距离;zi为所述点云的邻近点云相对于相机原点在Z方向上的距离;f(d)为高斯分布函数;σ为高斯分布的方差;μ为高斯分布对应的平均值;
判断所述点云和所述点云的邻近点云的平均距离、方差是否在设定为数值范围内;
若是,将位于所述数值范围内的点云作为去噪后的点云;
利用八叉树算法对去噪后的点云的集合进行采样处理,获取所述点云中的采样数据。
可选的,所述检测模块,用于:
计算设定时间段内的深度图像帧中每一个像素点的像素值均值以及像素值方差,利用所述像素值均值以及所述像素值方差识别出所述待转换的深度图中的背景模型;
针对所述待转换的深度图中包含的前景图像中的每一个像素点,将前景图像中的所述像素点作为当前像素点,根据所述背景模型,利用公式,
判断所述当前像素点的像素值与所述背景模型中各像素点的像素值之间的差值是否大于预设阈值,其中,
σ为高斯分布的方差;e为自然底数;ForGroundt(x,y)为前景图像中坐标为(x,y)的像素点的像素点值;Thresh为预设阈值;BackGroundt(x,y)为背景模型中坐标为(x,y)的像素点的像素点值;
若是,将所述当前像素点的作为背景;
若否,将所述当前像素点作为前景运动目标对应的像素点;
利用公式,BackGroundt(x,y)=k*BackGroundt-1(x,y)+(1-k)*ForGroundt(x,y),更新所述背景模型中像素点的像素值,将所述前景图像中除所述当前像素点以外的其他像素点作为当前像素点,并返回执行所述判断所述当前像素点的像素值与所述背景模型中各像素点的像素值之间的差值是否大于预设阈值的步骤,直至所述前景图像中各个像素点都被遍历,其中,
BackGroundt(x,y)为更新后的所述背景模型中像素点的像素值;BackGroundt-1(x,y)为第t-1次更新时背景模型中坐标为(x,y)的像素点的像素点值;ForGroundt(x,y)为前景图像中坐标为(x,y)的像素点的像素点值;k为常数;
将所述前景运动目标对应的像素点构成的前景运动目标作为采样数据中包含的闯入的外物。
可选的,所述计算模块,用于:
利用公式,
计算所述机器人点云和各个所述闯入的外物的距离,其中,
distance为所述机器人点云和各个所述闯入的外物的距离;xj为所述机器人相对于相机原点的X方向距离;yj为所述机器人点云相对于相机原点的Y方向距离;zj为所述机器人点云相对于所预设的相机原点在Z方向的距离;xi为所述闯入的外物相对于相机原点的X方向的距离;yi为所述闯入的外物相对于相机原点的Y方向距离;zi为所述闯入的外物相对于所预设的相机原点在Z方向的距离。
本发明相比现有技术具有以下优点:
应用本发明实施例,深度相机能够检测到操作员和机器人系统之间的最短距离,本申请方案的测距可以将深度相机放在远离机器人周边的任何位置,根据设计的视觉算法,分别分割出机器人本体和闯入的外物,计算出机器人与闯入外物的距离,从而得到最短距离;相对于现有技术,本发明实施例,将深度相机远离机器人本体设置,在进行距离识别时,不需要进行复杂的坐标转换,因此,可以避免产生坐标转换过程中的误差,提高了距离识别的准确性。
具体实施方式
下面对本发明的实施例作详细说明,本实施例在以本发明技术方案为前提下进行实施,给出了详细的实施方式和具体的操作过程,但本发明的保护范围不限于下述的实施例。
本发明实施例提供了一种基于深度相机的最短距离获取方法及装置,下面首先就本发明实施例提供的一种基于深度相机的最短距离获取方法进行介绍。
本发明实施例优选应用于最短距离探测系统,所述最短距离探测系统包括:设置在机器人本体之外的深度相机、以及机器人,
图1为本发明实施例提供的一种基于深度相机的最短距离获取方法的流程示意图,如图1所示,所述方法包括:
S101:根据待转换的深度图对应的深度相机的焦距以及所述深度相机的相元尺寸,获取所述深度图中各个像素点对应的空间坐标,并将包含空间坐标集合作为所述深度图的点云。
示例性的,可以在协作机器人工作时,通过设置在远处的深度相机对协作机器人进行拍摄。
可以获取待转换的深度图对应的深度相机的横坐标方向的归一化焦距,以及所述深度相机的纵坐标方向的归一化焦距、所述深度相机内参矩阵图像的横坐标以及所述深度相机内参矩阵图像的纵坐标;
利用公式,
计算所述深度图中各个像素点的空间坐标,其中,
Z为深度图像中各个像素点相对于所预设的相机原点在Z方向的距离;depth.ptr<ushort>(m)[n]为深度图像的像素坐标对应的Z方向距离获取方法;m为深度图在横坐标方向上的像素点数;Camera_cv为深度相机内参矩阵图像的纵坐标;Camera_fy为深度相机的Y方向的归一化焦距;n为深度图在纵坐标方向上的像素点数;Camera_cu为深度相机内参矩阵图像的横坐标;Camera_fx为深度图对应的深度相机的横坐标方向的归一化焦距;Y为深度图像各个像素点相对于相机的Y方向距离;X为深度图像各个像素点相对于相机原点在X方向的距离;
将包含空间坐标的像素点的集合作为所述深度图的点云。
再利用PCL(Point Cloud Library,点云库)将XYZ空间坐标进行存储、处理、显示等操作。
可以理解的是,机器人应当设置在深度相机的拍摄距离内,而且,深度相机可以拍摄到协作机器人的机械臂的所有部分。
需要说明的是,通过测量仪器得到的产品外观表面的点数据集合也称之为点云。获取待转换的深度图对应的深度相机的横坐标方向的归一化焦距,以及所述深度相机的纵坐标方向的归一化焦距、所述深度相机内参矩阵图像的横坐标以及所述深度相机内参矩阵图像的纵坐标的过程为现有技术,这里不再赘述。
S102:对所述点云进行去噪处理,并获取所述点云中的采样数据。
示例性的,可以判断所述深度图的原点以及以所述原点为起点的设定二维区域内的像素点,是否位于以所述原点为起点的设定三维区域内;可以理解的是,设定二维区域可以是指以深度图中左下角的像素点为起点对应的设定大小的像素区域;而三维区域,是指以相机坐标原点为原点,延伸出的设定大小的三维空间。在实际应用中,原点可以是深度图中任何一点,可以根据实际需求进行调整,本发明实施例在此并不对原点的设置方法进行限定。
若是,将所述像素点对应的点云作为滤波后的点云;
针对滤波后的点云中的每一个点云,利用公式,
计算所述点云和所述点云的邻近点云的平均距离,所述点云和所述点云的邻近点云的方差,其中,
d为所述点云和所述点云的邻近点云的平均距离,并且距离d服从均值为μ和方差为σ的高斯分布函数f(d);n为所述点云以及所述点云的邻近点云的集合中包含的点云的数量;x为所述点云相对于相机原点的X方向正负距离;y为所述点云相对于相机原点Y方向距离;z为所述点云的相对于相机原点的Z方向距离;xi为所述点云的邻近点云的相对于相机原点X方向距离;yi为所述点云的邻近点云相对于相机原点Y方向距离;zi为所述点云的邻近点云的相对于相机原点在Z轴方向上的距离;f(d)为高斯分布函数;σ为高斯分布的方差;μ为高斯分布对应的平均值;
判断所述点云和所述点云的邻近点云的平均距离、方差是否在设定为数值范围内;
若是,将位于所述数值范围内的点云作为去噪后的点云;例如,当d∈(μ-3σ,μ+3σ)时,说明该点云属于可以保留的点云。
利用八叉树算法对去噪后的点云的集合进行采样处理,获取所述点云中的采样数据。
八叉树是一种数据结构,如果不是空树,树中的任何一个节点的子节点恰好只会有八个或零个,也就是子节点不会有0与8以外的数目。由于点云的数据量很大,不利于实时计算,利用八叉树算法进行数据精简后,可以得到点云中的采样数据,然后根据这些采样数据进行距离的识别,可以提高距离识别效率。
S103:构建与所述深度图对应的机器人相同工作状态的虚拟机器人,将所述虚拟机器人对应的数据作为机器人点云。并将所述深度图的点云中除对应于所述机器人的区域之外的点云作为不包含机器人点云。
示例性的,可以通过OPENGL图像库构造出待转换的深度图所拍摄的机器人本体归为零位的相同工作状态和大小的虚拟机器人,通过实际机器人本体各个关节运动的角度和平移量,来运行虚拟机器人,再将虚拟机器人存储为机器人点云。
可以理解的是,对应于所述机器人的区域是指,由于虚拟机器人的点云与深度图的点云中机器人的点云的工作状态相同,因此,虚拟机器人与机器人的形状、姿态等均相同,因此,可以在深度图的点云中,使用虚拟机器人的机器人点云所替换的深度图点云中机器人对应的区域。待转换的深度图对应的深度图的点云中除了,虚拟机器人点云之外的其他点云的集合,可以作为不包含机器人点云。
通常情况下,工作状态包括:机器人各个部件的方向角、高度角等可以确定机器人各个部位的位置的参数。虚拟机器人的各个组件的方向角、高度角与深度图点云中机器人的方向角和高度角分别相同。
S104:根据所述不包含机器人点云,利用高斯背景建模算法,检测出所述采样数据中包含的闯入的外物。
示例性的,可以计算设定时间段内的深度图像帧中每一个像素点的像素值均值以及像素值方差,利用所述像素值均值以及所述像素值方差识别出所述待转换的深度图中的背景模型;
针对所述待转换的深度图中包含的前景图像中的每一个像素点,将前景图像中的所述像素点作为当前像素点,根据所述背景模型,利用公式,
判断所述当前像素点的像素值与所述背景模型中各像素点的像素值之间的差值是否大于预设阈值,其中,
σ为高斯分布的方差;e为自然底数;ForGroundt(x,y)为前景图像中坐标为(x,y)的像素点的像素点值;Thresh为预设阈值;BackGroundt(x,y)为背景模型中坐标为(x,y)的像素点的像素点值;
若是,将所述当前像素点的作为背景;
若否,将所述当前像素点作为前景运动目标对应的像素点;
利用公式,BackGroundt(x,y)=k*BackGroundt-1(x,y)+(1-k)*ForGroundt(x,y),更新所述背景模型中像素点的像素值,将所述前景图像中除所述当前像素点以外的其他像素点作为当前像素点,并返回执行所述判断所述当前像素点的像素值与所述背景模型中各像素点的像素值之间的差值是否大于预设阈值的步骤,直至所述前景图像中各个像素点都被遍历,其中,
BackGroundt(x,y)为更新后的所述背景模型中像素点的像素值;BackGroundt-1(x,y)为第t-1次更新时背景模型中坐标为(x,y)的像素点的像素点值;ForGroundt(x,y)为前景图像中坐标为(x,y)的像素点的像素点值;k为常数;
将所述前景运动目标对应的像素点构成的前景运动目标作为采样数据中包含的闯入的外物。
S105:根据所述机器人点云和各个所述闯入的外物的点云,计算所述机器人与所述闯入的外物之间的距离,并获取所述机器人与所述闯入的外物之间的最短距离。
示例性的,可以利用公式,
计算所述机器人点云和各个所述闯入的外物的距离,其中,
distance为所述机器人点云和各个所述闯入的外物的距离;xj为所述机器人点云相对于相机原点的X方向距离;yj为所述机器人点云相对于相机原点的Y方向距离;zj为所述机器人点云在Z轴方向上的距离;xi为所述闯入的外物相对于相机原点的X方向距离;yi为所述闯入的外物相对于相机原点的Y方向距离;zi为所述闯入的外物相对于相机原点在Z方向轴上的距离。
另外,在实际应用中,现有技术将深度相机放在机器人本体上,只能得到机器人的一个方向距离,而且,多数情况下可能还不是最短的距离,会对机器人根据距离降速产生极大的影响。本发明实施例中,可以根据本发明实施例识别出的机器人与外物之间的距离进行机器人运动速度的控制,例如,可以在距离较大时,使机器人以较高的速度运动,在距离较小时,使机器人以较小的速度运动。在机器人从距离较远的位置朝向距离较近的位置进行运动时,可以使机器人的运动速度呈线性、指数性或者抛物线性的递减,进而可以在保证安全性的条件下,提升机器人的工作效率。
应用本发明上述实施例,由于在深度图中直接分割机器人点云会产生机器人点云与背景点云之间的边界模糊问题,而使用虚拟机器人的点云替换深度图的点云中的机器人对应的区域,进而根据虚拟机器人的点云与外物之间的距离进行最短距离的识别,避免了边界模糊的问题,可以提高最短距离识别的准确性。
应用本发明图1所示实施例,应用本发明实施例,深度相机能够检测到操作员和机器人系统之间的最短距离,本申请方案的测距可以将深度相机放在远离机器人周边的任何位置,根据设计的视觉算法,分别分割出机器人本体和闯入的外物,计算出机器人与闯入外物的距离,从而得到最短距离;相对于现有技术,本发明实施例,将深度相机远离机器人本体设置,在进行距离识别时,不需要进行复杂的坐标转换,因此,可以避免产生坐标转换过程中的误差,提高了距离识别的准确性。应用本发明实施例,相对于现有技术避免了复杂的坐标转换,提高了距离识别效率。
另外,现有技术中有的机器人采用声波测距和激光测距,这种方式成本太高,不利于推广,应用本发明实施例,可以降低最短距离识别的成本,利于推广。在实际应用中,可以围绕机器人在相对于机器人的多个方向上设置多个深度相机,使用本发明实施例的算法进行机器人相对于周围闯入的外物之间的距离的识别,进而获取机器人相对于闯入的外物之间的最短距离,进而提高最短距离识别的全面性,可以进一步提高机器人运行的安全性。
另外,以及当外物和机器人间的最短距离小于一定的阈值时,机器人停止任何动作,大于阈值时,机器人开始运行,提升了安全性。
与本发明图1所示实施例相对应,本发明实施例还提供了一种基于深度相机的最短距离获取装置。
图2为本发明实施例提供的一种基于深度相机的最短距离获取装置的结构示意图,如图2所示,应用于最短距离探测系统,所述最短距离探测系统包括:设置在机器人本体之外的深度相机、以及机器人,所述装置包括:
获取模块201,用于根据待转换的深度图对应的深度相机的焦距以及所述深度相机的相元尺寸,获取所述深度图中各个像素点对应的空间坐标,并将包含空间坐标的像素点的集合作为所述深度图的点云;
对所述点云进行去噪处理,并获取所述点云中的采样数据;
构建模块202,用于构建与所述深度图对应的机器人相同工作状态的虚拟机器人,将所述虚拟机器人对应的数据作为机器人点云;并将所述深度图的点云中除对应于所述机器人的区域之外的点云作为不包含机器人点云;
检测模块203,用于根据所述不包含机器人点云,利用高斯背景建模算法,检测出所述采样数据中包含的闯入的外物;
计算模块204,用于根据所述机器人点云和各个所述闯入的外物的点云,计算所述机器人与所述闯入的外物之间的距离,并获取所述机器人与所述闯入的外物之间的最短距离。
应用本发明图2所示实施例,应用本发明实施例,深度相机能够检测到操作员和机器人系统之间的最短距离,本申请方案的测距可以将深度相机放在远离机器人周边的任何位置,根据设计的视觉算法,分别分割出机器人本体和闯入的外物,计算出机器人与闯入外物的距离,从而得到最短距离;相对于现有技术,本发明实施例,将深度相机远离机器人本体设置,在进行距离识别时,不需要进行复杂的坐标转换,因此,可以避免产生坐标转换过程中的误差,提高了距离识别的准确性。
在本发明实施例的一种具体实施方式中,所述获取模块201,用于:
获取待转换的深度图对应的深度相机的横坐标方向的归一化焦距,以及所述深度相机的纵坐标方向的归一化焦距、所述深度相机内参矩阵图像的横坐标以及所述深度相机内参矩阵图像的纵坐标;
利用公式,
计算所述深度图中各个像素点的空间坐标,其中,
Z为深度图像中各个像素点相对于所预设的相机原点在Z方向的距离;depth.ptr<ushort>(m)[n]为根据深度图像素点坐标获取的Z方向距离的方法;m为深度图在横坐标方向上的像素点数;Camera_cv为深度相机内参矩阵图像的纵坐标;Camera_fy为深度相机的Y方向的归一化焦距;n为深度图在纵坐标方向上的像素点数;Camera_cu为深度相机内参矩阵图像的横坐标;Camera_fx为深度图对应的深度相机的横坐标方向的归一化焦距;Y为各个像素点相对于相机原点在Y方向的距离;X为各个像素点相对于相机原点在X方向上的距离;
将包含空间坐标的像素点的集合作为所述深度图的点云。
在本发明实施例的一种具体实施方式中,所述获取模块201,用于:
判断所述深度图的原点以及以所述原点为起点的设定二维区域内的像素点,是否位于以所述原点为起点的设定三维区域内;
若是,将所述像素点对应的点云作为滤波后的点云;
针对滤波后的点云中的每一个点云,利用公式,
计算所述点云和所述点云的邻近点云的平均距离,所述点云和所述点云的邻近点云的方差,其中,
d为所述点云和所述点云的邻近点云的平均距离;n为所述点云以及所述点云的邻近点云的集合中包含的点云的数量;x为所述点云相对于相机原点的X方向距离;y为所述点云相对于相机原点的Y方向距离;z为所述点云相对于相机原点在Z轴方向上的距离;xi为所述点云的邻近点云相对于相机原点的X方向的距离;yi为所述点云的邻近点云相对于相机原点的Y方向距离;zi为所述点云的邻近点云相对于相机原点在Z轴方向上的距离;f(d)为高斯分布函数;σ为高斯分布的方差;μ为高斯分布对应的平均值;
判断所述点云和所述点云的邻近点云的平均距离、方差是否在设定为数值范围内;
若是,将位于所述数值范围内的点云作为去噪后的点云;
利用八叉树算法对去噪后的点云的集合进行采样处理,获取所述点云中的采样数据。
在本发明实施例的一种具体实施方式中,所述检测模块203,用于:
计算设定时间段内的深度图像帧中每一个像素点的像素值均值以及像素值方差,利用所述像素值均值以及所述像素值方差识别出所述待转换的深度图中的背景模型;
针对所述待转换的深度图中包含的前景图像中的每一个像素点,将前景图像中的所述像素点作为当前像素点,根据所述背景模型,利用公式,
判断所述当前像素点的像素值与所述背景模型中各像素点的像素值之间的差值是否大于预设阈值,其中,
σ为高斯分布的方差;e为自然底数;ForGroundt(x,y)为前景图像中坐标为(x,y)的像素点的像素点值;Thresh为预设阈值;BackGroundt(x,y)为背景模型中坐标为(x,y)的像素点的像素点值;
若是,将所述当前像素点的作为背景;
若否,将所述当前像素点作为前景运动目标对应的像素点;
利用公式,BackGroundt(x,y)=k*BackGroundt-1(x,y)+(1-k)*ForGroundt(x,y),更新所述背景模型中像素点的像素值,将所述前景图像中除所述当前像素点以外的其他像素点作为当前像素点,并返回执行所述判断所述当前像素点的像素值与所述背景模型中各像素点的像素值之间的差值是否大于预设阈值的步骤,直至所述前景图像中各个像素点都被遍历,其中,
BackGroundt(x,y)为更新后的所述背景模型中像素点的像素值;BackGroundt-1(x,y)为第t-1次更新时背景模型中坐标为(x,y)的像素点的像素点值;ForGroundt(x,y)为前景图像中坐标为(x,y)的像素点的像素点值;k为常数;
将所述前景运动目标对应的像素点构成的前景运动目标作为采样数据中包含的闯入的外物。
在本发明实施例的一种具体实施方式中,所述计算模块204,用于:
利用公式,
计算所述机器人点云和各个所述闯入的外物的距离,其中,
distance为所述机器人点云和各个所述闯入的外物的距离;xj为所述机器人点云相对于相机原点的X方向距离;yj为所述机器人点云相对于相机原点的Y方向距离;zj为所述机器人点云相对于相机远点在Z轴方向上的距离;xi为所述闯入的外物的相对于相机原点的X方向的距离;yi为所述闯入的外物相对于相机原点的Y方向距离;zi为所述闯入的外物的相对于相机原点在Z轴方向上的距离。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。