考虑在平面水平面上滴一滴液体。我需要通过从各个角度拍摄图像来生成液滴的3D模型。
假设:
液滴围绕垂直轴对称。
理想的表面是平坦且光滑的。
查询:
我需要多少个此类图像才能处理3D模型?
我选择相机的哪个方向?
我该如何实现?
编辑:这是使用DropSnake插件拍摄的图像,该插件用于测量液滴的接触角。但是,有人告诉我,校准需要花费大量时间和精力,否则错误会逐渐蔓延。大多数时间都花在了实现完美对准上,并且错误是由于阴影的干扰和水滴的弯曲导致的。
我的方法:我们可以定位多个摄像机,以从各个角度拍摄许多液滴的照片,而无需进行校准。然后根据需要通过创建3D模型来提取有关接触角的信息。
DropSnake提供的精度为0.001度,所以甚至0.01也可以。
答案 0 :(得分:1)
恐怕液滴的边缘附近没有功能可锁定,因此立体镜是毫无疑问的。这意味着您仅需使用相机垂直面对液滴的单张图像,如下所示:
您还应该在地板上放置一些标记,或者将相机放置在距液滴已知的距离处以减轻这种情况。所以现在该怎么办:
提取液滴2D边缘像素
与图像中的红色或蓝色点完全相同。因此,只需提取所有边缘点并理想地按角度对它们进行排序,以便它们形成折线轮廓...如果相机视图垂直于我们的墨滴,则轮廓将平行于相机焦平面,因此其所有点都在相同的垂直距离处...对于仅从单个图像转换为3D至关重要……
相对于相机将轮廓转换为3D
这是简单的数学运算,因此,如果您查看上面的图像,则左侧是顶视图,而右侧是捕获的图像。让我们考虑捕获的图像中的2D洋红色点(x,y)
。假设3D坐标系,其中点(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
创建网格
由于液滴是对称的,仅使用轮廓的一半,并简单地围绕液滴中心轴旋转3D轮廓,然后将生成的点重新排序为形成3D液滴表面的某些网格拓扑。或仅计算每个轮廓点到轴的垂直距离,并将其用作参数圆方程的半径,然后将每个y
切片的网格作为一组圆计算
精度取决于相机的视野,分辨率和至墨滴的距离。因此,如果还不够,您可以: