0

I have a project to build a 3D model of the spinal roots in order to simulate the stimulation by an electrode. For the moment I've been handled two things, the extracted positions of the spinal roots (from the CT scans) and the selected segments out of the points (see both pictures down below). The data I'm provided is in 3D and all the segments are clearly distinct although it does not look like it on the figures below as it is zoomed out.

Points and segments extracted from the spinal cord CT scans: Points and segments extracted from the spinal cord CT scans.

Selected segments out of the points: Selected segments out of the points

I'm now trying to connect these segments so as to have the centrelines for all the spinal roots at the end. The segments are not classified, simply of different colors to differentiate them on the plot. The task is then about vertically connecting the segments that look to be part of the same root path. I've been reviewing the literature on how I could tackle that issue. As I'm still quite new to the field I don't have much intuition on what could work and what could not. I have two subtasks to solve here, connecting the lines and classifying the roots, and while connecting the segments after classification seems no big deal, classifying them seems decently harder. So I'm not sure in which order to proceed. Here are the few options I'm considering to deal with the task :

  • Use a Kalman filter to extract the vertical lines from the selected segments and the missing parts
  • Use of a Hough transform to detect vertical lines, by trying to express the spinal root segments in the parametric space and see how they cluster and see if anything can be inferred from there.
  • Apply some sort of SVM classification algorithm on the segments to classify them by roots. I could characterize each segment by its orientation and position, and classify them based on similarities in the parameters I'm selecting, and then connect the segments. Or use the endpoint position of each segment and connect it to one of the nearest neighbours if their orientation/position is matching.

I'm open to any suggestions, any piece of advice, or any other ideas on how to deal with the current problem.

Raphasse
  • 61
  • 5
  • 1
    This is not my area of expertise so please take this idea with a pinch of salt...For each 3D path, iterate through pairs of 2 vertices and take the difference: this vector should be overall direction of the path. Hopefully this will allow you to pick the point that is always the bottom of the path. Iterating through the points again, this time bottom towards the top (rough root direction) should be able to predict at least one more point (direction upwards). Hopefully some form of an extended Kalman filter can help predict more points heading towards the root... – George Profenza Mar 10 '21 at 13:29
  • 1
    I am very skeptical about the feasibility of this task if the final goal is3D reconstruction. The root segments are undistinguishable and finding correspondences on such distant views does not seem possible. Even working with small rotation angles would be difficult. I advise using 3D cameras. [Unless I am wrong and there *are* 3D data.] –  Mar 10 '21 at 13:30
  • ...with the root missing though it feels a bit like a guessing game and I hope the roots don't have some very weird twisted shapes where certain path may look like they're going in one direction for the majority of what you can "see" in your data but may end up in very different places in the areas where you can't "see" – George Profenza Mar 10 '21 at 13:31
  • I would also advise exporting the data to a 3D package (e.g. Blender, MeshLab, etc.) and try to manually connect a few paths to get a feel if the data you have is actually enough to get the job done and doesn't have too many ambiguities – George Profenza Mar 10 '21 at 13:33
  • @YvesDaoust I plotted the segments like this to give an insight on how the data looks like. It is a bit zoomed out here so it looks like they're not distinct. These are indeed 3D data, and every segment is clearly distinct from each other in space. – Raphasse Mar 10 '21 at 15:08
  • If you have regularly spaced horizontal slices, wouldn't it make sense to scan slice by slice and join the points in one slice to those in the next, using a nearest-neighbor rule (possibly modified with some extrapolation from the current and previous slices) ? –  Mar 10 '21 at 15:14
  • Are you able to show two successive cross sections overlapped with the intersection points in two different colors ? And three successive sections ? –  Mar 10 '21 at 15:17
  • @YvesDaoust that's not a bad idea to think in terms of horizontal slices, I'll think about it and try to plot some sections. And I'm going to try exporting the data to a 3D editing tool to see if it makes sense to manually link the segments. Thanks ! – Raphasse Mar 10 '21 at 15:26

0 Answers0