ITK/Release 4/Refactor Numerical Libraries/Inventory/Linear Solvers

From KitwarePublic
Jump to navigationJump to search

The Problem

It certain ITK applications it is common to need to solve the linear system

           A.x = b

Where

  • A is a large sparse matrix
  • x is a vector
  • b is a vector

The common approach to solve this problem is to use linear solvers.

Use Cases

FEM

The most significant case where large sparse matrix appear is in the computation of Finite Element Methods (FEM). In ITK, this is done for the purpose of computing Deformable Registration between images.

Exploration

In the past, ITK developers have explored alternative solutions for solving large sparse matrices.

The findings were codified at the time in the following Wiki page:


LSQR

The initial approach in ITK to solve large sparse linear systems involved the use of the LSQR method.

In VXL

LSQR is implemented in VXL, but unfortunately the implementation is done using source code taken from netlib, and that code happens to be copyrighted by ACM. The license that ACM provides for algorithms preclude their use in the ITK ecosystem.

  ITK/Modules/ThirdParty/VNL/src/vxl/core/vnl/algo/vnl_lsqr.h
  ITK/Modules/ThirdParty/VNL/src/vxl/core/vnl/algo/vnl_lsqr.cxx