niivue / niivue

a WebGL2 based medical image viewer. Supports over 30 formats of volumes and meshes.
https://niivue.github.io/niivue/
BSD 2-Clause "Simplified" License
269 stars 66 forks source link

implement 2D and 3D grow-cut #147

Closed hanayik closed 2 years ago

hanayik commented 3 years ago

@pieper's webGL grow-cut implementation is a powerful, interactive segmentation tool in 2D. The 3D variant of the algorithm is already implemented in Slicer as well. Grow-cut is beneficial for medical image segmentation in that multiple (greater than 2) classes can be used to segment pathologies in real-time, rather than the traditional foreground/background 2 class segmentation methods like graph-cut.

Adding grow-cut segmentation to NiiVue could be a valuable feature for many researchers. We can implement it using WebGL 2.0 which is now supported by the latest versions of all major browsers. The algorithm could be implemented in other viewing software such as @neurolabusc's MRIcroGL, and @pauldmccarthy's FSLeyes.

Implementing this feature in NiiVue would build on @cdrake's latest PR #146.

We would also need to add a "save" method to the NVImage class so that we can write out the image segmentation results.

@pieper, this would be a great collaboration opportunity that would provide a benefit to users of the neuroimaging community that use NiiVue in web reports, and cloud based analysis pipelines.

hanayik commented 3 years ago

When adding this feature to NiiVue, it might also be nice to add in support for section 2.2 of this paper in order to control boundary smoothness of the resulting segmentation.

pieper commented 3 years ago

Yes, I would love to collaborate on this. Note I also have a 3D version as a webgl shader here: https://github.com/pieper/step/blob/master/src/growcut.js

dazzag24 commented 3 years ago

Plus one for this feature.