Back to Projects List
Various data structures are available to represent segmentation results. Unfortunately none of them are optimal for storage, analysis, and real-time visualization at the same time, so a trade-off is typically made to choose one that is most suitable for the main purpose of the application.
PolySeg is a library for polymorph segmentation representation for medical image computing. PolySeg is integrated within the 3D Slicer open-source medical image analysis and visualization platform. Automatic conversion between various different segment representations (Contours, Ribbon, Surface, Binary Labelmap, Fractional Labelmap) is driven by a conversion graph.
As segmentation tools become available for the web browser through toolkits such as Cornerstone Tools and VTK.js, demand is increasing for the same type of polymorphic segmentation representation in web applications. The goal of this project is to understand how the functionality in PolySeg can be most easily exploited inside the browser.
itk-js
Docker image which is used for cross-compilation (via dockcross).Pull Request to PolySeg with the code: https://github.com/PerkLab/PolySeg/pull/4
pthread_attr_setscope
) breaking cross-compilation procedures in Emscripten. There is already an open ticket for enabling multithreading at itk-js so for now we just disabled it everywhere. The next step is to settle on the proper approach to disable pthread usage without having a fork of VTK. The built-in environment variable (CMAKE_USE_PTHREADS_INIT
) did not do the trick on third-party extensions such as vtkhdf5.BUILD_SHARED_LIBS:BOOL=ON
, then everything works normally but duplicate links show up when building the pipeline (symbol multiply defined!
).
If BUILD_SHARED_LIBS:BOOL=OFF
, certain VTK functions are not accessible within PolySeg for some reason (e.g. vtkImageStencil
, vtkImageAccumulate
). This is the key remaining blocker before this project could be considered a success.itk-js
. Much of the knowledge needed for this project was present in itk-js
already, but it was inside things like tests or source code.