我有一个3D二进制图像。假设分辨率为dx,dy,dz
毫米。如何将图像上的欧几里得距离转换为以毫米为单位的距离。体素或像素到毫米的距离
Furhter,如果我使用行军立方体算法计算了一个iso-surface。生成表面网格。两个网格顶点之间的欧几里德距离 - 如何将其转换为mm?
我有一个3D二进制图像。假设分辨率为dx,dy,dz
毫米。如何将图像上的欧几里得距离转换为以毫米为单位的距离。体素或像素到毫米的距离
Furhter,如果我使用行军立方体算法计算了一个iso-surface。生成表面网格。两个网格顶点之间的欧几里德距离 - 如何将其转换为mm?
如果我正确地阅读你的问题,你有一些毫米的体素大小,这不一定是各向同性的(即体素不是常规的立方体)。
所以,如果每个像素的尺寸为dx * dy * dz
,你必须在位置(x1, y1, z1)
和(x2, y2, z2)
这两个体素,在你想找到毫米这两个点之间的欧几里得(直线)距离。
因此,首先将每个点获得空间位置(调用这些s1
和s2
)
s1(x,y,z) = (x1 * dx, y1 * dy, z1 * dz)
,并
s2(x,y,z) = (x2 * dx, y2 * dy, z2 * dz)
然后以毫米为单位的距离,d
,这些点之间是则长度v
,从s1
到s2
v(x,y,z) = (s2.x - s1.x, s2.y - s1.y, s2.z - s1.z)
距离d = sqrt(v.x^2 + v.y^2 + v.z^2)
毫米。
非常感谢(知道这非常有用),但我的问题更多的是以毫米为单位的表面距离。使用行进立方体算法从图像生成曲面。假定不再执行三角测量或平滑处理。 –
@dr_rk这是一个类似的问题,你首先必须在两个点之间寻找一条通过表面的路径(非平凡),你可以通过查看所需方向上的连续最近顶点来近似,然后按照所述方法累积距离以上。无论您是使用步进立方体还是其他算法生成网格都不相关。 –