ImageQualityIndexes provides the basic image quality assessment methods. Check the reasoning behind the code design here if you're interested in.
PSNR
/assess_psnr
-- Peak signal-to-noise ratioSSIM
/assess_ssim
-- Structural similarityMSSSIM
/assess_msssim
-- Multi-scale SSIM
HASLER_AND_SUSSTRUNK_M3
/hasler_and_susstrunk_m3
-- Colorfulness
The root type is ImageQualityIndex
, each concrete index is supposed to be one of FullReferenceIQI
, ReducedReferenceIQI
and NoReferenceIQI
.
There are three ways to assess the image quality:
- use the general protocol, e.g.,
assess(PSNR(), x, ref)
. This reads as "assess the image quality of x using method PSNR with information ref" - each index instance is itself a function, e.g.,
PSNR()(x, ref)
- for well-known indexes, there are also convenient name for it for benchmark purpose.
For detailed usage of particular index, please check the docstring (e.g., ?PSNR
)
using Images, TestImages
using ImageQualityIndexes
img = testimage("cameraman") .|> float64
noisy_img = img .+ 0.1 .* randn(size(img))
assess_ssim(noisy_img, img) # 0.24112
assess_psnr(noisy_img, img) # 19.9697
kernel = ones(3, 3)./9 # mean filter
denoised_img = imfilter(noisy_img, kernel)
assess_psnr(denoised_img, img) # 28.4249
assess_ssim(denoised_img, img) # 0.6390
assess_msssim(denoised_img, img) # 0.8460
img = testimage("fabio");
colorfulness(img) # 68.5530