发明内容
本发明提出一种基于单目摄像机的测量深度、深度场以及被测物体大小的方法,可利用现已大量安装使用的带有旋转云台的普通视频监控摄像机,实现物体深度及实际尺寸的测量,有效地解决了视频监控中的测量问题。
本发明提供了一种基于单目摄像机的深度测量的方法,利用云台旋转测量静止物体的深度信息,其特征在于,它采用如下步骤获得物体深度:
(1)对于给定的摄像机方位和镜头焦距f,也即给定的视场,采集图像A;
(2)通过云台控制摄像机水平或垂直旋转一角度θ,采集图像B;
(3)对于物点Q,在图像A中像点为Q’(x1,y1),利用图像匹配算法找到其在图像B中像点Q”(x2,y2),其中图像坐标原点与光轴重合;
(4)按如下公式计算物点Q的深度Z:
其中,L是镜头光学中心(简称光心)到云台水平或垂直转动轴的距离,μ是对应传感器成像面上的像素间距,v是镜头像距,||Q′-Q″||是像点Q’与像点Q”在图像上的像素距离,Q’r是Q’在旋转方向(即Q’-Q”矢量方向)上的投影,Q”r是Q”在旋转方向(即Q’-Q”矢量方向)上的投影。
本发明提供了一种基于单目摄像机的深度场测量的方法,其特征在于,它采用基于单目摄像机的深度测量的方法的步骤(1)至(4)所述的方法获得图像A或B中各像素点对应物点的深度值(简称为像素点的深度值,或像点的深度值),并利用各像素点的深度可靠性进行深度修正,得到图像A或B对应的深度场。
进一步,本发明还提供了一种通过控制摄像机变焦,获得一大视场图像更准确的深度场的方法,具体步骤为:
(1)采集该视场的一幅图像C;
(2)控制云台方位,并控制摄像机镜头焦距,使镜头有较长的焦距,采集一系列图像Di,使图像Di及其深度场遍历图像C;
(3)用上述基于单目摄像机的深度场测量的方法计算所采集图像Di的深度场;
(4)用图像匹配算法使图像C中的每个像素点在图像Di中找到对应点,将其深度值作为C中对应像素的深度值,得到图像C的深度场。
另外,本发明还提供了基于单目摄像机的运动目标深度及其大小测量方法,特征在于,采用如下方式获得运动目标的深度信息及其大小:
(1)采集该视场不同时刻的一组图像Ci,用上述基于单目摄像机的深度场测量方法,或大视场图像更准确的深度场测量方法分别计算其深度场;
(2)采用背景图像提取算法获得背景图像,将作为背景像素时的深度值或其平均值作为该像素位置的深度值;
(3)用运动目标检测算法检测运动目标区域,将每个运动目标所覆盖的背景像素的最小深度作为该运动目标的深度估计;根据运动目标的深度、镜头焦距及运动目标在图像中的像素范围估算该运动目标的大小。
由于一般云台的水平和垂直旋转的转轴与摄像机镜头中心是不重合的,故摄像机旋转前后的二个位置就具有视差,本发明就是利用这个视差和光学成像几何原理实现深度测量,从而使现有的视频监控系统具有深度测量和目标测量功能,有利于目标的检测和分析。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面结合附图对本发明作进一步的详细描述。
图1所示为本发明测量深度方法的实施例的流程图,包括:
步骤101、对于给定的摄像机方位和镜头焦距f,也即给定的视场,采集图像A;
步骤102、通过云台控制摄像机水平或垂直旋转一个角度θ,采集图像B;该角度的旋转容易通过摄像机控制指令实现。
步骤103、如图2摄像机成像模型所示,对于物点Q,在图像A中像点为Q’(x1,y1),利用图像匹配算法找到其在图像B中对应像点为Q”(x2,y2),其中图像坐标原点与光轴重合,图3为成像模型在转动方向的剖面图;所述的图像匹配算法是以像素Q’的一个邻域,如3的正方形,以全搜索或其它搜索算法在图像B中搜索最匹配的像素Q”,或类似地,图像B中的点在图像A中找对应像点。可利用摄像机的转动方向和角度,估计Q”可能出现的区域,从而限定搜索区域,提高搜索速度。
步骤104、O M与O”N是物点Q的深度,由∠QHO′+∠QHO″=θ可以导出物点Q的深度Z计算公式为:
其中,L是镜头光学中心到云台水平或垂直转动轴的距离,可实际测得,或由云台和摄像机机械参数提供;
μ是对应传感器成像面的像素间距,为摄像机所用的传感器参数,在图像像素与传感器像素不相同时,可利用传感器宽度(或高度)与图像宽度(或高度)的像素数之比得到;
v是镜头像距,根据透镜成像公式
其中u是物距(被摄物体与摄像机的距离),f为镜头焦距,一般情况下,u远大于像距v,故(1)式中v可近似用f代替,而f可由摄像机镜头参数提供,对于电动变焦镜头,f可由变焦参数得到。
如图4所示,||Q′-Q″||是像点Q’与像点Q”在图像上的像素距离,即
Q’r是Q’在旋转方向(即Q’-Q”矢量方向,也即X’或-X’)上的投影,即
同样,Q”r是Q”在旋转方向上的投影,即
其中[·]表示矢量内积。
在公式(1)中,如果只作水平旋转,且转动轴与图像的Y轴平行,如图5所示,则旋转前Q’与旋转后Q”的Y坐标相同,即y1=y2,公式(1)简化为:
类似地可得到只作垂直旋转,且转动轴与图像的X轴平行的计算公式为:
对于静止的物体,由于摄像机固定安装,摄像机转动前后被测物体的深度不变,上述步骤可测量物体上一个点的深度。
如图6所示为测量深度场方法的流程图,包括:
步骤101至104与图1相同,即对图像A或B中各像素点对应的物点均采用步骤101至104所述的方法计算其深度值。
步骤105、并利用各像素点的深度可靠性进行深度修正,得到图像A或B对应的深度场。由于平坦区域(纹理很少的区域)物点的像素匹配不易找准,因此用邻域的纹理显著性(如邻域内像素方差)、局部位移方向一致性、匹配是否局部显著最优(明显优于次优匹配)、或其它邻域特性,作为深度可靠性,如果深度可靠性小于某一设定的阈值T,但相邻像素,如四邻域或八邻域像素的深度可靠性超过阈值T,则用相邻像素深度可靠性超过阈值T的像素的深度内插或平均作为该像素的深度值。由于在图像边界处的像素可能只在图像A或只在图像B中出现,即找不到匹配,因此图像的深度场小于图像A和B的范围。
图7为本发明实施例中获取大视场图像深度场的流程图,包括:
步骤701、采集一大视场的一幅图像C。
步骤702、控制云台方位,并控制摄像机镜头变焦,使镜头有较长的焦距,采集一系列光学放大的图像Di,使图像Di及其深度场遍历图像C。由于图像Di对应的深度场小于图像Di,因此该遍历图像C的过程需要图像Di之间有一定重叠。简单地,通过控制水平和垂直转动,扫描覆盖图像C的视场区域,即可实现图像Di及其深度场遍历图像C。这个过程可手动进行,也可根据图像C所用焦距或视角与图像Di所用焦距或视角,即变倍,确定遍历扫描时的转动角度,从而实现自动扫描。
步骤703、用图6步骤101至步骤105所述的方法计算所采集图像Di的深度场。步骤704、用图像匹配算法使图像C中的每个像素点在图像Di中找到对应点,将其深度值作为C中对应像素的深度值,得到图像C的深度场。由于图像Di对应的焦距较长,这种方法提高了图像C的深度场的精度。由于图像C与图像Di成像时的镜头焦距不一样,需要经过仿射变换再进行匹配,采用类似视频编码中运用的基于仿射变换的匹配算法进行匹配,或将图像C内插放大再与图像Di匹配。
由于在镜头焦距较短时,深度检测算法的精度相对较低,该方法的有益效果是,由于采用长焦距进行深度测量,再通过图像匹配将其映射到大场景图像上,提高了大场景图像的深度图精度。
图8为本发明实施例中获取运动目标深度信息及其运动目标的大小流程图,包括:
步骤801、采集该视场不同时刻的一组图像Ci,采用图6步骤101至105所述的方法或步骤601至604所述的方法或图7步骤701至704所述的方法分别计算其深度场。
步骤802、采用背景图像提取算法获得背景图像,将作为背景像素时的深度值或其平均值作为该像素的深度值(在所采集的这组图像中,对特定的像素位置,在一些图像上可能判作为背景像素,在另一些图像上可能判作为前景像素)。所述的背景图像提取算法可以是常用的单高斯模型法、混合高斯模型法、帧差法,或其改进算法。若对于给定的像素点,不同时刻采集的图像Ci上均为背景像素,则可用它们的深度平均值,作为该像素的深度值。
步骤803用运动目标检测算法检测运动目标区域,将每个运动目标所覆盖的背景像素的最小深度作为该运动目标的深度估计。利用单高斯模型法、混合高斯模型法、帧差法或其它运动目标检测算法,即可检测运动目标区域。根据运动目标的深度、镜头焦距及运动目标在图像中的像素范围估算该运动目标的大小。如果运动目标的深度为Z、在图像中的宽度为w个像素,镜头焦距为f,像距为v,则该运动目标的实际宽度W估算为:
类似地,可估算运动目标的高度、面积等。
上述算法中,如果摄像机镜头存在失真,则对测量精度会有一定影响,可先对采集到的图像采用立体视觉摄像机标定技术进行标定校准,再用上述方法进行测量,从而提高精度。
图9为本发明摄像机参数
的测量方法的示意图。如果不知道摄像机在给定焦距下的
则可采用如下方法测量:找到视场垂直于光轴、相距为L
0的二个物点,它们与镜头光学中心的距离为D
0,它们在图像上的像点相距为l
0,则
对于可变焦距的摄像机,可采用该方法预先测量好各个焦距f下的
由于对于给定的焦距,不同的物距,像距随之有小变化,只有在物距u远大于焦距f时,像距v才与焦距相近,因此,为了减小误差,测量时物点与镜头光学中心的距离最好与实际应用相近。
图10为本发明测量镜头光心到云台水平或垂直转动轴的距离L的实施例的流程图,图11所示为该测量流程中的成像示意图。
如果摄像机水平或垂直转动原点与镜头光心的距离L未知,则采用如下步骤测量:
步骤1001对于给定的摄像机镜头焦距f,转动云台,选包含已知深度为Z0的物点P的视场,采集图像A0,物点P在图像A0中的像点为P’(x3,y3),如图10所示,其中图像坐标原点与光轴重合,O’为镜头的光心;
步骤1002通过云台控制摄像机水平或垂直旋转一定角度θ0,采集图像B0,该旋转角度容易通过摄像机控制指令实现或测得。
步骤1003利用图像匹配算法找到图像A0中P’对应的物点P在图像B0中的像点为P”(x4,y4),如图10所示,其中O”为镜头的光心。所述的图像匹配算法是以像素P’的一个邻域,如3×3的正方形,以全搜索或其它搜索算法在图像B0中搜索最匹配的像素P”。可利用摄像机的转动方向和角度,估计P”可能出现的区域,从而限定搜索区域,提高搜索速度。
步骤1004计算云台转动轴到镜头光心的距离如下:
其中,μ是对应传感器成像面上的像素间距,为摄像机所用的传感器参数,在图像像素与传感器像素不相同时,可利用传感器宽度(或高度)与图像宽度(或高度)的像素数之比得到;
v是镜头像距,根据透镜成像公式
其中u是物距(被摄物体与摄像机的距离),f为镜头焦距,一般情况下,u远大于像距v,故(5)式中v可近似用f代替,而f可由摄像机镜头参数提供,对于电动变焦镜头,f可由变焦参数得到。
||P′-P″||是像点P,与像点P”在图像上的像素距离,即
P’
r是P’在旋转方向(即P’-P”矢量方向)上的投影,即
同样,P”
r是P”在旋转方向(即P’-P”矢量方向)上的投影,即
其中[·]表示矢量内积。
在上述公式(5)中,如果只作水平旋转,且转动轴与Y轴平行,则P’与P”的Y坐标相同,公式(5)简化为:
类似地可得到只作垂直旋转,且转动轴与X轴平行的计算公式:
在指定镜头焦距f下,
近似不变,如果公式(5)至(7)中
未知,则可用(4)式计算,此外,还可通过水平转二次,或垂直转二次进行估测。如果第一次转动使物点P
a的图像坐标从P
a’(x
a’,y
a’)变为P
a”(x
a”,y
a”),转动角度为θ
1,第二次转动使物点P
b的图像坐标从P
b’(x
b’,y
b’)变为P
b”(x
b”,y
b”),转动角度为θ
2,则
其中
Za和Zb分别为物点Pa和物点Pb到镜头的距离(物距),
公式(9)中,||P
a′-P
a″||是像点P
a’与像点P
a”在图像上的像素距离。P’
ar是P
a’在旋转方向(即P
a’-P
a”矢量方向)上的投影,即
同样,P”
ar是P
a”在旋转方向(即P
a’-P
a”矢量方向)上的投影,即
其中[·]表示矢量内积。
公式(10)中各变量含义与公式(9)相似,只不过换成了第二次转动物点Pb的成像。本发明实施例采用球形一体化摄像机进行了实验测试,用上述方法测得摄像机参数为:L=6.1123cm,μ/v=0.00049816,在室内对2至5米远的物体的测试误差小于10%。对于目标的测量已有较好的效果,可用于目标的检测和分析。
总之,以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。