1.算法运行效果图预览
2.算法运行软件版本
MATLAB2022a
3.算法理论概述
NIQE(Naturalness Image Quality Evaluator)算法是一种无参考图像质量评价算法,旨在评估图像的自然度,即图像看起来是否像自然场景。 NIQE基于一组“质量感知”特征,并将其拟合到MVG模型中。质量感知特征源于一个简单但高度正则化的NSS模型。然后,将给定的测试图像的NIQE指标表示为从测试图像中提取的NSS特征的MVG模型与从自然图像语料中提取的质量感知特征的MVG模型之间的距离。整个过程由五步操作完成:
3.1 空域NSS特征提取
3.2 图像块选取
一旦图像的系数由(1)式计算出,整张图像会被分割成P × P P\times{P}P×P的块。然后从每个块的系数中计算出特殊的NSS特征。方差(3)在之前的基于NSS的图片分析中常常被忽视。但是它在结构化图片信息上有丰富的内容。这些内容可以被用来量化局部图片的锐利度。(从美学上认为一幅图片越锐利它的成像效果会越好,平滑模糊代表一种视觉信息的潜在损失。)将P × P P\times{P}P×P的图像块用b = 1 , 2 , . . . , B b=1,2,...,Bb=1,2,...,B做标记,再用一种直接的方法计算每一块b bb平均局部偏移范围:
3.3 MVG模型
通过将自然图像块与MVG模型密度函数拟合,可以得到一个简单的NSS特征模型,MVG模型密度函数为:
3.4 NIQE指标
NIQE分数的计算,是通过计算待测图片MVG模型参数和上面得到的自然图片MVG模型参数的距离来得到(如下式)。不过选择patch的准则(1)不应用到待测图片上,而只用在上面自然图片模型参数估计上。原因如下:
4.部分核心程序
clear;
close all;
warning off;
addpath(genpath(pwd));
rng('default')
Rbk = 48;
Cbk = 48;
Rlap = 0;
Clap = 0;
%加入不同的噪声,估计图像质量
im1 = imread('1.bmp');
quality1= func_quality(im1,Rbk,Cbk,Rlap,Clap);
im2 = imnoise(im1,'salt & pepper',0.001); %加入不同的噪声,估计图像质量
quality2= func_quality(im2,Rbk,Cbk,Rlap,Clap);
im3 = imnoise(im1,'salt & pepper',0.01); %加入不同的噪声,估计图像质量
quality3= func_quality(im3,Rbk,Cbk,Rlap,Clap);
im4 = imnoise(im1,'salt & pepper',0.05); %加入不同的噪声,估计图像质量
quality4= func_quality(im4,Rbk,Cbk,Rlap,Clap);
im5 = imnoise(im1,'salt & pepper',0.1); %加入不同的噪声,估计图像质量
quality5= func_quality(im5,Rbk,Cbk,Rlap,Clap);
im6 = imnoise(im1,'salt & pepper',0.25); %加入不同的噪声,估计图像质量
quality6= func_quality(im6,Rbk,Cbk,Rlap,Clap);
figure;
subplot(231);
imshow(im1);
title(['质量估计值:',num2str(100/quality1)]);
subplot(232);
imshow(im2);
title(['质量估计值:',num2str(100/quality2)]);
subplot(233);
imshow(im3);
title(['质量估计值:',num2str(100/quality3)]);
subplot(234);
imshow(im4);
title(['质量估计值:',num2str(100/quality4)]);
subplot(235);
imshow(im5);
title(['质量估计值:',num2str(100/quality5)]);
subplot(236);
imshow(im6);
title(['质量估计值:',num2str(100/quality6)]);