我目前正在实施一种有效的方法来分割 3D CT 图像上的器官。我使用一种算法 (SLIC) 在我的 CT 3D 矩阵的每个切片上生成超像素。该过程类似于 k-means 算法,尽管我们不需要为每个像素访问整个图像。然后我基于超像素构建一个图:每个超像素是图中的一个节点,如果两个节点包含 4 个相邻的像素,则它们是连接的。两个节点之间的边的权重是它们的色差:
然后我尝试实现一种方法,允许用户单击超像素并将其标记为前景或背景,启动扩散算法以在两个标签之间划分 3D 图。我使用了IFT 算法 但是它的性能不如我想要的那样好:有时分配标签或纠正错误推断的标签会导致算法选择不正确的超像素。
我使用的步骤:
- 将我的矩阵转换为 8 位灰度(0 到 255 值之间)。
- 值不在 low_value 和 high_value 之间的每个像素都设置为 0(黑色)。
- 我进行直方图均衡以增加剩余值的对比度(从而试图实现更好的超像素边界)。
- 将模糊内核应用于我的矩阵。
- 计算每个切片的超像素。
- 创建相应的图并在它们之间创建边。
- 用户点击前景标签(每个超像素都设置为前景)。
- 单击背景标签可以将一些超像素设置为背景。
我有时会取得相当令人满意的结果。但是一些点击可能会完全破坏正确的图形标签,即使它们应该有效。我在下面的imgur 相册中放了一个小插图示例。
所以,我的担忧和问题是:
- IFT 算法适用于 3D 吗?我不明白为什么不这样做,但我的示例表明可能存在标签泄漏通过前一个/下一个切片。
- 什么样的预处理步骤可以改善扩散。
- 我考虑过使用 dijkstra 算法来确定哪个种子更接近某个超像素。它的效果不太好:它可以通过正确的颜色距离功能实现我想要的吗?
- 你有什么建议或文章可以帮助我吗?
谢谢,对不起,如果我不清楚,英语不是我的第一语言。