一种确定视频图像中被测对象间位置关系的方法及装置的制造方法_3

文档序号:9547925阅读:来源:国知局
施例首先定义了三种坐标系,具体为:image坐标系、camera坐标系、 floor坐标系。其中:
[0132] 1、image坐标系,表示摄像头监控的视频画面中各像素位置。
[0133] 图2示出了本申请实施例中image坐标系的示意图,如图所示,以视频画面左上角 的顶点为原点,以与所述顶点相邻的两条边为坐标轴,也即上边可以为X轴、左边可以为y 轴,画面内任意一点的坐标值可以为P(X。,y。)。
[0134] 本申请实施例中通过image坐标系的像素位置,可以得到对应位置的深度值。例 如,如图2所示,可以直接从传感器中输出P( X〇, y0)处的深度值,也即,实际场景中P(xO, y〇)位置距离摄像机镜头的距离信息。
[0135] 2, camera坐标系,是以摄像头所在位置(或者camera焦点)为原点,建立三维空 间直角坐标系。
[0136] 图3示出了本申请实施例中camera坐标系的示意图,如图所示,假设深度传感器 (sensor,或摄像头)设置于墙角上方的某个位置,与画面水平方向平行的方向为X轴、与 画面垂直方向平行的方向为y轴、光轴方向为z轴(也可以理解为垂直于摄像头镜面的方 向)。
[0137] 具体的,实现image坐标系像素位置到camera坐标系三维空间位置坐标的转换, 可以有如下方式:
[0138] 1)可以通过现有技术中sensor提供的API来实现。
[0139] 例如:
[0140] static Status convert WorldToDepth (const VideoStream&depthStream, floatworldX, float worldY, float worIdZ, int*pDepthX, int*pDepthY, DepthPixel*pDepthZ);
[0141] static Status convertDepthTofforld(const VideoStream&depthStream, intdepthX, int depthY, DepthPixel depthZ, float*pfforldX, fIoat^pfforldY, float*pfforldZ);
[0142] 通过上述函数就可以实现camera坐标系和image坐标系的相互转换,对于具体的 函数实现内容,本申请在此不做赘述。
[0143] 2)对于没有开放坐标转换API的sensor,或者,已经开放API但是希望加速转换 过程的情况,也可以由本领域技术人员通过自行开发实现。
[0144] 实现image坐标和camera坐标转换的原理为:假设camera坐标系中空间任意一 点的坐标(X,y,Z)相对于原点的位置关系,反映在image坐标系中pixel相对于原点的位 置关系,近似线性。设定z值等于对应位置pixel处的深度,即,线性变换的系数为1。同 时,sensor存在一组内参,确定了在这样的设定条件下,X方向和y方向线性变换的系数。
[0145] 本申请实施例给出了一种具体的转换方式,具体如下:
[0146] image坐标系到camera坐标系转换公式:
[0147] xCamera= camera_param. xzFactor*(x iniage/camera_param. resolution_ X_0. 5)*depth_value ;
[0148] ycamera= camera_param. yzFactor* (0· 5_y image/camera_param. resolution- Y)*depth_value ;
[0149] Zcanera= depth_value ;
[0150] camera坐标系到image坐标系转换公式:
[0151] Ximage= (x camera/ (depth_value*camera_param. xzFactor) +0. 5) *camera_param. resolution_X ;
[0152] yiniage= - (y v^rJ (depth value^camera param. yzFactor) ~0. 5)*camera param. resolution_Y ;
[0153] depth_value = zcanera;
[0154] 其中,camera_param. resolution_x表不视频画面在水平方向的数值,camera_ param. resolution_Y表示视频画面在垂直方向的数值,假设视频画面是640*480,那么 camera_param. resolution_X 为 640、camera_param. resolution_Y 为 480。camera_param. xzFactor和camera_param. yzFactor为用于修正数据的参数,一般取决于相机出厂后相机 本身的物理结构。
[0155] 对于不同的深度传感器(depth sensor),其中的 camera_param. resolution_x、 camera_param. resolution_Y>camera_param. xzFactor>camera_param. yzFactor 同的值,但坐标转换公式可以是一致的。
[0156] 3、floor坐标系,是以真实物理世界的地面为XoY平面,camera坐标系原点到XoY 平面的投影为原点,建立的平面直角坐标系,图4示出了本申请实施例中floor坐标系的示 意图,原点〇为sensor在XoY平面的投影。
[0157] 在具体实施中,建立XoY平面可以采用现有技术中的随机抽样一致性(RANSAC, Random Sample Consensus)算法。在视频中使用RANSAC算法选择点拟合地面,结合惯性测 量兀件(IMU,Inertial Measurement Unit)信息,得到真实物理世界的地面在camera坐标 系的平面方程参数,此平面即为floor坐标系的XoY平面。
[0158] camera坐标系原点到floor坐标系XoY平面的投影为floor坐标系的原点, camera坐标系X正方向单位向量为(1,0,0)在floor坐标系XoY平面投影为floor坐标系 X正方向,floor坐标系z轴正方向为XoY平面的法向量,floor坐标系y轴正方向为X正 方向单位向量和z正方向单位向量的向量积。
[0159] 至此,可以得到 floor (1,0,0)、floor (0,1,0)、floor (0,0,1)在 camera 坐标系下 的表达,而这3个floor坐标系下的单位向量分别与camera坐标系下的camera(l,0,0)、 camera(0,1,0)、camera(0,0,1)存在一定的对应关系。以此为依据,可以计算出camera坐 标系和floor坐标系的坐标转换关系,也即旋转矩阵R和T,方法如下:
[0160] 设 S (source,源)、D (destination,目的)分别表示 camera 坐标系和 floor 坐标 系的单位向量(或者称为基座标)在camera坐标系下的坐标减去各自均值后的结果,下面 进行详细说明。
[0161] 空间中任意一点在camera坐标系和floor坐标系下有两组不同的坐标表示,假设 空间中有m个点(m彡3),且不在同一条直线上。这些点在camera坐标系和floor坐标系 下的坐标分别为A1、A2、. . . Am, B1、B2、. . . Bm。其中,Ai、Bi表示同一个点在不同坐标系下 的称谓。在camera坐标系中称之为Ai,在floor坐标系中称之为Bi。
[0162] 矩阵..
表示m个点在camera坐标系下的坐标表示, 其中,每一列表示第i个点在camera坐标系的坐标;
[0163] 矩阵
表示m个点在floor坐标系下的坐标表示, 其中,每一列表示第i个点在floor坐标系的坐标。
[0164] 这些点在camera坐标系下的平均向量

