专栏名称: 3DCV
关注工业3D视觉、SLAM、自动驾驶技术,更专注3D视觉产业的信息传播和产品价值的创造,深度聚焦于3D视觉传感器、SLAM产品,使行业产品快速连接消费者。
目录
相关文章推荐
开发者全社区  ·  裸辞1天 vs 裸辞10天 vs 裸辞30天 ·  17 小时前  
济南时报  ·  山东第一个,济南造!人形机器人又“进化”了 ·  20 小时前  
济南时报  ·  山东第一个,济南造!人形机器人又“进化”了 ·  20 小时前  
开发者全社区  ·  当初和你结婚,对你的定位是P7 ·  昨天  
郭霖  ·  你所不知道的Android ... ·  4 天前  
开发者全社区  ·  年入百万的华为夫妇也互撕 ·  3 天前  
51好读  ›  专栏  ›  3DCV

如何测算出任一副图片中的物体的实际尺寸?

3DCV  · 公众号  ·  · 2024-09-01 00:00

正文

点击下方卡片 ,关注「3DCV」公众号
选择星标,干货第一时间送达

来源:小白学视觉

添加小助理:cv3d008,备注:方向+学校/公司+昵称,拉你入群。文末附3D视觉行业细分群。

扫描下方二维码,加入「3D视觉从入门到精通」知识星球,星球内凝聚了众多3D视觉实战问题,以及各个模块的学习资料:近20门独家秘制视频课程最新顶会论文、计算机视觉书籍优质3D视觉算法源码等。想要入门3D视觉、做项目、搞科研,欢迎扫码加入!


Q:

比如我想知道这个书架每一格的高宽,有办法吗?没有什么神奇的软件可以帮忙?




A:

从一幅图像中无法测出物体的长度,因为缺乏参照物,但可以测出两个平行物体的长度比例。


如果已知一个物体的实际大小(比如在图片中放上一枚1元硬币或者知道某个柜子有多高),那么就可以通过长度比和参照物的已知长度测出物体长度。


具体方法见文献[1],因为需要一些矩阵运算和摄像头成像方面的推导,这里只大概说说原理。


图像测量利用了摄像头成像也就是小孔成像的几个性质[2]:


第一,摄像头把平行的直线映射为图像上相交直线,笔直的铁轨在远处相交就是这个道理,这个交点被称为消隐点(vanish point)。


可以认为平行空间直线在无穷远处相交,消隐点则是这一交点的像。


所有水平的平行直线族都各自相交于无穷远处的一点,这些点构成无穷远直线,这条直线在图像上的像叫地平线。


我们所居住的三维空间中存在三组相互垂直的直线(例如水平两组,x轴和y轴方向,竖直一组,z轴方向),所有x、y、z方向上的平行直线在一张图片上会分别相交于各自的一个消隐点。


并且水平直线对应的两个消隐点如果连起来,连线就是地平线。


测量的关键,就是要得到这些消隐点,因此有很多竖直线(如书架)或水平线(如地板砖)的图片就容易测量。



第二,摄像头把三维空间投影到二维的图像上,保持直线交比不变,交比是四个点两两“比例的比例”。


所以如果在三维空间中的一条直线上有四个点,那么它们映射到图片上的四个点后,这四个点的交比不变。



文献[1]通过这些条件,给出了从图片上计算长度比的公式。通过示意图我们可以更加直观地看出它是如何工作的:



首先,假设我们已知蓝色小人Bob的身高,要求出红色小人John的身高,只需要知道两人的身高比值就可以:



我们用大写字母表示真实的坐标,随后用小写字母表示图片上的像素坐标。


两人的身高比值BE/AF可以这么求:首先连接AB,然后过E点做AB的平行线交AF于点D,因为ABED是个矩形,所以要求的比值就等于AD/AF。


然而,这种判断是在三维空间中做出的,当物体成像为图片,所有点的位置都会发生变化(不要问我圆头为什么会变成方头):



