Hello every:
When I created a Markups ROI default, then I want to change the line thickness of ROI.
And according to the toolbar, I find the “Line thickness” option to achieve the goal.
Line thickness supply two method: absolute or ratio.
But when I tried two mode, none of modes worked.
Even though I change the thickness to 99.9900mm (Maximum values) in absoulte mode; or change the ratio to 100%, not any changed appear.
Why the line thickness adjustment not worked, and How I can achieve my goal.
Any advice will be appreciate!
And thanks to @lassoan in advance, expect your advice.
lassoan
(Andras Lasso)
October 13, 2022, 4:38pm
2
Line thickness of plane and ROI markups is not editable. Please submit a feature request at Issues · Slicer/Slicer · GitHub and we’ll implement this, probably within the next few months. If it is more urgent then you may consider adding this feature yourself (porting it over from the line markup). We can help you getting started.
Line Thickness of ROI Markups was something I mentioned at
opened 12:33AM - 25 Jul 20 UTC
type:enhancement
Annotation ROI nodes have many limitations. We need complete rework, based on ma… rkups infrastructure.
## Describe the solution you'd like
Have a new vtkMRMLMarkupsROINode, similar to vtkMRMLAnnotationROINode but with these additional features:
- [x] can be rotated
- [x] can be transformed (#1636)
- [x] has label
- [x] its color can be set
- [x] has inside-out mode (https://github.com/Slicer/Slicer/issues/1596)
Additional specific requests:
High priority:
- [x] Storage: use a single "orientation" matrix for storing orientation (instead of separate xAxis, yAxis, zAxis"), as it is more consistent with how we usually manage orientation
- [x] Storage: "sideLenghts" is very clear definition for a box, but not so good if we generalize the ROI (e.g., to ellipsoid); "diameter" or "size" could be better, as they are probably still clear enough and applicable to more shapes than just a box
- [x] Storage: "origin" is consistent with how we represent a coordinate system, but in case of a ROI, it may be more informative to have the "center" displayed in the file (if users create a file manually or from an external software, it could be more intuitive if they specify the center); "center" is also a bit more clear than "origin" (it may not be clear for everyone that origin is in a corner)
- [x] Storage: it would be better to display ROI properties (origin, size, etc.) near the beginning (before control points, measurments, display sections), because these files will be directly viewed and edited by users, so we should always start with the most important information
- [x] Make filling 20% opacity by default (and set it to 0% when used as volume rendering clipping ROI)
- [x] Translation/rotation handles are too small in 3D (about half the size compared to slice views)
- [x] When a ROI is already the active widget and user clicks place mode again then a new widget should be created (now it resets the current widget). At least until we improve the widget toolbar (we should have separate options for editing selected segmentation or create a new one).
- [x] When the ROI is in bounding box mode and has many control points and then you switch to box mode then the ROI seems to remain in bounding box mode.
- [x] We need outline (wireframe) display in 3D view (for example, for volume rendering clipping that would be a good representation)
- [x] After placing a ROI (at least when it is done, interactively, initiated via the GUI) then make the interaction handles displayed by default, because now after you place the ROI it is very hard to adjust it.
- [x] Make right-click menu work on all interaction handle points
- [x] Make right-click work on the outline (but maybe on the filled area as well, if it is >0%) so that interaction handles can be activated/deactivated in a viewer (it can be hard to find a ROI node in the Data module)
- [x] Add "Interaction handles visibility" option to eye icon right-click menu in subject hierarchy tree (probably for all markups)
Medium priority:
- [x] Cannot unzoom the slice view using right-click-and-drag when the ROI fills the slice view. Maybe the ROI should not respond to right-click inside the ROI, only at the boundary.
- [x] By default, left-click on a handle should jump slice views to that position (the same way as control points; configurable with event translations) (https://github.com/Slicer/Slicer/pull/6153)
- [x] Make the interaction arrows a bit more subtle. ROIs can be quite small and those arrows can be relatively very large. Maybe make it possible to only show the sphere handles and not the arrows.
- See task below ~~Prevent the arrows crossing the ROI boundary: it is a bit confusing that when the ROI is small then the interaction arrows cross the interaction handles on the sides. A possible solution could be to shorten the arrows for small ROIs so that its maximum size would be capped at 50-70% of the ROI box radius (it would be just shortened when the ROI is small, but it would not grow longer than the current size).~~
- [x] Add separate scale parameter for interaction handles.
- [x] Bounds of the ROI should be the bounds of the ROI box (currently bounds has zero extent along all 3 axes if ROI type is box; if it is bounding box then it has some extent, but it does not include the corners of the box, so it is quite confusing).
- [x] ROI center is not always visible in slice views. This makes it difficult to translate the entire ROI and it would be better to see the ROI property (label, measurements), too. (https://github.com/Slicer/Slicer/pull/6173)
Low priority:
- [x] Make Get/SetXYZ more consistent with the Annotation ROI node: in annotation ROI node these values are not affected by the parent transform node, so they are in the node's coordinate system, and not in world. RadiusXYZ in markups ROI node is not affected by parent transform node (good), but XYZ value in markups ROI node _is_ affected by parent transform node (not consistent with annotation ROI node).
- [x] Fix volume measurement of transformed ROI: applying a transform with diag(2.0, 2.0, 2.0, 1.0) makes the ROI appear bugger but its volume remains the same. Need to update the measurement to compute true volume. It would be useful to add a GetSizeWorld() method.
- [ ] If the ROI is transformed using a rotation transform then ROI size adjustment sliders (Markups module / ROI settings / ... Range sliders) change all the bounds of the ROI. The sliders should probably show and change size in the local coordinate system (without any potential scaling by the parent transform). In the future there might be a "Transformed" flag (similarly to how control point coordinates can be displayed with/without the parent transform applied), but we don't need this dual mode for now.
- [x] Add a flag to enable/disable rotation
- [x] It is odd that there are no control points at all in box mode. Could we store at least the center as a control point?
- [ ] If a bounding box type ROI is created and two points are placed then the ROI is not filled (even though it has 0 thickness, it should be filled)
- [x] When moving the mouse over an interaction handle, the mouse cursor and handle color alternates between hand and arrow and selected/unselected color. It always ends up being correct but the flickering is distracting.
- [ ] Interaction is very slow in debug mode. It seems to be due to plane clipping. It couldbe nicer if we could use one clipping filter because this filter has huge overhead when clipping very simple shapes. It could be also faster to use vtkPlaneCutter.
- [ ] When interacting with the ROI in one-up 3D view, the slice representation is still being updated (vtkSlicerROIRepresentation2D::UpdateFromMRML is called and it runs this->ROIWorldToSliceTransformFilter->Update(), which takes a long time)
- [x] It would be probably better if all interaction handles disappear when the ROI is out of the slice plane (now the arrows are always displayed)
- [x] Add a shortcut (Alt+Left-click-and-drag) for symmetric adjustment of handle. This allows making the ROI box thinner without changing its position.
- [ ] Can you add an ellipsoid mode? It would help identifying any design issues that may come up in the future when we want to generalize the concept (e.g., create custom ROI widgets). Handles could be probably the same as now.
- [x] Show node name in views (it could be similar how I enabled label display recently for curves, but in this case the label should be displayed in the center)
- [x] Add measurement plugins (volume, diagonal, maybe xyz diameter)
- [x] When only rotation handles are visible then the arc just hangs in the air. It would be nice to somehow make it connected to the center.
![image](https://user-images.githubusercontent.com/307929/110144045-e5002580-7da5-11eb-8e66-f0faa6496a14.png)
To discuss:
- [x] Would it be possible to add corner handles to slice views? (just for consistency with 3D views)
- [ ] How does the ROI work with non-linear transforms? It should probably work similarly to angle and line markup, so that it would not be warped by the transforms, only the control points/handles would be transformed and they would be connected with straight lines.
- [ ] We could consider initializing the ROI with single-slice thickness. This would facilitate using it for generating 2D-like ROIs (useful for generating training data for object detection AI applications). At the same time, it is easier to adjust bounds of a cubic ROI than expanding of a flat plane.
1 Like
Thank you for your reply.
The markupsROI I created is to display the range of lung nodule. And the doctor said the thickness of ROI lines is too thick to cover the edge of nodule.
So I want to adjust the ROI line more thiner, and this requirement is very urgent.
Could you show me how to edit the source code to achieve this target.
Expect to your reply.
lassoan
(Andras Lasso)
October 14, 2022, 1:12pm
5
Immediate solution/workaround: Line thickness is currently set in pixel units, so the line will be thinner if you set your screen to higher resolution or you can make the line relatively thinner by making the view larger. You can also change outline opacity to make sure the line does not occlude any important details.
The first step is to build Slicer, as explained in the build instructions . If you are done (or run into issues) then let us know and we can proceed to discuss how to add line thickness adjustment from the Line markup widget to the ROI markup widget.
Hi,
Is it possible to increase the size of glyph. The handles that are used to drag the ROI box?
Please advise
thanks
lassoan
(Andras Lasso)
October 15, 2022, 2:26pm
7
Yes, you can change size of interaction handles in Markups module: Display / Interaction handles / Size.