Main Content

niqe

Naturalness Image Quality Evaluator (NIQE) no-reference image quality score

Description

score = niqe(A) calculates the no-reference image quality score for image A using the Naturalness Image Quality Evaluator (NIQE). niqe compares A to a default model computed from images of natural scenes. A smaller score indicates better perceptual quality.

example

score = niqe(A,model) calculates the image quality score using a custom model.

example

Examples

collapse all

Compute the NIQE score for a natural image and its distorted versions using the default model.

Read an image into the workspace. Create copies of the image with noise and blurring distortions.

I = imread("lighthouse.png");
Inoise = imnoise(I,"salt & pepper",0.02);
Iblur = imgaussfilt(I,2);

Display the images.

montage({I,Inoise,Iblur},Size=[1 3])
title("Original Image | Noisy Image | Blurry Image")

Figure contains an axes object. The hidden axes object with title Original Image | Noisy Image | Blurry Image contains an object of type image.

Calculate the NIQE score for each image using the default model. Display the score.

niqeI = niqe(I);
disp("NIQE score for the original image is: "+niqeI)
NIQE score for the original image is: 2.5455
niqeInoise = niqe(Inoise);
disp("NIQE score for the noisy image is: "+niqeInoise)
NIQE score for the noisy image is: 10.877
niqeIblur = niqe(Iblur);
disp("NIQE score for the blurry image is: "+niqeIblur)
NIQE score for the blurry image is: 5.2661

The original undistorted image has the best perceptual quality and therefore the lowest NIQE score.

Load a set of natural images into an image datastore. These images are shipped in Image Processing Toolbox™ in a directory named 'imdata'.

setDir = fullfile(toolboxdir('images'),'imdata');
imds = imageDatastore(setDir,'FileExtensions',{'.jpg'});

Train a custom NIQE model using the image datastore.

model = fitniqe(imds);
Extracting features from 33 images.
......
Done.

Read an image of a natural scene. Display the image.

I = imread('car1.jpg');
imshow(I)

Figure contains an axes object. The hidden axes object contains an object of type image.

Calculate the NIQE score for the image using the custom model. Display the score.

niqeI = niqe(I,model);
fprintf('NIQE score for the image is %0.4f.\n',niqeI)
NIQE score for the image is 2.6700.

Input Arguments

collapse all

Input image, specified as a 2-D grayscale or RGB image.

Data Types: single | double | int16 | uint8 | uint16

Custom model of image features, specified as a niqeModel object. model is derived from natural scene statistics.

Output Arguments

collapse all

No-reference image quality score, returned as a nonnegative scalar. Lower values of score reflect better perceptual quality of image A with respect to the input model.

Data Types: double

Algorithms

NIQE measures the distance between the NSS-based features calculated from image A to the features obtained from an image database used to train the model. The features are modeled as multidimensional Gaussian distributions.

References

[1] Mittal, A., R. Soundararajan, and A. C. Bovik. "Making a Completely Blind Image Quality Analyzer." IEEE Signal Processing Letters. Vol. 22, Number 3, March 2013, pp. 209–212.

Version History

Introduced in R2017b

See Also

Functions

Objects

Go to top of page