【图像评价】无参考图像质量评价NIQE【含Matlab源码 681期】

news2024/11/26 14:41:16

⛄一、无参考图像质量评价NIQE简介

理论知识参考:通用型无参考图像质量评价算法综述

⛄二、部分源代码

function [mu_prisparam cov_prisparam] = estimatemodelparam(folderpath,…
blocksizerow,blocksizecol,blockrowoverlap,blockcoloverlap,sh_th)

% Input
% folderpath - Folder containing the pristine images
% blocksizerow - Height of the blocks in to which image is divided
% blocksizecol - Width of the blocks in to which image is divided
% blockrowoverlap - Amount of vertical overlap between blocks
% blockcoloverlap - Amount of horizontal overlap between blocks
% sh_th - The sharpness threshold level
%Output
%mu_prisparam - mean of multivariate Gaussian model
%cov_prisparam - covariance of multivariate Gaussian model

% Example call

%[mu_prisparam cov_prisparam] = estimatemodelparam(‘pristine’,96,96,0,0,0.75);

%----------------------------------------------------------------
% Find the names of images in the folder
current = pwd;
cd(sprintf(‘%s’,folderpath))
names = ls;
names = names(3:end,:);%
cd(current)
% ---------------------------------------------------------------
%Number of features
% 18 features at each scale
featnum = 18;
% ---------------------------------------------------------------
% Make the directory for storing the features
mkdir(sprintf(‘local_risquee_prisfeatures’))
% ---------------------------------------------------------------
% Compute pristine image features
for itr = 1:size(names,1)
itr
im = imread(sprintf(‘%s\%s’,folderpath,names(itr,:)));
if(size(im,3)==3)
im = rgb2gray(im);
end
im = double(im);
[row col] = size(im);
block_rownum = floor(row/blocksizerow);
block_colnum = floor(col/blocksizecol);
im = im(1:block_rownumblocksizerow, …
1:block_colnum
blocksizecol);
window = fspecial(‘gaussian’,7,7/6);
window = window/sum(sum(window));
scalenum = 2;
warning(‘off’)

feat = [];

for itr_scale = 1:scalenum

mu = imfilter(im,window,‘replicate’);
mu_sq = mu.*mu;
sigma = sqrt(abs(imfilter(im.*im,window,‘replicate’) - mu_sq));
structdis = (im-mu)./(sigma+1);

feat_scale = blkproc(structdis,[blocksizerow/itr_scale blocksizecol/itr_scale], …
[blockrowoverlap/itr_scale blockcoloverlap/itr_scale], …
@computefeature);
feat_scale = reshape(feat_scale,[featnum …
size(feat_scale,1)*size(feat_scale,2)/featnum]);
feat_scale = feat_scale’;

if(itr_scale == 1)
sharpness = blkproc(sigma,[blocksizerow blocksizecol], …
[blockrowoverlap blockcoloverlap],@computemean);
sharpness = sharpness(😃;
end

feat = [feat feat_scale];

im =imresize(im,0.5);

end
function quality = computequality(im,blocksizerow,blocksizecol,…
blockrowoverlap,blockcoloverlap,mu_prisparam,cov_prisparam)

% Input1
% im - Image whose quality needs to be computed
% blocksizerow - Height of the blocks in to which image is divided
% blocksizecol - Width of the blocks in to which image is divided
% blockrowoverlap - Amount of vertical overlap between blocks
% blockcoloverlap - Amount of horizontal overlap between blocks
% mu_prisparam - mean of multivariate Gaussian model
% cov_prisparam - covariance of multivariate Gaussian model

% For good performance, it is advisable to use make the multivariate Gaussian model
% using same size patches as the distorted image is divided in to

% Output
%quality - Quality of the input distorted image

% Example call
%quality = computequality(im,96,96,0,0,mu_prisparam,cov_prisparam)

% ---------------------------------------------------------------
%Number of features
% 18 features at each scale
featnum = 18;
%----------------------------------------------------------------
%Compute features
if(size(im,3)==3)
im = rgb2gray(im);
end
im = double(im);
[row col] = size(im);
block_rownum = floor(row/blocksizerow);
block_colnum = floor(col/blocksizecol);

im = im(1:block_rownumblocksizerow,1:block_colnumblocksizecol);
[row col] = size(im);
block_rownum = floor(row/blocksizerow);
block_colnum = floor(col/blocksizecol);
im = im(1:block_rownumblocksizerow, …
1:block_colnum
blocksizecol);
window = fspecial(‘gaussian’,7,7/6);
window = window/sum(sum(window));
scalenum = 2;
warning(‘off’)

feat = [];

⛄三、运行结果

在这里插入图片描述

⛄四、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1]杨璐,王辉,魏敏.基于机器学习的无参考图像质量评价综述[J].计算机工程与应用. 2018,54(19)

