Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support adjusting the Thick Slab Reconstruction (TSR) thickness directly from slice views #7083

Closed
jcfr opened this issue Jul 11, 2023 · 8 comments · Fixed by #7093
Closed
Assignees
Labels
Type: Enhancement Improvement to functionality
Milestone

Comments

@jcfr
Copy link
Member

jcfr commented Jul 11, 2023

Is your feature request related to a problem? Please describe.

Support adjusting slab reconstruction thickness directly from the slice views.

Describe the solution you'd like

  • Represent slab thickness in 2D view using a center line representing the slice, and two slab marker lines
    • Distance between the two lines represents the current slab thickness
    • This could be done in a new displayable manager called vtkMRMLSlabReconstructionDisplayableManager
  • Add support for adjusting slab thickness by updating the location of any of the slab marker lines.
    • By symmetry, updating the position of one marker line will lead to an update update the position of the other ones.
    • To separate concern, a new "Slicer VTK widget" may have to be integrated.

Describe alternatives you've considered

NA

Additional context

Originally posted by @jamesobutler in #6965 (comment)

For generating Volume Projections for users without scripting our group created the following module based implementation (not currently public):

We utilize a module that upon pressing a checkable "View Projection" button, a vtkMRMLMarkupsROI appears for defining the region for generating the MIP. The thickness used is therefore set by the size of the Markups ROI. By default the ROI is set to the full bounds of the volume. In the example below the projection is shown in the green slice (coronal) viewer. It will automatically updated when the ROI is manipulated in the various slice viewers. We define what volume node to act upon in a different area, but you could imagine specifying a input volume node as well.

View Projection Off View Projection On (MIP shown in green slice)
image image
Volume Projection Module Projection Types Axis of Projection
image image image

cc: @lassoan

@jcfr jcfr added the Type: Enhancement Improvement to functionality label Jul 11, 2023
@jcfr jcfr added this to the Slicer 5.5 milestone Jul 11, 2023
@jcfr jcfr changed the title Support adjusting the slab thickness directly from slice views Support adjusting the Thick Slab Reconstruction (TSR) thickness directly from slice views Jul 17, 2023
@tao558
Copy link
Contributor

tao558 commented Aug 10, 2023

A question about how we should display the thick slab lines when we are using different slice intersection options.

When we are viewing the slice intersection lines in interactive mode without any kind of thick slab reconstruction lines, you can view either the full lines, or skip the line crossings. In the "skip line crossings" mode, a circle around the intersection point of the two lines erodes the line segments. I've attached two example images (full_lines.png and skip_crossings.png) with this option on / off (note the checked option in the intersection widget)

How should we handle this option when the thick slab reconstruction is enabled? Should those lines also be eroded, or should the full lines also be displayed? I attached two additional images (full_lines_with_tsr.png and skip_lines_with_tsr.png) for how the feature currently works with / without "skip line crossings" enabled. Currently the full line is always displayed

Without TSR:

full_lines skip_crossings
full_lines skip_crossings

With TSR:

full_lines + TSR skip_crossings + TSR
full_lines_with_tsr skip_lines_with_tsr

@pieper
Copy link
Member

pieper commented Aug 10, 2023

The current behavior doesn't look too bad to me.

@jamesobutler
Copy link
Contributor

jamesobutler commented Aug 10, 2023

Is the center (non-slab) intersection necessary when viewing the slab? If not then just having the 2 yellow lines seems to make more sense then the 3 yellow lines.

Otherwise the "thick slab" lines being some X number of pixels thicker than the regular slice intersection current thickness could help identify them as being something different.

@jcfr
Copy link
Member Author

jcfr commented Aug 10, 2023

having the 2 yellow lines seems to make more sense then the 3 yellow lines.

Until we can have dashed line working, that seems like a sensible path forward.

@tao558
Copy link
Contributor

tao558 commented Aug 10, 2023

Thanks all for the responses.

having the 2 yellow lines seems to make more sense then the 3 yellow lines.

If I'm understanding correctly, the user wouldn't be able to adjust the slab thickness and interactively move the slice at the same time. They'd need to remove the TSR, move the slice, then re-enable the TSR. This might make sense anyway, since when I add interactivity, the handles for moving the slice / the handles for adjusting the thick slab lines might overlap a bit.

If you don't mind this toggling on / off, I can remove the center line when TSR is enabled. Just wanted to point this out!

@jcfr
Copy link
Member Author

jcfr commented Aug 10, 2023

having the 2 yellow lines seems to make more sense then the 3 yellow lines.

the user wouldn't be able to adjust the slab thickness and interactively move the slice at the same time.

What about updating the following:

to include:

  • Interaction

That way the user decide if both slice intersection and TSR should be visible and interactive.

This means would have to introduce an additional property to toggle TSR interactivity.

@tao558
Copy link
Contributor

tao558 commented Aug 11, 2023

That way the user decide if both slice intersection and TSR should be visible and interactive.

That would work for the "interactive" slice view lines, but we also display the lines when the "interactive" option is unchecked in the slice view widget.

Another option is to do what @jamesobutler was saying (erase the middle line if the slab reconstruction is on), and when the user moves either of those two lines, the behavior is the same as interacting with the previously shown middle line (just changes the slice). But if the user checks the interactive option for the TSR that @jcfr proposed, interacting with those two lines changes the thickness of the thick slab.

Whatever you all prefer!

@tao558
Copy link
Contributor

tao558 commented Aug 11, 2023

@jcfr and I just got off a call discussing this.

In short, the TSR options and the slice intersection options are going to be totally independent / in separate UI elements. All TSR options are going to be in the dropdown menu for each slice view (see below), instead of in the slice intersection widget. I'll add another option

  • Interaction

to the menu

This includes options for toggling the display and interactivity. The slice intersection widget will only contain options for the slice intersection interactivity / display.

Thanks everyone for the input.

@jcfr jcfr linked a pull request Oct 18, 2023 that will close this issue
@jcfr jcfr closed this as completed Nov 15, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Type: Enhancement Improvement to functionality
Development

Successfully merging a pull request may close this issue.

5 participants