在 Matlab 中,我重建了一个含有多种纤维的3D胶原网。结果我发现了所有纤维。我可以绘制每个光纤,它看起来像原始输入图像的镂空版本。我现在的目标是找到这些纤维之间的交叉点。 (图像的一小部分如下所示,以及我在Matlab中进行的重建)
我一直在思考应该遵循哪些步骤来实现这一目标,但是,我想有一种更容易和更优化的方式。这些是我提出的主要步骤:
- 计算所有纤维的厚度。这可以通过检查相同光纤的几个点与最近背景点(像素值= 0的点)之间的距离来完成。然后从所有距离中取出平均值,并将其作为该光纤的最终厚度值。
- 下。一旦我们知道了所有光纤的厚度,尝试通过将所有放置在距离相等(加上阈值)的点到光纤化纤维的每个点来计算每根光纤的表面。 / p>
- 最后。一旦我获得了每根光纤的外部网格点("皮肤点"),计算所有光纤网格之间的交点/点。
我从未在Matlab中使用网格,所以我不确定是否使用它们是为了这个目的。我甚至不知道它是否可能。提前感谢您的帮助。
原始图像(ImajeJ重建)
使用我的代码后我得到了什么(镂空版本)
答案 0 :(得分:1)
假设您将每个点表示为(x,y,z,val),其中x,y和z是空间坐标,val是一个位域,表示特定点所属的光纤。最初,所有点的val都是0。如果某些(x1,y1,z1)属于光纤-1,则设置val的LSB,使得该点为(x1,y1,z1,0x01):val为十六进制。如果某些(x2,y2,z2)属于光纤-2,那么(x2,y2,z2,0x02),同样根据它所属的光纤设置val的特定位。当你对所有点执行此操作时,它们的val字段将指示它们属于哪些光纤。因此,在val字段中设置了超过1位的所有点将为您提供相交的光纤。