NifTK
16.4.1 - 0798f20
CMIC's Translational Medical Imaging Platform
|
Document ID: | UCL-2001-CSD-0002-ICPBasedRegistrationService.dox |
Prepared By: | Matt Clarkson |
Authorised By: | |
Last Modified: | 26 Jun 2015 |
A brief summary of changes between authorised releases of this document is recorded here. This section only describes the changes between authorised published versions.
Version | Date | Author(s) | Change(s) | Sections Affected |
---|---|---|---|---|
0.1 | 26 Jun 2015 | Matt Clarkson | Initial Version | All |
The purpose of this Component Specification Document (CSD) is to describe the ICP Based Registration Service (ICPBRS). It is intended to be read by those wanting to gain a technical understanding as to the fundamental requirements, design and implementation. This document is not intended for end-users.
This document defines the requirements, design and implementation.
The general description can be found in [4]. The aim is to register two point sets. One or both point sets can be surfaces, meaning that points are grouped into triangles. If a triangle mesh is available, interpolation across the face of the triangle should be considered.
These functional requirements shall be expressed, each on a single line.
REQ-2001-CSD-0002-002-01: If number of fixed points < 3, throw mitk::Exception.
REQ-2001-CSD-0002-003-01: If number of moving points < 3, throw mitk::Exception.
REQ-2001-CSD-0002-004-01: Two point sets, identical apart from translation should register with RMS residual < 0.001
REQ-2001-CSD-0002-005-01: Two point sets, identical apart from rotation should register with RMS residual < 0.001
These non-functional requirements shall be expressed, each on a single line.
REQ-2001-CSD-0002-001-01: The ICPBRS shall be available as a Micro Service.
REQ-2001-CSD-0002-006-01: Point sets of 100,000 corresponding points must register in < 0.001 seconds.
The architecture is based on MITK Micro Services [5].
The architecture shall be:
This means that clients such as unit tests, other modules, or GUI code can either link directly to niftkICPReg which forces a link-time dependency, or they can have zero link-time dependency and rely on the Micro Service based approach.
All errors shall be communicated by throwing an mitk::Exception.
A few implementation details are described below.
The service is currently implemented using vtkIterativeClosestPointTransform, which does not log each iteration of the ICP function. This service however should output the final RMS residual as a console message to a log file.