3 备注
简介此部分摘自互联网,仅供参考,若侵权,联系删除

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/92474.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

013 单词速记

converse adj.相反的,颠倒的 v.交谈 con(加强语气)vers(转反转)e->反转 n.conversation 谈话,对话 adv.conversely 相反的 controversy n.争端 contro(counter) 相反 vers 转 lead to ~ 导致争端 contraversial 有争议…

MySQL-内置函数

文章目录内置函数日期函数字符串函数数学函数其他函数内置函数 日期函数 current_date();current_time();current_timestamp(); 应用: 创建生日表 插入数据: 创建评论区 采用datetime 时间戳自动填充时间 查询两分钟之内发的帖子 评论时间2min…

C语言期末集训1(大一,超基础,小猫猫大课堂配套练习)——顺序结构和分支结构的题

更新不易,麻烦多多点赞,欢迎你的提问,感谢你的转发, 最后的最后,关注我,关注我,关注我,你会看到更多有趣的博客哦!!! 喵喵喵,你对我…

安科瑞配电室环境监控系统解决方案-Susie 周

1、概述 配电室综合监控系统包括智能监控系统屏、通讯管理机、UPS电源、视频监控子系统(云台球机、枪机)、环境监测子系统(温度、湿度、水浸、烟感)、控制子系统(灯光、空调、除湿机、风机、水泵)、门禁监…

Redis分布式锁 - 基础实现及优化

应用场景 互联网秒杀抢优惠卷接口幂等性校验 代码示例 案例1 - StringRedisTemplate基础实现 package com.wangcp.redisson;import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.StringRedisTemplate; import org…

以流量为王的时代,如何获得不错的流量,泰山众筹如何脱颖而出?

由于互联网、疫情等因素的影响,实体业务变得越来越困难。许多实体店已经开始转向在线电子商务,但运营一个好的电子商务平台并不容易。没有稳定的流量和忠实的用户,很难达到理想的效果。那到底如何才能获得不错的“流量”呢?泰山众…

第十四届蓝桥杯集训——JavaC组第十三篇——for循环

第十四届蓝桥杯集训——JavaC组第十三篇——for循环 目录 第十四届蓝桥杯集训——JavaC组第十三篇——for循环 for循环(重点) 倒序迭代器 for循环死循环 for循环示例 暴力循环 等差数列求和公式 基础循环展开 循环控制语句 break结束 continue继续 for循环(重点) f…

【图像融合】多尺度奇异值分解图像融合【含Matlab源码 2040期】

⛄一、多尺度奇异值分解的偏振图像融合去雾算法简介 立足于提高传统算法的适应性,提高去雾图像的质量,本文设计了如图 2 所示的去雾算法流程。首先,使用基于最小二乘方法计算出更加精确的偏振信息,改善了以往偏振信息计算不准确的…

基于Qt(C++)实现(PC)学生信息管理系统【100010043】

学生信息管理系统 一、系统指南 本系统为表格式的学生信息管理系统,提供了文件新建、打开及保存功能,还可在表格中对数据进行增加、删除、修改、搜索,下面将一一介绍这些功能 1、新建文件 新建文件将会产生一个全新的空表格,…

基于java+springmvc+mybatis+vue+mysql的少儿编程管理系统

