hoa-2 / slicerneurosegmentation Goto Github PK
View Code? Open in Web Editor NEWNeuroSegmentation extension for 3D Slicer
License: BSD 3-Clause "New" or "Revised" License
NeuroSegmentation extension for 3D Slicer
License: BSD 3-Clause "New" or "Revised" License
Slicer currently contains many features that are unnecessary for the segmentation process.
The interface can be simplified by creating a Slicelet
Start with QuickSegment. If additional features are needed, then another Slicelet can be developed using QuckSegment as a starting point.
Slicer segmentation manual: Segmentation_Slicer_v15.pdf
Subtasks:
Models from FreeSurfer exist in a coordinate system that is dependent on the originating volume.
Generally the origin of the model coordinate system exists at the center of the mri volume.
A module to import FreeSurfer data in the correct coordinate system could be developed to allow users to select data from FreeSurfer and import it correctly. Users would choose a folder containing saved freesurfer data, and then select the desired files to import.
Relevant links:
https://surfer.nmr.mgh.harvard.edu/fswiki/CoordinateSystems
http://www.grahamwideman.com/gw/brain/fs/coords/fscoords.htm
http://surfer.nmr.mgh.harvard.edu/fswiki/FsAnat-to-NativeAnat
When there are hundreds of drawn segments, the performance of various operations (slice browsing, editing, saving/loading, etc) can become increasingly slow.
To support a large number of simultaneously displayed segments, we need to find an approach that can support these types of segmentations.
Within the second monitor view, there are 4 views (one "Main" and 3 "Secondary" views).
Desired shortcuts:
The list of segments in the module should be automatically populated based on an editable list of segmentations.
User should be able to easily change the default list of segments.
To ensure that data is not lost, we need to create a module that can automatically save the scene.
Module will be added to SlicerSandbox.
Subtask of #4
There is currently no widget in Slicer for placing and modifying an arbitrary plane.
The new plane representation will be implemented within the Markups module.
Current file IO uses the default Slicer dialog for saving/loading.
Case management could be made simpler by adding options to the NeuroSeg module to manage the cases at a higher level with a predefined file structure (i.e. BIDS: https://bids-specification.readthedocs.io/en/stable/).
Startup:
Save:
Other:
By clicking and dragging on the image, the user should be able to create a threshold based on the metrics of the ROI contained within the specified region.
The histogram of the selected region should be contained in the segment editor panel, and users should be able to click and drag on the histogram to further isloate threshold values of interest.
Code here: https://github.com/Sunderlandkyl/Slicer/tree/threshold_histogram
Minutes from meeting:
PNL/Queens Collaboration Skype Call – 11:00am
PNL: Sylvain Bouix (SB), Jarrett Rushmore (JR)
Queens: Kyle (kyle.sunderland (KS)) and Andraas Lasso (AL)
Agenda for collaboration (long-term)
Neurosegmentation Module
Tablet – needs to upgrade build
Histogram
Surface Draw
Cortical Parcellation
Topic 1: Surface drawing is the next project.
-specify weights via euclidian minimization between nodes (start here), perhaps with control points
-Similar to what Nikos Makris and Rudolf Pinard worked together to do around a decade ago (probably in C)
-shortest path algorithm is already in in surface VTK
AL – what happens after lines are drawn?
Use lines to cut up surface, needs careful design
Probably provide query using txt file containing rules for landmarks/boundaries/rules; algorithm uses text file input to chop up cortex
Shouldn’t be hard coded, since rules will change
TO DO: Provide example text file (from WMQL) for AL/KS
TOPIC #2: Interoperability between FreeSurfer and Slicer
Free view export is not perfect, there are some transforms.
TO DO: Send examples to Queens
AL: Slicer has importers, may have to update
TOPIC #3: Multiple Segments
Working on improving performance with multiple (I.e., 100s) segments
TOPIC #4: Formats
Segmentation output will ultimately be a bunch of lines, segments, etc
-what is the underlying segment file?
AL: Could store some as arbitrary metadata (e.g., 4D .nrrd)
Could store points and lines in a volume file as custom metadata
If there is a specific format we need, could do that
Would be nice to be able to ‘Save’ within a scene as well as to Export (e.g., to a FreeSurfer specific file)
Next Skype meeting October 10th, 10:30
To improve the ergonomics and speed of the segmentation process, it is important to develop and test segmentation interactions using touchscreen and pen.
These mostly completed, but they need to be integrated into VTK/Slicer.
In the course of using the interactions, we may also come up with additional ideas for improvements.
The right-hand panel in the NeuroSeg module currently contains a terminology widget that is currently a placeholder. It should be updated to have a widget providing background info and instructions for the selected segment.
If this ends up being too cramped (need to test), we may have to move the widget to some other location.
From #2 (comment):
We'd also like to have functionality so that when you add on it, a screen (like a help screen) could come up with links to definitions, movies, papers, instructions on how to segment that thing, etc. We would link this to Mike Halle's system as well so we could get the wiki for that structure.
Implement surface assisted cortical parcellation in 3D Slicer.
Surface assisted cortical parcellation manual
Subtasks:
This page is linked from the main readme but the image links are broken:
https://github.com/HOA-2/SlicerNeuroSegmentation/blob/main/docs/General%20Segmentation.md
Spun off from: #2
If possible, it would be great to get a timer so we can see how long it takes for each segment. Is that possible? We've been using phones to time.
Likely we would track the amount of time that a segmentation spends in the "In Progress" state during segmentation. Only time when the segment is selected in the editor.
The current implementation for the multi-monitor widget works, but is not very future-proof.
A better solution would be to support multi-monitor layouts directly in 3D slicer.
Possible approaches:
Subtask of #4
Given the vertices closest to markup A and B, find the path betwen the two through the sulcus.
Can potentially use:
https://vtk.org/doc/nightly/html/classvtkDijkstraGraphGeodesicPath.html
If the surface mesh is not dense enough to provide a good curve using the algorithm, we can subdivide the mesh along the predicted path to generate a more accurate curve.
Subtask of #4
Based on the tracing of the sulci as well as the user defined planes, perform the cortical segmentation of the space between the white/grey matter border and the surface of the cortex.
As discussed here, FreeSurfer data export and/or import in Slicer is not fully correct. Need to provide example files and description what is not correct and how can be fixed.
As discussed here
Tags:
Search bar:
Quick filter buttons:
New state column in segments table:
To facilitate this, it will be necessary to convert the segments table view from a statically populated table to a model/view data structure.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.