免责声明:这可能会很慢,但由于没有建议其他答案,所以你去吧。
由于您的问题并未表明这一点,我假设您在谈论 2D 图像,但以下方法也可以扩展到 3D。这就是我的做法:
- 创建具有零填充像素值的空白图像
- 创建磁盘/球体ShapedNeighborhoodIterator的多个实例,每个实例在空白图像上具有不同的半径(从血管宽度直方图中选择最常见的半径)。
- 访问二进制骨架图像中的每个像素。当您遇到白色(血管骨架)像素时,请回忆该像素处的血管半径。
- 如果您已经有该半径值的 ShapedNeighborhoodIterator,请将迭代器带到空白图像中的像素位置,并填充以该像素为中心的白色像素圆盘/球体。如果您没有该半径值的 ShapedNeighborhoodIterator,请创建一个并执行相同的操作。
完成对骨架化图像的迭代后,您将在另一张图像中拥有一棵重建的树。请注意,第 2 步是可选的,但会帮助您实现更快的计算。