其中最显著的变化是平行线相交了,由此我们可以找到三个方向的消隐点,这可以通过对竖直和两组水平平行线求延长线获得:



注意我们把水平平行线对应的两个消隐点连接起来,得到了一条在(无穷)远处的直线,每个人都熟悉它,它就是地平线。


地平线上所有的点都有一个性质:从其上一个点引出的所有直线都是相互水平平行的。



因此点D在图上的坐标d是这么求出的:
1. 画出地平线

2. 延长ab,交地平线于点c
3. 延长ce,交af,也就是John于点d


因为点c在无穷远处,所以cd和ca在空间中是平行直线,abed也就是上面说述真实空间中矩形ABED的像。


然而,知道了某些点在图像上的像,它们的实际长度比是无法直接从图上测得的,因为大家的深度不一样,这时就要利用成像前后一条直线上四个点交比不变的性质,考察红色小人John身上的三个点A、D、F以及其延长到无穷远处的点G,就可以得到(大写字母换成小写字母):


(AD/AF)/(GD/GF)=(ad/af)/(gd/gf)


因为已经求出了点d,等式右边所有的量都可以从图像上测出。等式左边的点G在真实空间是所有垂直直线的交点,这个点在无穷远,和无穷相比点F和点D的差异可以忽略不计,所以GD/GF=1,这样就得到最终结果:


AD/AF = (ad/af)/(gd/gf)


[1] Criminisi A, Reid I, Zisserman A. Single view metrology[J]. International Journal of Computer Vision, 2000, 40(2): 123-148.

[2] Hartley R, Zisserman A. Multiple view geometry in computer vision[M]. Cambridge university press, 2003.


PS: 有朋友指出的image rectification概念其实是双目视觉中的一个专有概念,假如有两幅图像拍摄的物体相同,但是摄影师站位不同,一左一右,通过某种变换可以对两幅图像分别做一个变换,(近似)让左边这幅图像上每一行的每一个像素点代表的物体上的点在右边那副图像上的像点也恰好在右图的同一行,这种变换过程叫做image rectification。其作用是为了随后计算视差图方便。


本文由超级数学建模编辑整理

来源:王小龙(知乎)

https://www.zhihu.com/question/20448353/answer/24885779


本文仅做学术分享,如有侵权,请联系删文。

3D视觉交流群,成立啦!

目前我们已经建立了3D视觉方向多个社群,包括 2D计算机视觉 最前沿 工业3D视觉 SLAM 自动驾驶 三维重建 无人机 等方向,细分群包括:

工业3D视觉 :相机标定、立体匹配、三维点云、结构光、机械臂抓取、缺陷检测、6D位姿估计、相位偏折术、Halcon、摄影测量、阵列相机、光度立体视觉等。

SLAM :视觉SLAM、激光SLAM、语义SLAM、滤波算法、多传感器融合、多传感器标定、动态SLAM、MOT SLAM、NeRF SLAM、机器人导航等。

自动驾驶:深度估计、Transformer、毫米波|激光雷达|视觉摄像头传感器、多传感器标定、多传感器融合、自动驾驶综合群等、3D目标检测、路径规划、轨迹预测、3D点云分割、模型部署、车道线检测、Occupancy、目标跟踪等。

三维重建 :3DGS、NeRF、多视图几何、OpenMVS、MVSNet、colmap、纹理贴图等

无人机 :四旋翼建模、无人机飞控等

2D计算机视觉 :图像分类/分割、目标/检测、医学影像、GAN、OCR、2D缺陷检测、遥感测绘、超分辨率、人脸检测、行为识别、模型量化剪枝、迁移学习、人体姿态估计等

最前沿 :具身智能、大模型、Mamba、扩散模型等

除了这些,还有 求职 硬件选型 视觉产品落地、产品、行业新闻 等交流群

添加小助理: dddvision,备注: 研究方向+学校/公司+昵称 (如 3D点云+清华+小草莓 ), 拉你入群。

▲长按扫码添加助理:cv3d008







请到「今天看啥」查看全文