SSIMULACRA2
The content in this entry is incomplete & is in the process of being completed.
SSIMULACRA 2 is a visual fidelity metric based on the concept of the multi-scale structural similarity index measure (MS-SSIM), computed in a perceptually relevant color space, adding two other (asymmetric) error maps, and aggregating using two different norms. It is currently the most reputable visual quality metric according to its correlation with subjective results, and is considered a very robust means of comparing encoders. It is debatable whether Butteraugli is better for very high fidelity, but SSIMULACRA 2 is considered the best for medium/low fidelity comparisons. Although it does not feature any inter-frame temporal awareness, it is still considered a very strong metric for video fidelity comparison nonetheless.
While a reference implementation by Cloudinary exists,
most people will want to use the rust implementation ssimulacra2_rs
.
Installingâ
- Cargo
- Archlinux AUR
To install ssimulacra2_rs using cargo, run this:
cargo install ssimulacra2_rs
On archlinux, you may use the AUR to install.
Simply use your favorite AUR helper to install ssimulacra2_bin-git
paru -S ssimulacra2_bin-git
Runningâ
On Imagesâ
Comparing images is simple, run this:
ssimulacra2_rs image source.png distorted.png
On Videosâ
If you want to compare videos, run this:
ssimulacra2_rs video source.mkv distorted.mkv
You can optionally output a graph using the -g
parameter:
ssimulacra2_rs video source.mkv distorted.mkv -g
Multithreadingâ
Multithreading with ssimulacra2_rs works, but it scales badly.
This is likely due to memory bandwidth limitations.
However, the speedup is worth it.
To run multithreaded, use the --frame-threads
or -f
parameters.
For example, to run with 16 threads:
ssimulacra2_rs video source.mkv distorted.mkv -f 16
You should set the amount of threads to half of your actual thread count, as going any higher won't make a difference.
If you have a small amount of system memory, you may encounter out of memory errors while running with multi-threading. If that's the case, you need to lower the amount of threads.
Scoringâ
The score that ssimulacra2 outputs is simple:
- Very high quality:
90
and above - High quality:
70
to90
- Medium quality:
50
to70
- Low quality: Below
50