【问题标题】:Is there a way to find mm per pixel value for a camera?有没有办法找到相机的每像素毫米值?
【发布时间】:2019-12-04 07:19:14
【问题描述】:

我需要使用图像处理对公差为 20 微米的物体进行尺寸检查。要以毫米为单位测量尺寸,我需要每个像素的毫米值来进行像素到毫米的转换。

相机和镜头规格: 5 MP 矩阵视觉相机 (2592 x 1944) 25 毫米镜头

我是如何做到的: 我使用了一个 30 厘米的尺子来获得相机所覆盖的以毫米为单位的实际视野。我使用 OpenCV 中的 Matplotlib 函数得到了图像的绘图,如图所示。 Image for scaling

从图像中我得到 31 毫米作为相机覆盖的实际宽度,相机分辨率为 2592 x 1944。所以我得到毫米/像素 = 31/2952 = 0.011959876。 但我想知道在尺寸检查中需要 20 微米的公差时,使用厘米刻度查找毫米/像素值是否是正确的方法。如果这不是正确的方法,那么寻找毫米/像素值的解决方案将非常有帮助。

【问题讨论】:

    标签: image-processing camera pixel dimensions camera-calibration


    【解决方案1】:

    我相信你正在做的事情真的很边缘。首先,为了尽可能精确,我会使用最左边和最右边标尺刻度的右(或左)边缘,就像我在这里草绘 一样:

    然后使用此像素值来计算毫米/像素校准值。即使用这种方法20亩也很难做到。假设我们可以以 2 个像素的精度(非常乐观)确定标尺刻度边缘位置,那么您将有大约 31mm/2580 * 2 的误差,即大约 25 亩。

    如果您真的需要 20mu 的校准精度,我会选择 microscope calibration target。我一直使用其中一种来完成这种校准任务。

    【讨论】:

    • 我必须将鼠标指针放在标尺刻度边缘才能找到以像素为单位的位置坐标?还是您在谈论其他方法??
    • 嗯,对于两个像素的精度,鼠标指针的位置应该没问题。如果您想要更精确的东西并且您有一些编程知识,您可以尝试沿 750 垂直像素位置分析图像并尝试拟合标尺刻度给出的峰值位置
    • 除了那个答案之外,我认为通常的 30 厘米尺子不会这么准确。考虑到尺子的材料,它会受到影响,例如温度变化会影响您的 20µm 精度目标。具有相似精度的白光扫描仪使用多个目标在特殊材料或殷钢标尺上进行校准。显微镜校准目标确实很有用。
    • 确实,校准目标通常使用具有低热膨胀系数的材料制造。当然,如果你能达到其中之一,那就是要走的路。
    • 如果你能得到一个,那么是的
    【解决方案2】:

    在 31 毫米 = 31000 微米的视场上 20 微米对应于 1.7 像素,因此您的测量误差必须小于此值。这是一个严格的要求。你的尺子和手动操作不合适。

    首先,您应该检查镜头畸变的幅度,它很可能会超过这 1.7 个像素。您将需要一个可以将变形模型拟合到图像的精确校准程序。为此,您应该使用经过认证的校准目标,例如点网格或棋盘图案。

    校准软件在测量和补偿失真的同时,会提供物理单位(知道网格间距)和像素之间的比例因子。您可以通过斑点分析或测量技术测量目标上的特征位置,然后使用模型的最小二乘拟合。

    为机器视觉应用程序制作的软件包确实包含此类工具。


    另外请注意,由于边缘位置错误,物体的尺寸测量可能存在偏差。简单地移动光源可能会导致测量尺寸发生变化。

    如果您的对象总是相同且位于视野中的相同位置,一个廉价的解决方案是建立一个以像素为单位的可重复测量程序,并对其中一个部件进行物理测量。这将为您提供在相同条件下有效的比例因子。

    但简单地移动对象会产生明显的效果,无论是通过改变边缘上的光反射/阴影还是通过产生不同的失真。

    【讨论】:

    • 先生,请推荐一些校准软件以获得毫米/像素值。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-31
    相关资源
    最近更新 更多