Difference between revisions of "Slicer3:Architecture/Features"

From NAMIC Wiki
Jump to: navigation, search
m (Text replacement - "http://www.slicer.org/slicerWiki/index.php/" to "https://www.slicer.org/wiki/")
 
(3 intermediate revisions by one other user not shown)
Line 1: Line 1:
== Presentations ==
+
<big>'''Note:''' We are migrating this content to the slicer.org domain - <font color="orange">The newer page is [https://www.slicer.org/wiki/Slicer3:Architecture/Features here]</font></big>
 
 
Presentations:
 
 
 
* [[Media:Slicer_3-alpha-2006-04-03.ppt|Slicer 3 Architecture Presentation 2006-04-03]]
 
 
 
== Goals ==
 
 
 
The main goals of the slicer3 re-work are:
 
 
 
* Provide a clean, well-defined, flexible and functional application structure for medical image computing developers and users
 
* Learn from user and developer feedback about earlier versions of slicer as well as other packages with similar goals
 
* Maximize the re-use of code by making it easy use pieces of slicer in other environments and to plug diverse pieces of code into the slicer model
 
 
 
== Architecture ==
 
 
 
At a high level, these goals are to be implemented through:
 
 
 
* A data-centric approach in which the [http://wiki.na-mic.org/Wiki/index.php/Slicer3:Data_Model '''Data Model''' ] (implemented as a follow on to the MRML Tree) is implemented independent of the visualization and algorithmic components of the system
 
** The Data Model API allows adding, deleting, reading, and modifying medical image data types (Volumes, Models, Transforms, Fiducials, etc).
 
** The Data Model provides functionality to serialize and deserialize the contents in an XML structure
 
** The Data Model API is structured to allow the either direct access (in the same process space with the algorithms) or through a client/server connection.
 
** A set of Adaptor Classes will be provided to allow access to the Data Model API through ITK Image Readers/Writers, VTK Image Readers/Writers, and command line utility commands. These adaptors will support access to the data by programs that have not specifically been written to support the slicer Data Model.
 
 
 
* An [http://www.na-mic.org/Wiki/index.php/Slicer3:Execution_Model_Documentation#Introduction '''Execution Model'''] in which algorithmic functionality is encapsulated such that they can be used in one of several modes:
 
** as stand-alone command line executables (for use in testing or to be called from batch scripts; these executables are also important to enable grid/distributed computing)
 
** as shared libraries linked into a parent application (i.e. brought into the slicer application address space where the classes can be instantiated and methods invoked with data passed as pointers)
 
** a framework to enable algorithm developers to efficiently code these execution modules will be provided using ITK
 
 
 
* A '''UI''' application interface that
 
** presents a consistent and modern look and feel to end users
 
** a 'thin' application layer that is independent of the data and execution implementation
 
** a UI description language (XML) so that execution modules can be 'self describing' in terms of their parameters so that, for example, the UI elements can be provided through a --xml-help command line argument
 
** a class hierarchy of reusable UI Widgets that enforce consistent look and feel and can be used in multiple modules
 
** UI widgets that are 'aware' of the Data Model, UI, and other slicer3 elements to support high level operations (e.g. a coordinate system browser, a volume properties editor, a view controller, etc).
 
** A 'trace' capability in the UI to support scripted tests and demos (possibly also user macros).
 
 
 
* A '''Visualization''' Environment customized for medical image processing (VTK based)
 
** A framework for representing and displaying elements of the Data Model with sub-voxel accurate rendering
 
** Ability to represent and display composite scenes with volumes, models, landmarks, and fiducials
 
** Ability for modules to add transient display elements (e.g. glyphs and widgets) to support interaction
 
** Cross platform high performance rendering infrastructure
 
** a framework to support module development
 
 
 
* Other global features and requirements
 
** Cross platform to at least: Windows, Linux, Mac. Solaris, SGI, AIX desirable but not critical.
 
** As much code coverage as possible in nightly testing
 
** Integrated with CPack for distribution and installation.
 
 
 
== Features & capabilities "wish-list" ==
 
 
 
See [[Slicer3:FeatureRequests|Feature and Resource Requests ]] to make a new Slicer 3 feature or resource request or to browse existing ones.
 

Latest revision as of 17:51, 10 July 2017

Home < Slicer3:Architecture < Features

Note: We are migrating this content to the slicer.org domain - The newer page is here