Slicer 3 0 architecure
This presentation is the property of its rightful owner.
Sponsored Links
1 / 10

Slicer 3.0 Architecure PowerPoint PPT Presentation


  • 159 Views
  • Uploaded on
  • Presentation posted in: General

Slicer 3.0 Architecure. User Desktop. Slicer 3.0. Algorithms. ITK. VTK. Slicer Modules. Scripts of Slicer Mods. VTK Apps Using ITK. Batch Programs. Non-NAMIC Cmd tools. LONI Pipeline. Birn Grid Data/Compute. Slicer 3 Architecture Diagram (2006-01-26). Execution Model Manager.

Download Presentation

Slicer 3.0 Architecure

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Slicer 3 0 architecure

Slicer 3.0 Architecure

User

Desktop

Slicer3.0

Algorithms

ITK

VTK

Slicer

Modules

Scripts of

Slicer Mods

VTK Apps

Using ITK

Batch

Programs

Non-NAMIC

Cmd tools

LONI

Pipeline

Birn Grid

Data/Compute


Slicer 3 0 architecure

Slicer 3 Architecture Diagram (2006-01-26)

Execution Model Manager

Base

(Managed by

Base and communicats

like other Modules)

Auto-Generated GUIs from JSON Descriptions

Logic

Links to:

Base Logic

GUI

Links to:

KWWidgets

Logic

Links to:

ITK

MRML

VTK (except

Rendering)

GUI

Links to:

VTK Rendering

KWWidgets

Mediators

Mediators

Observe Modified

Events

MRML

  • Provides

  • Frames for Widgets,

  • Routing of User Events

Observe Modified

Events on Application

State

Formulates Command Line

and possibly

stages data

Edit Mrml

Scene/Nodes

  • Registers GUI Event Observers

Interactive Module

Describe Input options

Observe Modified

Events

Logic

Links to:

Base Logic

ITK

MRML

VTK (except

Rendering)

GUI

Links to:

VTK Rendering

KWWidgets

Mediators

Edit Mrml

Scene/Nodes

  • External

  • Processes (Grid/Pipeline)

  • Speak MRML

  • (link to libmrml

  • or have data staged by slicer)

  • Uses the JSON interface

MRML

Aware Processes

Can Edit Mrml

Scene/Nodes

and Observe

Modified Events

  • Notes:

  • All classes in the Logic directory should be able to run ‘headless’ without OpenGL or window system for scripting and testing

  • Base/Logic contains transient application state (cursor location, focus, mrml scene connection…)

  • Interactive Modules are ones which interact with the VTK scene and/or User events

  • Interactive Modules interact with 3D scene by creating objects in MRML scene (not by direct manipulation of the Renderer)

  • Logic classes encapsulate and manage internal vtk/itk pipelines

  • GUI classes are implemented as KWWidget subclasses

  • Each Logic class defines a set of Get/Set methods for internal state and Modified Events that GUI classes can Observe


Slicer 3 0 architecure

Main program;

Bootstrap application logic,

Create application gui

data layer

data mediator

logic layer

gui mediator

gui layer

(VTK, ITK, no KWWidgets, no VTKRendering)

vtkObject

vtkSlicerLogic

- Undo manager,

- tracing

vtkSlicerApplicationLogic

- MRML slice #

- “transient state”

- open views, slices,

modules (and active)

- cursor location

- version

- focus, event routing

vtkSlicerViewLogic

vtkSlicerLinkedSliceLogic

vtkSliceLogic

- vtkImageReslice

- vtkImageComposite

vtkSlicerSliceLayerLogic

- MRML node

- Opacity

- Compositing

- Window/level

vtkSlicerViewLogic

vtkSlicerModuleLogic

- Undo/tracing helpers

vtkSlicerEditorLogic

vtkSlicerMRMLLogic

vtkSlicerCustomModuleLogic

vtkKWWidget

vtkSlicerGUI

- look & feel?

- set command helpers?

vtkSlicerApplicationGUI

- connect to window system

- vtkKWApplication

- vtkKWWindow

vtkSlicerViewGUI

- Render windows

- mappers, actors

vtkSlicerSliceGUI

- vtkImageMapper

- vtkKWRenderWindow

vtkSlicerSliceLogicGUI

vtkSlicerModuleGUI

vtkSlicerCustomModuleGUI

GUI code adds observers to modified events generated by/to logic

Logic code adds modified event observers to MRML scene and MRML nodes.

MRML data model

Apply methods from GUI classes call set method in logic to change state

Logic methods apply changes to the MRML scene.

VTK pipeline

VTK pipeline


Slicer daemon

Slicer Daemon

  • Slicerd listens on local socket

  • slicerget<id>

    • gets volume and writes to stdout in nrrd

  • slicerput[name]

    • reads nrrd on stdin and puts in slicer

  • % slicerget 0 | unu 1op exp - | slicerput


Itk io and slicer daemon

ITK IO and Slicer Daemon

AntiAliasBinaryImageFilter.exe bunny.z.nrrd "| sh slicerput.tcl"


Undo architecture for slicer3

Undo Architecture for Slicer3

  • Versioning “Commit Aside” Strategy Encapsulated within MRML

  • Store “Initial Scene” (from file) and “Delta Scenes” (scenes containing undoable changes)

  • Delta Scenes ‘are’ MRML Scenes

  • Some Nodes are Reference Nodes

  • Setting the MRML scene in the Application Logic causes the cascade of observer callbacks

  • => All Undoable operations must store their data as MRML nodes


Undo 1 st pass

Undo 1st Pass

Application Logic

Undo Stack

Initial Scene

Delta1 Scene

Delta2 Scene

Saved Scene

N1

R

R

N1

N2

N4

R

N4

N3

R

N5

N5


Undo current

Undo Current

MRML Scene

Undo Stack

Initial Scene

Delta1 Scene

Delta2 Scene

Saved Scene

N1

N1

N2

N4

N4

N3

N5

N5


Slice management

MRML Nodes: Persistent, Undoable State

Logic: Encapsulate VTK Pipelines, Observe MRML Nodes

GUI: Manage Widgets and Rendering; Manipulated Nodes and Logic; Observe Nodes and Logic

Slice Management

Volume Display Node

Volume Node

Foreground

Slice Layer Logic

Volume Display Node

Volume Node

Background

Slice Layer Logic

Slice Node

Slice GUI

Slice Logic

Slice Composite Node


Slice coordinates

SliceNode

XYToIJK Matrix Calculated by SliceLayerLogic

From GUI

Slice Coordinates

RASToRAS Transforms

SliceToRAS Matrix

XYToSlice Matrix

RASToIJK Matrix

RAS to RAS Coordinates

Slice Coordinates

XY Image Space Coordinates

IJK = RASToIJK * RASToRAS * SliceToRAS * XYToSlice * XY

IJK Volume Coordinates


  • Login