NifTK  16.4.1 - 0798f20
CMIC's Translational Medical Imaging Platform
ICP Based Registration Service (ICPBRS)

Table of Contents

ICP Based Registration Service (ICPBRS)

Component Specification Document (CSD)

Document ID:UCL-2001-CSD-0002-ICPBasedRegistrationService.dox
Prepared By:Matt Clarkson
Authorised By:
Last Modified:26 Jun 2015

Revision History

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

Introduction

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.

Scope

This document defines the requirements, design and implementation.

General Description

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.

Requirements

Functional Requirements

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

Non-Functional Requirements

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.

Design

Architecture

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.

Error Handling

All errors shall be communicated by throwing an mitk::Exception.

Implementation

A few implementation details are described below.

Logging

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.

Classes and Functions