F.A.S.T. Renal

The F.A.S.T. Renal example application (shown below) demonstrates a more typical UI expereince for an Advanced Visualization application. The Clinical use case for this app would be to segment out multiple structures from an abdominal CT scan to surgical plaaning for a Partial Nephrectomy. This app will demonstrate how F.A.S.T. Interactive Segmentation can used to segment out :

  1. Contrast filled Arteries (AA and renal etc)
  2. Kidney Lesions
  3. Cortical Structure of the Kidneys
  4. Non Contrast Arteries

The below picture shows the results of segmenting these structures in the UI.

kidney.jpg

User Interface

The application consists of 4 viewports

  1. Top left – The resulting segmentation (will start off blank)
  2. Top right – Axial image with resulting segmentation for that slice
  3. Bottom left – Sagittal image with resulting segmentation for that slice
  4. Bottom right – Coronal image with resulting segmentation for that slice

The tools down the left hand side allow you to select which anatomical structure you currently segmenting.

On the bottom is the mouse legend which depicts the current mouse actions per viewport (note that ctrl, shift and alt modifiers perform different actions, simply press the appropriate key and the mouse legend changed to show you what the action will be with that modifier key). All the basic operations are available, rotate, scroll, pan, zoom, etc.

Segmenting

Interactive Segmentation is utilized in this example. To segment out a structure click (alt left as shown in the mouse legend) on the structure in one of the 3 MPR viewports. Move the mouse to adjust the segmentation before letting the mouse button up. Moving the mouse vertically adjusts the maximum size of the growing operation. Moving the mouse horizontally adjusts the “aggressiveness” of the segmentation operation. Aggressiveness is controlled as follows:

  • For high contrast structures (e.g. Contrast aorta and renal arteries) horizontal movement adjusts the maximum and/or minimum  HU values to segment through (for contrast arterial only minimum, for Kidneys and vessels, both).
  • For low contrast structures (e.g. lesions) the “strength” of edges that the algorithm will grow through

To clean up segmentation you may Free Hand Cut to remove extraneous segmentation on the 3D Viewport.

Source code and interesting coding features in this example

View the source /foviaserver/public/apps/kidneys/kidneys.js

  • kidneys.html
    • Some core utilities are grabbed from the common directory
    • Segmentation mouse adapters are grabbed from the common directory, the source code exists there for you to see an example of how mouse motions can be utilized to perform interactive segmentation.
    • The 4 viewports are contained in “widget” HTML div elements that also utilize controls (buttons) right on the viewports. You can see how we used those, but you can create any controls any way you like.
  • kidneys.js
    • window.onload() kicks off the processing
    • Simpler example apps discuss viewport creation, but here segmentation structures are created. 
    • The segEngines array is used to had the mouse adaptors the list of viewports that must be updated when segmentation changes, in this case all 4 viewports.
    • The segmentationContext utility function makeColorLabeledTFsfromWindowLevel is used to create the upper Render Ranges for the segmented labels.
    • g_processingSegOp is a global flag that keeps more mouse events from kicking off multiple segmentation operations until the prior operation is done (including rendering). It is decremented once rendering for any viewport is completed and incremented at the beginning of a seg operation to the number of viewports that will display the results of this segmentation.
    • In SetSegLabel (from the left hand control radiobuttons) different params for each seg type are setup
  • 2/3DViewport.js
    • This is a wrapper around HTML*Viewport class from the SDK.
    • You can see how to change actions for mouse clicks
    • You can see how to draw overlays (e.g. text) over the images

To run the example, in the local URL localhost:8088/apps/kidneys/, change “localhost” to your server IP address, and enter the URL into your browser.