[0165] 同理,在floor坐标系下,可以有
[0166] 本申请实施例中S、D矩阵可以分别为:
[0169] 对S矩阵和D矩阵进行计算,将S与D的转置相乘,也即:H = S^Dt
[0170] 利用现有技术中奇异值分解(SVD,Singular Value Decomposition)技术,对!1做 SVD分解:
[0171] H = u氺w氺 Vt;
[0172] 本申请实施例定义了矩阵C,其中:
[0173] camera坐标系到floor坐标系旋转矩阵R,T分别是:
[0176] Floor坐标系到camera坐标系旋转矩阵Rt, Tt分别是:
[0177] Rt=R1:
[0178] Tt=-RVT0
[0179] 根据上述方式,即可获得camera坐标系和floor坐标系的转换关系。再结合image 坐标系和camera坐标系的转换关系,可以计算视频中任意像素在真实物理世界中(也即, floor坐标系)中的坐标,也可以在真实世界中假想任何一个坐标,计算出该坐标在视频中 的位置(也即,image坐标系中的坐标)。
[0180] 接下来,本申请实施例提供了五种具有统计功能的热点,分别为:StepCounting Mat、Touch Counting Wall、Pass Counting Door、People Counting Queue、People Counting Desk,其中,People Counting Queue为以人与人之间的位置关系作为示例,Step Counting Mat、Touch Counting Wall、Pass Counting Door、People Counting Desk 贝U为 以人与监测区域之间的位置关系作为示例,下面以这五种具有统计功能的热点作为实例进 行说明。
[0181] 1、Step Counting Mat
[0182] 图5示出了本申请实施例中Step Counting Mat的场景示意图,如图所示,假设在 视频画面中有a、b两个人,本申请实施例可以在视频画面中预先设定step counting mat 区域(如:图5中阴影部分所示的地面)。
[0183] 根据人员检测和追踪技术可以检测出视频中的每个人,并得到他们的位置。将每 个人抽象为位于人的重心位置的一个质点,并且投影到地面(也即floor坐标系的XoY平 面),计算该质点在地面的投影与预设设定的step counting mat区域的位置关系,即可实 现Step Counting Mat功能,统计设定区域中的人数。
[0184] 计算人和区域位置关系的方法可以采用如下方式:
[0185] 对任意位置的人(P或者Q),以他在地面投影位置为起点,向任意方向无穷远处有 一条射线,假设取水平方向上的射线,计算该射线与Step Counting Mat区域的交点个数。 如果交点个数为奇数,则人在区域内部;如果交点个数为偶数,则人在区域外部。
[0186] 图6示出了本申请实施例中Step Counting Mat的投影示意图,如图所示,a的射 线与监测区域有1个交点,说明a在监测区域内;b的射线与监测区域有2个交点,则说明b 在监测区域外。
[0187] 图7示出了本申请实施例中Step Counting Mat的效果示意图,在具体实施时,可 以根据实际的需要,将不同的统计结果以不同的颜色、大小、形状等进行区分显示,例如将 监测区域内6个人所在位置用红色扩散圆表示、3个人所在位置用蓝色扩散圆表示。
[0188] 2、Touch Counting Wall
[0189] 图8示出了本申请实施例中Touch Counting Wall的场景示意图,如图所示,可以 将超市内装有物品的货架所在平面标注为Touch Counting Wall区域,假设画面内检测有 a、b两个人正在货架前挑选商品,其中a抬起手去拿货架上的物品,而b仅在货架前观看物 品。
[0190] 检测像素变化的部分,由于a、b两人均遮挡住了货架所在区域,a、b两人所在位置 的像素均发生了变化,根据这些位置的像素计算在floor坐标系中的坐标。
[0191] 本申请实施例将a、b两个人以及货架均投影到地面,图9示出了本申请实施例中 Touch Counting Wall在floor坐标系XoY平面的投影示意图,如图所示,下面进行说明。
[0192] L为Touch Counting Wall在XoY平面的投影,a和b两个黑色圆形分别表示a、b 两个人在XoY平面的投影。
[0193] 在图9中可以看到,a圆穿越了 Touch Counting Wall在floor坐标系XoY平面 的投影,则代表这些像素对应的位置已被触摸,也即a触摸了货架;相反的,b圆没有穿越在 XoY
当前第3页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1