gpt4 book ai didi

image-processing - OpenCV:如何使用图像计算相机和物体之间的距离?

转载 作者:太空宇宙 更新时间:2023-11-03 20:36:47 25 4
gpt4 key购买 nike

我是 OpenCV 的新手。我正在使用以下公式计算距离:

distance to object (mm) = focal length (mm) * real height of the object (mm) * image height (pixels)
----------------------------------------------------------------
object height (pixels) * sensor height (mm)

OpenCV 中有确定物距的函数吗?如果没有,是否有引用示例代码?

最佳答案

给定已知大小的物体如何计算距离

你需要预先知道两件事中的一件

  • 焦距(以毫米和每毫米像素为单位)
  • 图像传感器的物理尺寸(计算每毫米像素数)

我将使用焦距,因为我不想用谷歌搜索传感器数据表。

校准相机

使用OpenCV calibrate.py工具和源代码中提供的棋盘图案PNG生成校准矩阵。我从尽可能多的角度拍摄了大约 2 张棋盘照片,并将文件导出到我的 Mac。有关更多详细信息,请查看 OpenCV's camera calibration docs .

相机校准矩阵(iPhone 5S 后置相机)

RMS: 1.13707201375
camera matrix:
[[ 2.80360356e+03 0.00000000e+00 1.63679133e+03]
[ 0.00000000e+00 2.80521893e+03 1.27078235e+03]
[ 0.00000000e+00 0.00000000e+00 1.00000000e+00]]
distortion coefficients: [ 0.03716712 0.29130959 0.00289784 -0.00262589 -1.73944359]
  • f_x = 2803
  • f_y = 2805
  • c_x = 1637
  • c_y = 1271

检查您拍摄的一系列棋盘照片的详细信息,您会发现照片的原始分辨率 (3264x2448) 及其 JPEG EXIF headers ,在 iPhoto 中可见,您可以找到焦距值 (4.15mm)。这些项目应因相机而异。

每毫米像素数

我们需要知道图像传感器上每毫米的像素数 (px/mm)。来自 camera resectioning 上的页面我们知道 f_x 和 f_y 是焦距乘以比例因子。

f_x = f * m_x
f_y = f * m_y

由于每个公式都有两个变量,我们可以求解 m_x 和 m_y。我只是平均 2803 和 2805 得到 2804。

m = 2804px / 4.15mm = 676px/mm 

对象大小(以像素为单位)

我使用 OpenCV (C++) 抓取了 Rotated Rect的点,并确定对象的大小为 41px。请注意,我已经检索了对象的角,并询问边界矩形的大小。

cv::RotatedRect box = cv::minAreaRect(cv::Mat(points));

小皱纹

在 640x480 相机拍摄的视频中,物体为 41px。

在较低分辨率下转换 px/mm

3264/676 = 640/x
x = 133 px/mm

因此,给定 41px/133px/mm,我们可以看到图像传感器上物体的尺寸为 .308mm。

距离公式

distance_mm = object_real_world_mm * focal-length_mm / object_image_sensor_mm
distance_mm = 70mm * 4.15mm / .308mm
distance_mm = 943mm

这恰好很好。我测量了 910 毫米,通过一些改进,我可能可以减少误差。

欢迎反馈。

相似三角形法

Adrian 在 pyimagesearch.com 演示了 a different technique using similar triangles .我们事先讨论了这个话题,他采用了相似三角形方法,而我采用了相机内在函数。

关于image-processing - OpenCV:如何使用图像计算相机和物体之间的距离?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14038002/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com