Computes a structural similarity metric (after the style of
MS-SSIM for images) for binary and categorical 2D and 3D images. Can be
based on accuracy (simple matching), Cohen's kappa, Rand index, adjusted
Rand index, Jaccard index, Dice index, normalized mutual information, or
adjusted mutual information. In addition, has fast computation
of Cohen's kappa, the Rand indices, and the two mutual informations.
Implements the methods of Thompson and Maitra (2020)
catsim: a Categorical Image Similarity IndexThe goal of catsim is to provide a similarity measure for binary or
categorical images in either 2D or 3D similar to the MS-SSIM
index for color
images. Suppose you have a ground truth segmentation of some image that
has been segmented into regions - perhaps a brain scan with different
types of tissues or a map with different types of terrain - and a
segmentation produced by some classification method. Comparing the two
pixel-by pixel (or voxel-by-voxel) might work well, but a method that
captures structural similarities might work better for your purposes.
MS-SSIM is an image comparison metric that tries to match the assessment
of the human visual system by considering structural similarities across
multiple scales. CatSIM applies a similar logic in the case of 2-D and
3-D binary and multicategory images, such as might be found in image
segmentation or classification problems.
You can install the released version of catsim from CRAN with:
install.packages("catsim")
#### or the dev version with:
#devtools::install_github("gzt/catsim")
If you have two images, x and y, the simplest method of comparing
them is:
library(catsim)
set.seed(20200505)
x <- besag
y <- x
y[10:20,10:20] <- 1
catsim(x, y, levels = 3)
#> [1] 0
By default, this performs 5 levels of downsampling and uses Cohen’s
kappa as the local similarity metric on 11 x 11 windows for a
2-dimensional image and 5 x 5 x 5 windows for a 3-D image. Those can
be adjusted using the levels, method, and window arguments.
Please note that the catsim project is released with a Contributor
Code of Conduct. By
contributing to this project, you agree to abide by its terms.