基于NIQE算法的图像无参考质量评价算法matlab仿真
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.部分核心程序
clc; 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)]);