You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: mevislab.github.io/content/tutorials/dataobjects/contours/contourexample6.md
+9-9Lines changed: 9 additions & 9 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -46,8 +46,8 @@ We now want to customize the details to be shown for each distance line. Open th
46
46
Enter the following to the panel of the `CSOLabelRenderer` module:
47
47
{{< highlight filename="CSOLabelRenderer" >}}
48
48
```Python
49
-
labelString =f'Length: {cso.getLength()} mm'
50
-
labelName =f'ID: {cso.getId()}'
49
+
labelString =f"Length: {cso.getLength()} mm"
50
+
labelName =f"ID: {cso.getId()}"
51
51
deviceOffsetX =0
52
52
deviceOffsetY =0
53
53
```
@@ -60,15 +60,15 @@ We are setting the *labelName* to a static text showing the type of the CSO and
60
60
You can also round the length by using:
61
61
{{< highlight filename="CSOLabelRenderer" >}}
62
62
```Python
63
-
labelString =f'Length: {cso.getLength():.2f} mm'
63
+
labelString =f"Length: {cso.getLength():.2f} mm"
64
64
```
65
65
{{</highlight>}}
66
66
67
67
In order to see all possible parameters of a CSO, add a `CSOInfo` module to your network and connect it to the `CSOManager`. The geometric information of the selected CSO from `CSOManager` can be seen there.
For labels shown on gray value images, it makes sense to add a shadow. Open the panel of the `SoCSOVisualizationSettings` module and on tab *Misc* check the option *Should render shadow*. This increases the readability of your labels.
71
+
For labels shown on grayscale images, it makes sense to add a shadow. Open the panel of the `SoCSOVisualizationSettings` module and on tab *Misc* check the option *Should render shadow*. This increases the readability of your labels.
You can design the annotation overlay as you like in the tab *User*. We decided to only display the minimal (the minimum minimum) and maximal (the maximum minimum) distance between both WEMs.
57
+
You can design the annotation overlay as you like in the tab *User*. We decided to only display the minimal and maximal distance between both WEMs.
58
+
59
+
{{<alertclass="info"caption="Extra Infos">}}
60
+
The `WEMSurfaceDistance` module measures minimal distances only; when talking about the maximal distance, we mean the maximal minimal distance: this is the maximum of all minimum distances.
Copy file name to clipboardExpand all lines: mevislab.github.io/content/tutorials/openinventor/posteffectsinopeninventor.md
+3-3Lines changed: 3 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -18,7 +18,7 @@ menu:
18
18
## Introduction
19
19
Up to this point, we practiced constructing Open Inventor scenes and placed three-dimensional Open Inventor objects of different colors and shapes within them.
20
20
21
-
In this tutorial, we will go over the steps to add shadows to our 3D objects, make them glow, and vary their opacity to make them transparent. We will also incorporate WEMs from multiframe DICOMs and render them as scene objects to see how different post effects can be used on them.
21
+
In this tutorial, we will go over the steps to add shadows to our 3D objects, make them glow, and vary their opacity to make them transparent. We will also incorporate WEMs from multi-frame DICOMs and render them as scene objects to see how different post effects can be used on them.
22
22
23
23
## Steps to Follow
24
24
@@ -30,7 +30,7 @@ To incorporate DICOMs into your Open Inventor Scene, they have to be rendered as
30
30
We don't recommend using single-frame DICOMs for this example as a certain depth is required to interact with the scene objects as intended. Also make sure that the pixel data of the DICOM file you choose contains all slices of the study, as it might be difficult to arrange scene objects of individual slices to resemble the originally captured study.
31
31
{{</alert>}}
32
32
33
-

33
+

