camera - 从图像计算焦距

标签 camera

我正在尝试计算镜头的焦距(我有 4 个不同的镜头,我将它们称为镜头 1、2、3、4)。我知道我正在使用的相机的传感器尺寸(我使用 2 种不同的相机),我知道物体宽度,我知道工作距离。

我正在使用以下公式:

f = focal length of width = (working distance * sensor width)/(object width + sensor width)

我也使用了相同的公式,稍作改动:

f' = focal length of width = (working distance * sensor width)/object width

我的相机的传感器尺寸如下:

Model: 134MCU - 1/3" - 3,52 mm * 4,78 mm

Model: 130CU - 1/4" - 2,75 mm * 3,64 mm

这就是问题所在,我用两台相机从已知的工作距离拍了几张照片,并测量了图像宽度(我在图像场景中放了一把尺子)。之后,我使用给定的公式计算了 ff'。在计算了他的焦距之后,我得出了几个我认为不一致的观察结果。观察结果如下:

  1. 随着工作距离的增加,每个镜头的计算焦距会收敛到某个值。我期望为每个工作距离计算相同的 ff' 值。为什么会这样?是否对工作距离有任何依赖性,或对工作距离有任何限制(例如,对于焦距为 f mm 的镜头,工作距离不能小于 n)?
  2. 我有 8 种不同的成像设置,因为我有 4 个镜头和 2 个摄像头。使用 134MCU 拍摄的图像计算的 ff' 值不同于使用 130CU 拍摄的图像镜头 1 和镜头 2。镜头 3 和 4 的计算值相同。为什么会发生这种情况?

    • 使用 130CU 计算的镜头 1 值约为 1.6 毫米
    • 使用 130CU 计算的镜头 2 值约为 2.4 毫米
    • 使用 130CU 计算的 lens 3 值约为 2.8 mm
    • 使用 130CU 计算的镜头 4 值约为 3.6 毫米
    • 使用 134MCU 计算的镜头 1 值约为 1.4 毫米
    • 使用 134MCU 计算的镜头 2 值约为 2.2 毫米
    • 使用 134MCU 计算的镜头 3 值约为 2.8 毫米
    • 使用 134MCU 计算的镜头 4 值约为 3.6 毫米
  3. 当我与镜头供应商交谈时,他们告诉我镜头 1、2、3、4 的焦距分别为 2.1 毫米、2.5 毫米、2.8 毫米和 3.6 毫米。那么,为什么我的计算值与这些值不匹配?我的计算有问题吗?

我使用的图像可以在 here 中找到.如果有人能提供帮助,我将不胜感激。

问候,

古尼·凯伊姆

最佳答案

我刚刚下载了您发布的图片,答案就在眼前。

您使用的公式假设每条光线都沿直线从物体传播到传感器。实际上,这些广角镜头具有相当复杂的多个表面,光线在穿过“堆栈”时会多次改变方向。结果,边缘有明显的变形。标尺上线条的高度越靠近边缘越小 - “完美的针孔相机”将使它们保持精确的比例。

很难想出一个方程来正确解释这种失真 - 通常相机的计量应用(人们真正关心这些东西)会在感兴趣的焦距处进行几何校准以校正它。

那么你的问题“我的计算有什么问题吗?”的答案是这样的:“是的,有问题 - 你的计算是针对理想系统的。你没有理想的系统。”

编辑 我想到你可以通过使用“更小的传感器”来做一些更好的事情:

  1. 拍摄您已有的图像
  2. 查看图像的一部分(靠近中心)
  3. 找出标尺上跨度小于传感器宽度 10% 的两个标记之间的距离(以像素为单位)
  4. 计算“表观传感器尺寸”= (标记之间的像素数/传感器上的像素数)* 传感器宽度
  5. 在计算中使用表观传感器尺寸

通过使用可变数量的像素(与标尺上的精确格数匹配),您可以限制必须进行的估计/插值量。我认为这将解决大部分失真问题,并为您提供与制造商提供的数据一致的结果。

关于camera - 从图像计算焦距,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18232145/

相关文章:

javascript - 如何在 Three.js 中飞越场景?

android - 相机错误 100 详细信息

android-studio - 使用相机拍摄图像并上传到 Firebase(onActivityResult() 中的 Uri 为空)

swift - SceneKit:在 Swift 4 中缩放相机

ios4 - UIImagePickerController : ignoring request to take picture; camera is not yet ready

java - phonegap 相机 API 在 android 上重新启动应用程序

android - resultActivity 上的 IMAGE_CAPTURE 文件尚不存在

reactjs - 无法使用 webrtc MediaDevices 在 React 应用程序中切换摄像头(从前到后)

cordova - Phonegap :difference between capture. captureImage 和 camera.getPicture