单目视觉学习(1)

单目视觉(1)

note:学习一下单目视觉,本文只代表作者写本文时的想法和理解。限于当时的水平和学习的进展,可能有些错误,望谅解。


问题提出

人眼观察世界通过两个视角来形成对空间的基本认知。模仿人眼的原理,可以使用多个摄像机同时采集同一空间中的图像,然后通过一定的算法来实现对三维空间的重建。这就是典型的双目视觉(stereo-vision)问题。由此可以衍生出多视觉(multi-vision)的重建问题。那么如果只有一台摄像机,是否可以呢?通过单个摄像头拍摄的图像来实现三维空间的重建称之为单目视觉。


基本原理

单帧测距

(一)测物体到相机的距离
单目视觉获得的图像本质上是2D的,结合相机的成像模型(初中物理,小孔成像)j就可以获知距离了,前提是你知道物体的真实大小。

小孔成像

  • case 1: 物体在摄像机的正前方,即相机坐标系的y轴上。
    如果物体在摄像机的正前方(光轴上),那么可以做一个简单的公式计算:
    fd=hH(1) f d = h H ( 1 )

    其中f为焦距,d为物体到相机的距离,h为物体在像上的高度,H为物体的实际高度。

焦距是相机的内参数,一旦相机确定,这个数值基本就是确定了。H为物体的实际高度,这个也是可以获取的。 d d 为所求,那么h的获知就是成了关键。 h h 代表了物体所成像的高度。像的获取是通过摄像机内部的感知元件作用后保留下来的,如果知道每个感知元件的物理尺寸(δ)和像中包含的感知元件的个数( n n ),那么就能够得知像的高度 h=nδ。那么式子(1)就可以转化为:

fd=nδH(2)d=fHnδ(3)(1)(2) (1) f d = n ⋅ δ H ( 2 ) (2) d = f ⋅ H n ⋅ δ ( 3 )

case 2: 物体在摄像机坐标系的xy平面上有偏移(即在x轴上有值)
那么物体成像并不是在图像的中间部分,而会在中间偏左或者偏右的位置。因为物体并不是在摄像机的正前方,反而存在一个水平方向的夹角 α α 。此时光心到像中心(非图像中心)的距离与光心到物体的距离满足case 1的模型。即有:

dflα=fHnδ(3)=f2+l2(4)=nxδ  (5)=arctan(lf)(6)(3)(4)(5)(6) (3) d ′ = f ′ ⋅ H n ⋅ δ ( 3 ) (4) f ′ = f 2 + l 2 ( 4 ) (5) l = n x ⋅ δ     ( 5 ) (6) α = arctan ⁡ ( l f ) ( 6 )

其中 f f ′ 表示光心到像中心的距离, d d ′ 表示光心到物体中心的距离, l l 表示像中心到图像中心的水平偏移距离,nx表示水平偏移的像素个数。
此时,可以得到物体到摄像机的距离为:
d=dcosα=Hf2+(nxδ)2nδff2+(nxδ)2=Hfnδ(7) d = d ′ ⋅ cos ⁡ α = H ⋅ f 2 + ( n x ⋅ δ ) 2 n ⋅ δ ⋅ f f 2 + ( n x ⋅ δ ) 2 = H ⋅ f n ⋅ δ ( 7 )

这个符合预期,因为只是在x轴上移动了而已,并没有增加y轴上的距离。所以公式应该与 case1相同。

case 3: 当物体在z轴上有移动时,即在光轴上下移动。
可以猜想,计算公式也和前两个case相同。

(二)测物体的大小
依据之前推导的公式,如果知道了物体到摄像机的距离,那么其实可以推导出物体的一些尺寸。即:

H=nδdf(8) H = n ⋅ δ ⋅ d f ( 8 )

多帧测距

多帧测距是通过摄像机拍摄运动的物体获得多幅图像,然后寻找其中相对应的部分计算出像素的相对位移,然后通过相应的算法来测算距离。(感觉有点类似双目视觉,但理论推导可能不一样)

序列图像
由透镜成像原理可知:

1z1+1d1=1f(9)1z2+1d2=1f(10)h1z1=Hd1(11)h2z2=Hd2(12)(7)(8)(9)(10) (7) 1 z 1 + 1 d 1 = 1 f ( 9 ) (8) 1 z 2 + 1 d 2 = 1 f ( 10 ) (9) h 1 z 1 = H d 1 ( 11 ) (10) h 2 z 2 = H d 2 ( 12 )

那么则有:
d1h1=d2h2(13)() d 1 ⋅ h 1 = d 2 ⋅ h 2 ( 13 ) ( 像 大 小 与 距 离 成 反 比 )

NOTE: N O T E : 以 上 都 是 在 理 想 状 况 下 进 行 的 分 析 。 在 实 际 情 况 中 需 要 做 更 多 的 处 理 , 比 如 相 机 标 定 , 图 像 的 校 正 , 变 换 等 。

References

[1] 单目视觉测距
[2] OpenCV单目平面测距
[3] 基于单目视觉的实时测距方法研究


评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值