The above unwrapping algorithm has been implemented in C++ for 3D MR images. This program, called PRELUDE (Phase Region Expanding Labeller for Unwrapping Discrete Estimates), is available as part of the FMRIB Software Library (FSL) at www.fmrib.ox.ac.uk/fsl.
In order for the implementation to be fast it is necessary to use data structures that are efficient for this algorithm. We have used the Standard Template Library data structure, map, to store the constraints between pairs of regions. This has the advantage of constant insertion and deletion complexity, plus logarithmic search complexity when using the region numbers as the key. The only step where the map is inefficient is for finding the maximum value, which is , where is the number of constraints. However, as this is only done at most times (once per iteration), it is a small penalty to pay for having very efficient insertion, deletion and search operations, since these are used several times (on average) per iteration. Consequently the overall complexity (worst case) is , since each iteration has a complexity of , representing the search and updating/deletion operations respectively.