34
34
35
35
{{<alertclass="info"caption="Info">}}
36
36
Consider adding a `View2D` and an `Info` module to your `LocalImage` module's output connector to be able to compare the rendered object with the original image and adapt the isovalues to minimize noise.
@@ -79,7 +79,7 @@ To put a soft glow on the geometrical scene objects, the module `SoPostEffectGlo
Copy file name to clipboardExpand all lines: mevislab.github.io/content/tutorials/summary/summary4.md
+13-11Lines changed: 13 additions & 11 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -141,7 +141,7 @@ def reset():
141
141
142
142
For a reset, we just touch the *resetApplication* field of our macro module `TutorialSummary`.
143
143
144
-
#### Requirement 1: The Application Shall be Able to Load DICOM Data
144
+
#### Requirement 1: The application shall be able to load DICOM data
145
145
The first requirement we want to test is the possibility to load DICOM data. After setting the file to be loaded, the output provides a valid image. Resetting the application shall unload the image.
146
146
147
147
{{< highlight filename="<TEST_CASE_NAME>.py" >}}
@@ -159,8 +159,9 @@ def TEST_LoadDICOMData():
159
159
```
160
160
{{</highlight>}}
161
161
162
-
#### Requirement 4: The 2D Viewer Shall Provide the Possibility to Segment Parts of the Image Based on a RegionGrowing Algorithm
163
-
##### Requirement 4.1: It Shall be Possible to Click Into the Image for Defining a Marker Position for Starting the RegionGrowing
162
+
#### Requirement 4: The 2D viewer shall provide the possibility to segment parts of the image based on a region growing algorithm
163
+
164
+
##### Requirement 4.1: It shall be possible to click into the image for defining a marker position for starting the region growing algorithm
164
165
This test case shall make sure the `RegionGrowing` module calculates the total volume and number of voxels to be larger than 0 in the case a marker has been set. Without loading an image or after resetting the application, the values shall be 0.
165
166
166
167
{{< highlight filename="<TEST_CASE_NAME>.py" >}}
@@ -192,7 +193,7 @@ def TEST_RegionGrowing():
192
193
```
193
194
{{</highlight>}}
194
195
195
-
##### Requirement 4.2: It Shall be Possible to Define a Threshold for the RegionGrowing Algorithm
196
+
##### Requirement 4.2: It shall be possible to define a threshold for the region growing algorithm
196
197
For the threshold of the region growing it makes sense to extend the previous test case instead of writing a new one. We already have a segmentation based on the default threshold value and can just change the threshold and compare the resulting volumes.
197
198
198
199
Increasing the threshold shall result in larger volumes, decreasing shall result in smaller values.
@@ -240,8 +241,9 @@ def TEST_RegionGrowing():
240
241
```
241
242
{{</highlight>}}
242
243
243
-
#### Requirement 5: The 2D Viewer Shall Display the Segmentation Results as a Semitransparent Overlay
244
-
##### Requirement 5.1: It Shall be Possible to Define the Color of the Overlay
244
+
#### Requirement 5: The 2D viewer shall display the segmentation results as a semitransparent overlay
245
+
246
+
##### Requirement 5.1: It shall be possible to define the color of the overlay
245
247
The requirement 5 cannot be tested automatically. Transparencies should be tested by a human being.
246
248
247
249
Nevertheless, we can write an automated test checking the possibility to define the color of the overlay and the 3D segmentation.
@@ -279,13 +281,13 @@ Finally, an image comparison is done for the 3D rendering using the old and the
279
281
280
282
The call *MLAB.processInventorQueue()* is sometimes necessary if an Open Inventor scene changed via Python scripting, because the viewers might not update immediately after changing the field. MeVisLab is now forced to process the queue in Open Inventor and to update the renderings.
281
283
282
-
#### Requirement 8: The Total Volume of the Segmented Area Shall be Calculated and Shown (in ml)
284
+
#### Requirement 8: The total volume of the segmented volume shall be calculated and shown (in ml)
283
285
For the correctness of the volume calculation, we added the `CalculateVolume` module to our test network. The volume given by our macro is compared to the volume of the segmentation from output *outSegmentationMask* calculated by the `CalculateVolume` module.
284
286
285
287
{{< highlight filename="<TEST_CASE_NAME>.py" >}}
286
288
```Python
287
289
...
288
-
# Requirement 8: The total volume of the segmented area shall be calculated and shown (in ml)
290
+
# Requirement 8: The total volume of the segmented volume shall be calculated and shown (in ml)
289
291
defTEST_VolumeCalculation():
290
292
# Reset and expect all volumes and number of voxels to be 0
#### Requirement 9: It Shall be Possible to Toggle the Visible 3D Objects
317
+
#### Requirement 9: It shall be possible to toggle the visible 3D objects
316
318
317
-
##### Requirement 9.1: Original Data
319
+
##### Requirement 9.1: Original data
318
320
319
-
##### Requirement 9.2: Segmentation Results
321
+
##### Requirement 9.2: Segmentation results
320
322
321
323
##### Requirement 9.3: All
322
324
In the end, we want to develop a testcase for the 3D toggling of the view. We cannot exactly test if the rendering is correct; therefore, we will check if the 3D rendering image changes when toggling the 3D view. We will use the modules `OffscreenRenderer`, `ImageCompare`, and `SoCameraInteraction`, which we added to our test network.
Copy file name to clipboardExpand all lines: mevislab.github.io/content/tutorials/visualization/visualizationexample1.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -20,7 +20,7 @@ In this example we like to use the module `SynchroView2D` to be able to inspect
20
20
21
21
The module `SynchroView2D` provides two 2D viewers that are synchronized.
22
22
23
-
As in tutorial [Chapter 1 - Basic Mechanics of MeVisLab](tutorials/basicmechanisms/#TutorialParameterConnection), the processed and the unprocessed image can be displayed simultaneously. Scrolling through one image automatically changes the slices of both viewers, so slices with the same slice number are shown in both images.
23
+
As in the tutorial [Chapter 1 - Basic Mechanics of MeVisLab](tutorials/basicmechanisms/#TutorialParameterConnection), the processed and the unprocessed image can be displayed simultaneously. Scrolling through one image automatically changes the slices of both viewers, so slices with the same slice number are shown in both images.
24
24
25
25
The difference is that we are now using an already existing module named `SynchroView2D`.
0 commit comments