BIRL: Benchmark on Image Registration methods with Landmark validations
1.1K
This project/framework is the key component of Automatic Non-rigid Histological Image Registration (ANHIR) challenge hosted at ISBI 2019 conference. The related discussion is hosted on forum.image.sc.
The project contains a set of sample images with related landmark annotations and experimental evaluation of state-of-the-art image registration methods.
The initial dataset of stained histological tissues is composed by image pairs of related sections (mainly, consecutive cuts). Each image in the pair is colored with a different stain. The registration of those images is a challenging task due to both artefacts and deformations acquired during sample preparation and appearance differences due to staining. For evaluation, we have manually placed landmarks in each image pair. There are at least 40 uniformly spread over the tissue. We do not put any landmarks in the background. For more information about annotation creation and landmarks handling, we refer to the special repository - Dataset: histology landmarks.

The dataset is defined by a CSV file containing paths to target and sensed image and their related landmarks (see ./data-images/pairs-imgs-lnds_mix.csv). With the change of the cover table, the benchmarks can be used for any other image dataset.
List of the main/key features of this package:
Even though this framework is completely customizable we include several image registration methods commonly used in medical imaging.

For each registration method, different experiments can be performed independently using different values of the parameters or image pairs sets.
Sample execution of the "empty" benchmark template:
python birl/bm_template.py \
-t ./data-images/pairs-imgs-lnds_mix.csv \
-o ./results \
-cfg sample_config.yaml \
--preprocessing matching-rgb gray \
--unique --visual
or with relative paths:
python birl/bm_template.py \
-t ./data-images/pairs-imgs-lnds_histol.csv \
-d ./data-images \
-o ./results \
-cfg sample_config.yaml \
--preprocessing gray matching-rgb
The general Image Registration benchmarks contain couple required and optional parameters that are shared among 'all' methods/benchmarks. The brief description is the following...
Required parameters:
-t/--path_table path to the cover table describing image/landmarks registration pairs-d/--path_dataset path to the dataset folder with images and landmarks-o/--path_out output path for saving resultsOptional parameters:
--preprocessing offer some image pre-processing before image registration starts, the order defines the order of performed operations; the options are matching-<color-space> (where <color-space> is for example rgb or hsv) equalize source to target image and gray converting both images to gray-scale--unique each experiment has creation stamp included in its name (prevent overwriting experiments with the same method)--visual generate a simple visualization of particular image registrations
Measure your computer performance using average execution time on several simple image registrations. The registration consists of loading images, denoising, feature detection, transform estimation, and image warping.
python bm_experiments/bm_comp_perform.py -o ./results
This script generates simple report exported in JSON file on a given output path.
Used prepared docker image from Docker Hub
docker run --rm -it borda/birl:SOTA-py3.7 bash
You can build it on your own, note it takes lots of time, be prepared.
git clone <git-repository>
docker image build \
-t birl:py3.6 \
-f bm_experiments/Dockerfile \
--build-arg PYTHON_VERSION=3.6 \
.
To run your docker use
docker image list
docker run --rm -it birl:py3.6 bash
For each benchmark experiment, the explanation about how to install and use a particular registration method is given in the documentation. Brief text at the top of each file.
python bm_experiments/bm_bUnwarpJ.py \
-t ./data-images/pairs-imgs-lnds_histol.csv \
-d ./data-images \
-o ./results \
-Fiji ~/Applications/Fiji.app/ImageJ-linux64 \
-cfg ./configs/ImageJ_bUnwarpJ_histol.yaml \
--preprocessing matching-rgb \
--visual --unique
python bm_experiments/bm_RVSS.py \
-t ./data-images/pairs-imgs-lnds_histol.csv \
-d ./data-images \
-o ./results \
-Fiji ~/Applications/Fiji.app/ImageJ-linux64 \
-cfg ./configs/ImageJ_RVSS_histol.yaml \
--visual --unique
python bm_experiments/bm_elastix.py \
-t ./data-images/pairs-imgs-lnds_histol.csv \
-d ./data-images \
-o ./results \
-elastix ~/Applications/elastix/bin \
-cfg ./configs/elastix_affine.txt \
--visual --unique
python bm_experiments/bm_rNiftyReg.py \
-t ./data-images/pairs-imgs-lnds_histol.csv \
-d ./data-images \
-o ./results \
-R Rscript \
-script ./scripts/Rscript/RNiftyReg_linear.r \
--visual --unique
python bm_experiments/bm_ANTs.py \
-t ./data-images/pairs-imgs-lnds_anhir.csv \
-d ./data-images \
-o ./results \
-ANTs ~/Applications/antsbin/bin \
-cfg ./configs/ANTs_SyN.txt
python bm_experiments/bm_ANTsPy.py \
-t ./data-images/pairs-imgs-lnds_histol.csv \
-d ./data-images \
-o ./results \
-py python3 \
-script ./scripts/Python/run_ANTsPy.py \
--visual --unique
python bm_experiments/bm_DROP2.py \
-t ./data-images/pairs-imgs-lnds_histol.csv \
-d ./data-images \
-o ./results \
-DROP ~/Applications/DROP2/dropreg \
-cfg ./configs/DROP2.txt \
--visual --unique
Some more image registration methods integrated in ImageJ are listed in Registration.
For complete references see bibtex.
Content type
Image
Digest
Size
1.4 GB
Last updated
over 4 years ago
Requires Docker Desktop 4.37.1 or later.