计算机视觉:在表面上生成液滴的3D模型

问题描述 投票:0回答:1

考虑平面水平表面上的一滴液体。我需要通过从不同角度拍摄图像来生成液滴的3D模型。

假设:

  1. 液滴关于垂直轴对称。
  2. 表面理想地是平面和光滑的。

查询:

  1. 我需要多少这样的图像才能处理3D模型?
  2. 我选择哪种相机方向?
  3. 我该如何实现呢?

编辑:这是使用DropSnake插件拍摄的图像,用于测量液滴的接触角。然而,有人告诉我,校准需要花费大量的时间和精力,否则误差可能会逐渐增加。大部分时间用于实现完美的对准,误差是由于阴影的干扰和液滴对光的弯曲造成的。

enter image description here

我的方法:我们可以定位多个摄像头,从各个角度拍摄许多液滴照片,无需校准。然后,如果需要,通过创建3D模型来提取有关接触角的信息。

DropSnake提供的精度是0.001度,所以即使0.01也没关系。

3d computer-vision geometry
1个回答
1
投票

我担心没有任何功能可以锁定在液滴边缘附近,因此立体视觉是不可能的。这意味着你必须只使用单个图像,相机垂直于液滴,如下所示:

2D -> 3D

您还应该在地板上放置一些标记,或者将相机放在与液滴相距已知距离的位置,以便放松。那么现在该做什么:

  1. 提取液滴2D边缘像素 与图像完全一样,红色或蓝色点。因此,只需提取所有边缘点并理想地按角度对它们进行排序,使它们形成折线轮廓......如果摄像机视图垂直于我们的液滴,则轮廓将与摄像机焦平面平行,因此其所有点都处于相同的垂直距离......这对于仅从单张图像转换为3D至关重要......
  2. 相对于相机将轮廓转换为3D 这是简单的数学运算,所以如果你看左边的图像是顶部的概述,右边是捕获的图像。让我们考虑来自捕获图像的2D品红点(x,y)。假设三维坐标系,其中点(0,0,0)是焦平面的中间(图像的中心)Z是距焦点的距离,并且x,y方向与图像匹配。 所以2D (x,y)我们可以通过使用三角形相似度转换为3D: (x - xs/2) / focal_length = X/distance (y - ys/2) / focal_length = Y/distance 所以3D位置将是: X = (x - xs/2) * distance / focal_length Y = (y - ys/2) * distance / focal_length Z = distance
  3. 创建网格 由于液滴是对称的,因此仅使用轮廓的一半并简单地围绕液滴中心轴旋转3D轮廓,并将得到的点重新排序成形成3D液滴表面的某些网格拓扑。或者只计算每个轮廓点与轴的垂直距离,并将其用作参数圆方程的半径,并将网格计算为每个y切片的一组圆

精度取决于相机FOV,分辨率和到液滴的距离。所以,如果还不够,你可以:

  • 将相机放置在靠近液滴的位置
  • 使用更大的相机分辨率(或插入)
  • 在提取轮廓时使用子像素精度
© www.soinside.com 2019 - 2024. All rights reserved.