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 :
Contrast filled Arteries
(AA and renal etc)
Kidney
Lesions
Cortical
Structure of the Kidneys
Non Contrast
Arteries
The below picture shows the
results of
segmenting these structures in the UI.
User Interface
The application consists of 4
viewports
Top
left – The resulting segmentation (will start off blank)
Top
right – Axial image with resulting segmentation for that slice
Bottom
left – Sagittal image with resulting segmentation for that
slice
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
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.
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 :
The below picture shows the results of segmenting these structures in the UI.
User Interface
The application consists of 4 viewports
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:
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
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.