Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 5 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,9 @@ This is the repository for the [MeVisLab Tutorials and Examples GitHub pages](ht
## Configuration

### Local Deployment
* Checkout the code
* Check out the code
* Install _extended_ hugo from the [Hugo Website](https://gohugo.io/)
* Install npm e.g. from [npmjs Website](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm)
* Change to the *mevislab.github.io* folder and run `npm install`
* Stay in this folder and run `hugo server -d public --baseURL //localhost/examples/` (the `/examples/` path is not needed,
but it helps to find problems that might appear on the published website)
* Open the given URL in your favorite browser
* Install npm, e.g., from [npmjs Website](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm)
* Change to mevislab.github.io folder and run `npm install`
* Stay in this folder and run `hugo server -d public --baseURL //localhost/examples/` (The `/examples/` path is locally not absolute necessary but it helps to find problems that might appear on the production website.)
* Open the given URL in your favorite browser
1 change: 1 addition & 0 deletions mevislab.github.io/content/about/about.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ draft: false
status: "OK"
tags: ["Symbols", "Glossary", "Overview"]
---

## Symbols
We embedded three symbols, referencing additional info, tasks, and warnings:
{{<alert class="info" caption="Info">}}
Expand Down
1 change: 1 addition & 0 deletions mevislab.github.io/content/contact.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ title: "Contact"
date: 2022-06-15T08:54:53+02:00
draft: false
---

### Feedback is Valuable and Always Appreciated!

#### MeVisLab Licensing
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ This example shows how to create a contour filter.
Images are loaded via `ImageLoad` module and visualized unchanged in a `View2D` module *View2D1*.
Additionally, the images are modified by a local macro module `Filter` and shown in another `View2D` viewer *View2D*.

In order to display the same slice (unchanged and changed), the module `SyncFloat` is used to synchronize the field value *startSlice* in both viewers. The `SyncFloat` module duplicates the value *Float1* to the field *Float2*.
In order to display the same slice (unchanged and changed), the module `SyncFloat` is used to synchronize the field value *startSlice* in both viewers. The `SyncFloat` module duplicates the value *Float1* to the field *Float2* if it differs by *Epsilon*.

![Screenshot](examples/basic_mechanisms/contour_filter/image.png)

Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
---
layout: post
title: "Panel for the contour filter"
title: "Panel for the Contour Filter"
category: "basic_mechanisms"
---

# Example 1: Panel for the Contour Filter
This example contains a whole package structure. Inside you can find the example contour filter for which a panel was created.
This example contains an entire package structure. Inside, you can find the example contour filter for which a panel was created.

## Summary
A new macro module `Filter` has been created. Initially, macro modules do not provide an own panel containing user interface elements such as buttons. The *Automatic Panel* is shown on double-clicking the module providing the name of the module.
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
layout: post
title: "Python scripting"
title: "Python Scripting"
category: "basic_mechanisms"
---

Expand All @@ -10,7 +10,7 @@ This example shows how to create module interactions via Python scripting.
## Summary
A new macro module `IsoCSOs` is created providing two viewers in its internal network, `View2D` and `SoExaminerViewer`. Both viewers are included in the panel of the module.

To showcase how Python functions can be implemented in MeVisLab and called from within a module, additional buttons to browse directories and create contours via the `CSOIsoGenerator` are added. Lastly, a field listener is implemented reacting to field changes by colorizing contours when the user hovers over them with the mouse.
To showcase how Python functions can be implemented in MeVisLab and called from within a module, additional buttons to browse directories and create contours via the `CSOIsoGenerator` are added. Lastly, a field listener is implemented that reacts to field changes by colorizing contours when the user hovers over them with the mouse.

![Screenshot](examples/basic_mechanisms/macro_modules_and_module_interaction/example2/image2.png)

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
layout: post
title: "Creating a simple application"
title: "Creating a Simple Application"
category: "basic_mechanisms"
---

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,9 +35,9 @@ In this example, contours are created and colors and styles of these CSOs are cu
![Screenshot](examples/data_objects/contours/example1/image.png)

## Summary
+ Contours are stored as their own abstract data type called Contour Segmentation Objects (often abbreviated to *CSO*).
+ The `SoCSO\*Editor` module group contains several useful modules to create, interact with or modify CSOs.
+ Created CSOs are temporarily stored and can be managed using the `CSOManager`.
* Contours are stored as their own abstract data type called Contour Segmentation Objects (often abbreviated to *CSO*).
* The `SoCSO\*Editor` module group contains several useful modules to create, interact with or modify CSOs.
* Created CSOs are temporarily stored and can be managed using the `CSOManager`.

# Download
The example network can be downloaded [here](examples/data_objects/contours/example1/ContourExample1.mlab)
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
---
layout: post
title: "Contour interpolation"
title: "Contour Interpolation"
category: "data_objects"
---

# Contour Example 2: Contour Interpolation
This example shows how to interpolate CSOs across slices.

## Summary
In this example, semi-automatic countours are created using the `SoCSOLiveWireEditor` module and their visualization is modified using the `SoCSOVisualizationSettings` module.
In this example, semiautomatic countours are created using the `SoCSOLiveWireEditor` module and their visualization is modified using the `SoCSOVisualizationSettings` module.

Additional contours between the manually created ones are generated by the `CSOSliceInterpolator` and added to the `CSOManager`. Different groups of contours are created for the left and right lobe of the lung and colored respectively.

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
layout: post
title: "2D and 3D visualization of contours"
title: "2D and 3D Visualization of Contours"
category: "data_objects"
---

Expand Down
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
---
layout: post
title: "Annotation of images"
title: "Annotation of Images"
category: "data_objects"
---

# Contour Example 4: Annotation of Images
This example shows how to add annotations to an image.

## Summary
In this example, the network of **Contour Example 3** is extended so that the volume of the 3D mask generated by the `VoxelizeCSO` module is calculated. The `CalculateVolume` module counts the number of voxels in the given mask and returns the correct volume in ml. The calculated volume will be used for a custom `SoView2DAnnotation` displayed in the `View2D`.
In this example, the network of **Contour Example 3** is extended, so that the volume of the 3D mask generated by the `VoxelizeCSO` module is calculated. The `CalculateVolume` module counts the number of voxels in the given mask and returns the correct volume in ml. The calculated volume will be used for a custom `SoView2DAnnotation` displayed in the `View2D`.

![Screenshot](examples/data_objects/contours/example4/image.png)

Expand Down
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
---
layout: post
title: "Contours and ghosting"
title: "Contours and Ghosting"
category: "data_objects"
---

# Contour Example 5: Contours and Ghosting
This image shows how to automatically create CSOs based on isovalues. In addition, the visualization of CSOs of previous and subsequent slices is shown.
This image shows how to automatically create CSOs based on isovalues. In addition, the visualization of CSOs on previous and subsequent slices is shown.

## Summary
In this example, the `CSOIsoGenerator` is used to generate contours based on a given isovalue of the image. Contours are generated in the image where the given isovalue is close to the one configured. These contours are stored in the `CSOManager` and ghosting is activated in the `SoCSOVisualizationSettings`.
In this example, the `CSOIsoGenerator` is used to generate contours based on a given isovalue out of the image. Contours are generated in the image where the given isovalue is close to the one configured. These contours are stored in the `CSOManager` and ghosting is activated in the `SoCSOVisualizationSettings`.

Ghosting means not only showing contours available on the currently visible slice but also contours of the neighbouring slices with increasing transparency.
"Ghosting" means not only showing contours available on the currently visible slice but also contours on the neighboring slices with increasing transparency.

The contours are also displayed in a three-dimensionsl `SoExaminerViewer` by using the `SoCSO3DRenderer`.

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
layout: post
title: "Drawing curves"
title: "Drawing Curves"
category: "data_objects"
---

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
layout: post
title: "Distance between markers"
title: "Distance Between Markers"
category: "data_objects"
---

Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
---
layout: post
title: "Processing and modification of WEMs"
title: "Processing and Modifying of WEMs"
category: "data_objects"
---

# Surface Example 2: Processing and Modification of WEMs
# Surface Example 2: Processing and Modifying of WEMs
This example shows how to process and modify WEMs using the modules `WEMModify`, `WEMSmooth`, and `WEMSurfaceDistance`.
![Screenshot](examples/data_objects/surface_objects/example2/DO7_03.png)

Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
---
layout: post
title: "Apply transformations on a 3D WEM object via mouse interactions"
title: "Apply Transformations to a 3D WEM Object Via Mouse Interactions"
category: "data_objects"
---

# Surface Example 3: Interactions with WEM
# Surface Example 3: Interactions With WEM

## Scale, Rotate, and Move a WEM in a Scene
In this example, we are using a `SoTransformerDragger` module to apply transformations on a 3D WEM object via mouse interactions.
![Screenshot](examples/data_objects/surface_objects/example3/image.png)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
layout: post
title: "Interactively moving WEM"
title: "Interactively Moving WEM"
category: "data_objects"
---

Expand Down
10 changes: 5 additions & 5 deletions mevislab.github.io/content/examples/howto.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
title: "Using provided examples"
title: "Using Provided Examples"
date: 2022-06-15T08:56:33+02:00
draft: false
status: "OK"
Expand All @@ -9,14 +9,14 @@ menu:
weight: 649
parent: "examples"
---
### Structure

### Structure
Each tutorial chapter was used as an umbrella theme to structure related examples that are linked in a list.
After clicking any of the linked examples, you will be forwarded to a short description of the feature and have the option to download the resource that produces your desired effect.

The provided files are usually either *.mlab* files or *.zip* archives. You will find a short tutorial on how to add those files into your MeVisLab application to work with them below.

### MeVisLab (\*.mlab) files
### MeVisLab (*.mlab*) Files
MeVisLab files are networks stored as *.mlab* files. <br>

{{<alert class="info" caption="Info">}}
Expand All @@ -25,7 +25,7 @@ Double-clicking the left mouse button within your MeVisLab workspace works as a

Files can also be opened using the menu option {{< menuitem "File" "Open">}}.

### Archives (\*.zip files)
### Archive (*.zip*) Files
Archives mostly contain macro modules. <br>
To use those macro modules, you will need to know how to handle user packages.

Expand All @@ -49,7 +49,7 @@ Feel free to create certain directories if they do not exist yet, but make sure

Continuing on your MeVisLab workspace: You might need to reload the module cache after adding macro modules out of *.zip* archives for them to be displayed and ready to be used. To do so, open {{< menuitem "Extras" "Reload Module Database (Clear Cache)" >}}.

### Python (\*.py) or Script (\*.script) Files
### Python (*.py*) or Script (*.script*) Files
In the rare case that a *.py* or *.script* file is provided, make sure to firstly follow the tutorials related to macro modules and test cases.

{{<alert class="warning" caption="Warning">}}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
---
layout: post
title: "Masking images"
title: "Masking Images"
category: "image_processing"
---

# Image Processing Example 2: Masking Images
In this example, we create a simple mask on an image, so that background voxels are not affected by changes of the window/level values.

## Summary
We are loading images by using the `LocalImage` module and show them in a `SynchroView2D`. The same image is shown in the right viewer of the `SynchroView2D` but with a `Threshold` based `Mask`.
We are loading images by using the `LocalImage` module and show them in a `SynchroView2D`. The same image is shown in the right viewer of the `SynchroView2D` but with a `Threshold`-based `Mask`.

![Screenshot](examples/image_processing/example2/image.png)

Expand Down
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
---
layout: post
title: "Subtract 3D objects"
title: "Subtract 3D Objects"
category: "image_processing"
---

# Image Processing Example 4: Subtract 3D Objects
In this example, we subtract a sphere from another WEM.

## Summary
We are loading images by using the `LocalImage` module and render them as a 3D scene in a `SoExaminerViewer`. We also add a sphere that is then subtracted from the original image.
We are loading images by using the `LocalImage` module and render them as a 3D scene in a `SoExaminerViewer`. We also add a sphere that is then subtracted from the original surface.

![Screenshot](examples/image_processing/example4/image.png)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ In this example, a simple Open Inventor scene is created. The Open Inventor scen
## Summary
A `SoExaminerViewer` is used to render Open Inventor scenes in 3D. The `SoBackground` module defines the background of the whole scene.

Three 3D objects are created (`SoCone`, `SoSphere`, and `SoCube`) having a defined `SoMaterial` module for setting the *DiffuseColor* of the object. The cube and the cone are also transformed by a `SoTransform` module so that they are located next to the centered sphere.
Three 3D objects are created (`SoCone`, `SoSphere`, and `SoCube`) having a defined `SoMaterial` module for setting the *DiffuseColor* of the object. The cube and the cone are also transformed by a `SoTransform` module, so that they are located next to the centered sphere.

In the end, all three objects including their materials and transformations are added to the `SoExaminerViewer` by a `SoGroup`.

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
layout: post
title: "Mouse interactions in an Open Inventor scene"
title: "Mouse Interactions in an Open Inventor Scene"
category: "open_inventor"
---

Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
---
layout: post
title: "Camera interaction with collision detection"
title: "Camera Interaction With Collision Detection"
category: "open_inventor"
---

# Open Inventor Example 4: Camera Interaction with Collision Detection
# Open Inventor Example 4: Camera Interaction With Collision Detection
This example shows how to implement a camera flight using keyboard shortcuts. Collisions with anatomical structures are detected and the flight stops. In addition to that, the camera object and direction is rendered in another viewer.

This example has been taken from the [MeVisLab forum](https://forum.mevislab.de/index.php?topic=3947.0).
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
title: "Writing a simple test case in MeVisLab"
title: "Writing a Simple Test Case in MeVisLab"
date: 2022-06-15T08:56:33+02:00
category: "testing"
---
Expand Down
4 changes: 2 additions & 2 deletions mevislab.github.io/content/examples/testing/example3/index.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
---
title: "Iterative tests in MeVisLab with Screenshots"
title: "Iterative Tests in MeVisLab With Screenshots"
date: 2022-06-15T08:56:33+02:00
category: "testing"
---

# Testing Example 3: Iterative Tests in MeVisLab with Screenshots
# Testing Example 3: Iterative Tests in MeVisLab With Screenshots
In this example you will learn how to write iterative tests in MeVisLab. In addition to that, we create a screenshot of a viewer and add the image to the test report.

# Download
Expand Down
4 changes: 2 additions & 2 deletions mevislab.github.io/content/examples/thirdparty.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
title: "ThirdParty Examples"
title: "Third-party Examples"
date: 2022-06-15T08:56:33+02:00
draft: false
status: "OK"
Expand All @@ -10,5 +10,5 @@ menu:
parent: "examples"
---

## ThirdParty Examples:
## Third-party Examples:
{{< childpages >}}
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
---
title: "OpenCV Webcam access"
title: "OpenCV Webcam Access"
date: 2022-06-15T08:56:33+02:00
category: "thirdparty"
---

# ThirdParty Example 1: OpenCV Webcam Access
# Third-party Example 1: OpenCV Webcam Access
This Python file shows how to access the webcam via OpenCV and use the video via `PythonImage` module in MeVisLab.

# Download
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
---
title: "Face detection in OpenCV"
title: "Face Detection in OpenCV"
date: 2022-06-15T08:56:33+02:00
category: "thirdparty"
---

# ThirdParty Example 2: Face Detection in OpenCV
# Third-party Example 2: Face Detection in OpenCV
This Python file shows how to access the webcam and detect faces in the video stream via OpenCV.

# Download
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
---
title: "PyTorch segmentation"
title: "PyTorch Segmentation"
date: 2022-06-15T08:56:33+02:00
category: "thirdparty"
---

# ThirdParty Example 5: Segmentation in Webcam Stream by using PyTorch
This macro module segments a person shown in a webcam stream by using a pre-trained network from PyTorch (torchvision).
# Third-party Example 5: Segmentation in Webcam Stream by using PyTorch
This macro module segments a person shown in a webcam stream by using a pretrained network from PyTorch (torchvision).

![Screenshot](images/tutorials/thirdparty/pytorch_example3_10.png)

Expand Down
Loading