Efficient MRF Deformation Model for Non-Rigid Image Matching
Download / Startup Guide
We are generally interested in the research and development of better image registration methods, so only the optimization is implemented in C++ and
auxiliary higher-level image processing is done in matlab. Basically we try
to do as much work in matlab as possible and we do not have intention to develop a stand-alone library. Currently, we only propose win32 compilation.
If you use this software please cite the paper
Shekhovtsov, I. Kovtun, V. Hlavac: Efficient MRF Deformation Model for Non-Rigid Image Matching, Computer Vision and Image Understanding 112(2008), pp. 91-99.
License & disclaimer
Copyright 2008 Alexander Shekhovtsov (firstname.lastname@example.org)
This software can be used for research purposes only.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Other Related Software
Deformable Registration using Discrete Optimization (DROP) http://campar.in.tum.de/Main/Drop
Image Registration Toolkit (ITK)
Fast and flexible image registration toolbox (FLIRT)
Free Form Shape Registration and Establishing Correspondences for Statistical shape Modeling
Source code available at gitlab. CMakeLists.txt is provided in dev/projects.
Download registration_2008 matlab code with win32/linux mexes
Download registration_2008 Source C++ and matlab code (see Build instructions)
Download TRW-S matlab code with compiled win32/linux mex
There are matlab help lines in the main functions and the following examples:
Example1 – simplest example
Example2 – example with custom similarity function
Example3 – example with image masks and a two step multi-scale processing
General implementation issues
We compute the data costs table for each position of each block by a stand-alone mex (see matching_cost_q.m, where the algorithm is prototyped). This could be then passed to any discrete optimization method. Also it can be readily input to the TRW-S algorithm, but since we use special form of regularization which allows faster updates and change the order of updates, we employ additional c++ code (see deform_match_mex.cpp, deform_match.cpp).
Handling of deformations
We represent the deformation d as a dense displacement field. It maps domain of I1 to domain of I2. This allows easy rendering of the back-deformed image I2 (via interpolated look-up), but not the deformed image I (need inverting the mapping), so we always show back-deformed I2. This might be confusing especially when doing compositions of deformations. Our matlab notation d(I2) may also appear confusing as in fact it is evaluating image J such that J(t) = I2(d(t)).
Source code/ other platforms
In C++ I use a lot of different stuff for memory management, working with arrays, vectors, etc. So one might find it not too very easy to exploit my code. It is platform independent in the sense that it only uses standard libraries.
We made the code available under the conditions below. Currently can be compiled with msvc and gcc3.3.6. We tested win32 platform and linux 32bit platform.
Center for Machine Perception Czech Technical University
Faculty of Electrical Engineering Department of Cybernetics
Karlovo nam. 13, 121 35 Praha 2, Czech Republic