项目介绍 在国家重视教育影响下,教育部门的密确配合下,对教育进行改革、多样性、质量等等的要求,使教育系统的管理和运营比过去十年前更加理性化。依照这一现实为基础,设计一个快捷而又方便的网上少儿编程教育网站系统是一项十分…

原来这就是BFC,遇到样式问题别瞎搞了

看到一篇前端面试题,第一个问题是 什么是BFC ?,一下子唤起了我的辛酸回忆,那是在七月,在沪漂找工作的路上,预约的一个电话面试,眼看着时间就要到了,人生第一次进星巴克,提…

leetcode 337. 打家劫舍 III-[python3图解]-递归+记忆化搜索

题目 小偷又发现了一个新的可行窃的地区。这个地区只有一个入口,我们称之为root。除了root之外,每栋房子有且只有一个“父“房子与之相连。一番侦察之后,聪明的小偷意识到“这个地方的所有房屋的排列类似于一棵二叉树”。 如果 两个直接相连…

【Python百日进阶-数据分析】Day130 - plotly柱状图(条形图):go.bar()实例1

文章目录4.2 plotly.graph_objects条形图4.2.1 go的基本条形图4.2.2 分组条形图4.2.3 堆叠条形图4.2.4 带悬停文本的条形图4.2.5 带直接文本标签的条形图4.2.6 使用uniformtext控制文本大小4.2.7 旋转条形图标签4.2.8 自定义单个条颜色4.2.9 自定义单个条的宽度4.2.10 自定义单…

NetInside网络分析为企业IT工作保驾护航(二)

前言 某企业的DMS经销商在线系统,最近一段时间运维人员经常接到反馈,DMS使用出现大量访问慢的情况,针对此情况进行监测分析。 该企业已部署NetInside流量分析系统,使用流量分析系统提供实时和历史原始流量,重点针对DMS系统性能进…

MobileNetV3基于NNI剪枝操作

NNI剪枝入门可参考:nni模型剪枝_benben044的博客-CSDN博客_nni 模型剪枝 1、背景 本文的剪枝操作针对CenterNet算法的BackBone,即MobileNetV3算法。 该Backbone最后的输出格式如下: 假如out model(x),则x[-1][hm]可获得heatma…

Spring框架04(Spring框架中AOP)

一、spring中bean的生命周期 1.singleton 容器启动的时候创建对象,容器正常关闭时销毁对象 2.prototype 获取对象的时候创建对象,spring容器不负责对象的销毁 生命周期的过程: 1.调用无参创建对象 2.调用set方法初始化属性 3.调用初始化…

知识付费系统源码,可直接打包成app、H5、小程序

知识付费,在近几年来,越来越受到大家的关注。知识付费系统源码是将知识通过互联网渠道变现的方式。以知识为载体,通过付费获得在线知识以及在线学习所带来的收益。知识付费平台主要以分享知识内容,内容分为直播、录播、图文等形式…

【从零开始学爬虫】采集收视率排行数据

l 采集网站 ​【场景描述】采集收视率排行数据。 【源网站介绍】收视率排行网提供收视率排行,收视率查询,电视剧收视率,综艺节目收视率和电视台收视率信息。 【使用工具】前嗅ForeSpider数据采集系统 【入口网址】http://www.tvtv.hk/archives/category/tv 【采集内容】 …

产线工控安全

场景描述 互联网飞速发展,工业4.0的大力推行,让工控产线更加智能化,生产网已经发展成一个组网的计算机环境。这些工控产线组网中的所有工控设备现在统称为主机。 信息化虽然提高各大企业的生产效率,但也会遭遇各类安全问题&…

Problem B: 算法10-15~10-17:基数排序

Problem Description 基数排序是一种并不基于关键字间比较和移动操作的排序算法。基数排序是一种借助多关键字排序的思想对单逻辑关键字进行排序的方法。 通过对每一个关键字分别依次进行排序,可以令整个关键字序列得到完整的排序。而采用静态链表存储记录&#xf…