图像处理之图像质量评价指标RMSE(均方根误差)

article/2025/9/15 12:06:23

一、RMSE基本定义

MSE全称为“Root Mean Square Error”,中文意思即为均方根误差,是衡量图像质量的指标之一。计算原理为真实值与预测值的差值的平方然后求和再平均,最后开根号,公式如下:
在这里插入图片描述
RMSE值越小,说明图像越相似。计算RMSE有四种方法:

方法一:计算RGB图像三个通道每个通道的MSE值再求平均值,最后开根号即可

方法二:直接使用matlab的内置函数immse()(注意该函数将所有图像当成灰度图像处理),再开根号即可

方法三:判断图像的维度,若是三维即为RGB图像求其RMSE,若是二维即为灰度图像求其RMSE

方法四:同方法三,对RMSE进行归一化处理

二、matlab实现RMSE

1、方法一:rgbRMSE.m

function rmsevalue= rgbRMSE(image1,image2)
% image1和image2大小相等
row=size(image1,1); % 图像的长
col=size(image1,2); % 图像的宽
image1=double(image1);
image2=double(image2);
MSE_R=double(zeros(row,col));
MSE_G=double(zeros(row,col));
MSE_B=double(zeros(row,col));
image1_R=image1(:,:,1);  % R通道
image1_G=image1(:,:,2);  % G通道
image1_B=image1(:,:,3);  % B通道
image2_R=image2(:,:,1);
image2_G=image2(:,:,2);
image2_B=image2(:,:,3);
% 计算RGB图像三个通道每个通道的MSE值再求平均值
for i=1:rowfor j=1:colMSE_R(i,j)=(image1_R(i,j)-image2_R(i,j))^2;MSE_G(i,j)=(image1_G(i,j)-image2_G(i,j))^2;MSE_B(i,j)=(image1_B(i,j)-image2_B(i,j))^2;end
end
MSE_RGB=sum(MSE_R(:))+sum(MSE_G(:))+sum(MSE_B(:)); % 将RGB三个通道计算的MSE值相加,注意(:)的用法
rmsevalue=sqrt(MSE_RGB/(row*col)); % 在MSE的基础上开根号
end

2、方法二:grayRMSE.m

function rmsevalue = grayRMSE(image1,image2)
% image1和image2大小相等
row=size(image1,1); % 图像的长
col=size(image1,2); % 图像的宽
image1=double(image1);
image2=double(image2);
rmsevalue=sqrt(sum(sum((image1-image2).^2))/(row*col)); % 在MSE的基础上开根号
end

3、方法三:rgbgrayRMSE.m

function rmsevalue = rgbgrayRMSE(image1,image2)
% image1和image2大小相等
row=size(image1,1); % 图像的长
col=size(image1,2); % 图像的宽% 一定要注意转为double类型
image1=double(image1);
image2=double(image2);dim=length(size(image1));% 图像的维度
if dim==2    % 灰度图像只有二维,彩色图像有三维sum_mse=sum(sum((image1-image2).^2));% 两次使用sum()函数,第一次使用sum将每行值相加,第二次使用sum将每行值的和再次相加
elsesum_mse=sum(sum(sum((image1-image2).^2)));% 三次使用sum()函数,第一次使用sum将每行值相加,第二次使用sum将每行值的和再次相加,第三次使用sum将每个通道值的和再次相加
end
rmsevalue=sqrt(sum_mse/(row*col));
end

4、方法四:NRMSE.m

function nrmsevalue = NRMSE(image1,image2)% image1和image2大小相等
row=size(image1,1); % 图像的长
col=size(image1,2); % 图像的宽% 一定要注意转为double类型
image1=double(image1);
image2=double(image2);dim=length(size(image1));% 图像的维度if dim==2    % 灰度图像只有二维,彩色图像有三维sum_mse1=sum(sum((image1-image2).^2));% 两次使用sum()函数,第一次使用sum将每行值相加,第二次使用sum将每行值的和再次相加sum_mse2=sum(sum(image1.^2));
elsesum_mse1=sum(sum(sum((image1-image2).^2)));% 三次使用sum()函数,第一次使用sum将每行值相加,第二次使用sum将每行值的和再次相加,第三次使用sum将每个通道值的和再次相加sum_mse2=sum(sum(sum(image1.^2)));
end
nrmsevalue=sqrt(sum_mse1/(row*col))/sqrt(sum_mse2/(row*col));
end

5、主函数main.m

clc;clear;close all;
rgbimage=imread('ultraman.jpg');
attack_rgbimage=imnoise(rgbimage,'gaussian',0,0.001);
figure(1),
subplot(121),imshow(rgbimage);
title('原始图像');
subplot(122),imshow(attack_rgbimage);
title('噪声攻击图像');grayimage=rgb2gray(imread('ultraman.jpg'));
attack_grayimage=imnoise(grayimage,'gaussian',0,0.01);
figure(2),
subplot(121),imshow(grayimage);
title('原始图像');
subplot(122),imshow(attack_grayimage);
title('噪声攻击图像');
% =============rgbRMSE.m============= %
rmsevalue1 = rgbRMSE(rgbimage,attack_rgbimage);
disp('RGB图像的均方根误差:');
disp(rmsevalue1);
% =============immse============= %
rmsevalue2 = sqrt(immse(rgbimage,attack_rgbimage)); % 在使用matlab内置函数immse的基础上开根号
disp('matlab函数的均方误差:');
disp(rmsevalue2);
% =============grayRMSE.m============= %
rmsevalue3 = grayRMSE(grayimage,attack_grayimage);
disp('灰度图像的均方根误差:');
disp(rmsevalue3);
% =============rgbgrayRMSE.m============= %
rmsevalue4 = rgbgrayRMSE(rgbimage,attack_rgbimage);
disp('RGB图像的均方根误差:');
disp(rmsevalue4);rmsevalue5 = rgbgrayRMSE(grayimage,attack_grayimage);
disp('灰度图像的均方根误差:');
disp(rmsevalue5);
% =============NRMSE.m============= %
rmsevalue6 = NRMSE(rgbimage,attack_rgbimage);
disp('RGB图像的归一化均方根误差:');
disp(rmsevalue6);rmsevalue7 = NRMSE(grayimage,attack_grayimage);
disp('灰度图像的归一化均方根误差:');
disp(rmsevalue7);

三、实现结果分析

1、输出结果

RGB图像:
在这里插入图片描述
对应灰度图像:
在这里插入图片描述
各种方法输出的RMSE值:
在这里插入图片描述
2、结果分析

1、注意每次运行主函数main.m文件,输出的RMSE值都会有细微差别,可以对比上下两张图。
在这里插入图片描述
2、仅以高斯噪声的参数为讨论,我们将主函数main.m文件椒盐噪声的方差改为0.001,可以与上方得到方差为0.01的RMSE结果进行对比,可以看出得到的RMSE要小很多,表示图像质量更好。

在这里插入图片描述
3、利用matlab的内置函数immse计算的灰度图像RMSE比我们自己写的方法计算的灰度图像RMSE要大一些。

4、本质上,方法三是方法一和方法二的结合体。


http://chatgpt.dhexx.cn/article/twZq51kx.shtml

相关文章

使用RMSE分析数据

一。数据概念和特征性 1. MSE(Mean Square Error)均方误差 是真实值与预测值的插值的平方然后求和平均。是绝对误差的平均值 能更好地反映预测值误差的实际情况. 2. RMSE(Root Mean Square Error)均方根误差 excel计算公式&am…

matlab计算分布模拟的rmse命令,用MATLAB求RMSE

满意答案 金牛座430 推荐于 2018.03.09 采纳率:55% 等级:12 已帮助:7454人 function fRMSE(h1,h2) %RMSE return RMSE(均方根误差) 求两图像的均方根误差 %input must be a imagehandle 输入图像句柄 %image fusion evaluate parameter 图…

matlab中rmse是什么意思,matlab sse和rmse

索引日期:2016-06-30 23:28:26 SSE,MSE,RMSE,R-square(转)_粽子_新浪博客 使用过Matlab的拟合、优化和统计等工具箱的网友,会经常___SSE,MSE,RMSE,R-square(转) SSE越接近于0,说明___ matlab里sse, rsquare, dfe, adjrsquare, r____百度知道 如题,SSE,RMSE,R-square…

rmse的作用

rmse的Emin的作用 链接http://t.csdn.cn/EkbZS RMSE vs MAE RMSE 与 MAE 的量纲相同,但求出结果后我们会发现RMSE比MAE的要大一些。 这是因为RMSE是先对误差进行平方的累加后再开方,它其实是放大了较大误差之间的差距。而MAE反应的就是真实误差。 因此在…

方差、标准差、均方差、均方根值(RMS)、均方根误差(RMSE)

文章目录 方差标准差均方差均方根值(RMS)均方根误差(RMSE) 方差 方差反映的是每个样本值与全体样本值的平均数之差的平方值的平均数。衡量随机变量或者一组数据与其期望的偏离程度。偏离程度越小,说明X的数值越稳定。…

RMSE、MAE和SD的基本概念

RMSE:均方根误差(Root-mean-square error), 观测值与真值偏差的平方和与观测次数m比值的平方根。 假如有2000次观测,即m2000,对于某一次(第i次)观测来说,y值是真实值,而h…

RMSE

RMSE 即 均方根误差 。 均方根误差亦称 标准误差,其定义为 ,i1,2,3,…n。在有限测量次数中,均方根误差常用下式表示:√[∑di^2/n]Re,式中:n为测量次数;di为一…

【转载】MSE(均方误差)、RMSE (均方根误差)、MAE (平均绝对误差)- 机器学习 - 线性回归之模型评估

MSE(均方误差)、RMSE (均方根误差)、MAE (平均绝对误差) 1、MSE(均方误差)(Mean Square Error) MSE是真实值与预测值的差值的平方然后求和平均。 范围[0,…

算法效果评估:均方根误差(RMSE)/ 标准误差

文章目录 1. 评估算法的效果2. 方差(Variance)2.1 总体方差2.1.1 在numpy中计算总体方差2.1.2 在pandas中计算总体方差 2.2 样本方差2.2.1 在numpy中计算样本方差2.2.2 在pandas中计算样本方差 3. 标准差 / 均方差 (Standard Deviation&#…

SQL中的主键

一、什么是主键 数据库主键是指表中一个列或者列的组合,其值能够唯一的标识表中的每一个行。这样的一列或者多列成为表的主键,通过它可以强制表的实体完整性。当创建或者更改表时可以通过定义PRIMARY KEY约束来创建主键,一个表只能有一个主键…

MyBatis主键返回

这篇文章介绍了MyBatis的主键返回方法 一.需求分析 当我们表的主键设置为自增&#xff0c;且插入数据后需要主键id时&#xff0c;就要使用主键返回的方法&#xff0c;来获取当前插入数据的主键。 表如下&#xff1a; 二.主键返回 1.使用selectKey 标签 < selectKey >…

SQL主键

在SQL中主键是唯一标示表中每一行的列或一组列。SQL可以使用PRIMARY KEY约束为表创建主键。如果主键只包含一列&#xff0c;则可以将PRIMARY KEY约束定义为列约束 。每个表只能有一个主键。参与主键的所有列必须定义为NOT NULL。在SQL中如果没有为这些列指定NOT NULL约束&#…

PostgreSQL主键自增

1.创建表设置主键自增长 CREATE TABLE tab_name(id SERLAL primary key,username varchar,password varchar )SERLAL 为自增关键字 2.修改表字段为主键自增 1 创建关联序列 CREATE SEQUENCE tab_id_seq START 1; -- tab_id_seq 为序列名称 -- 1 为序列起始数2.1 在字段默认…

关于Adobe软件安装提示FATAL: Payload ‘Camera Profiles Installer …information not found in Media_db.问题解决方法

安装Photoshop CS6失败&#xff1a;FATAL: Payload ‘Camera Profiles Installer …information not found in Media_db. 安装失败描述 产生原因&#xff1a;出现以上情况是因为之前系统安装过Adobe相关软件&#xff0c;并且卸载不干净导致的。 解决方法&#xff1a;找到系统盘…

Nature综述:微生物构成的氮循环网络(收藏)

微生物构成的氮循环网络 The microbial nitrogen-cycling network 翻译&#xff1a;翟志文 中科院遗传发育所 责编&#xff1a;刘永鑫 中科院遗传发育所 Nature Reviews Microbiology, [31.851] https://doi.org/10.1038/nrmicro.2018.9 Published: 05 February 2018 第一作者…

特定功能基因定量检测

1 检测对象 特定功能基因指的是具有某种特定作用的酶的编码基因&#xff0c;通过对该酶的基因进行qPCR定量&#xff0c;来确定该基因在样本中的拷贝数。目前研究较多的主要是氮循环、碳循环、硫循环、砷循环等相关的功能基因。微基生物可以利用qPCR定量检测样本中的碳循环、氮…

Quantile g-computation的介绍及R实现

目录 介绍 模型 qgcomp包的使用 例1&#xff0c;线性模型 例2&#xff1a;条件OR&#xff0c;logistic模型中的边际OR 例3&#xff1a;调整协变量&#xff0c;绘制估计值 例4&#xff1a;非线性&#xff08;和非同质性&#xff09; 例5&#xff1a;比较模型拟合和进一步…

Nature综述:微生物构成的氮循环网络

导读论文ID综述结构综述内容 1.综述研究背景、研究目的、研究内容概述2.氮全球生化循环圈&#xff1a;全球的氮库存、氮转化过程、氮通量3.微生物构成的氮化合物的转化4.固氮作用5.羟胺氧化成一氧化氮以及进一步氧化成亚硝酸盐6.亚硝酸盐向硝酸盐的氧化7.硝酸盐还原为亚硝酸盐的…

活性氧Propiconazole-d3 (nitrate),CAS No. 2699607-26-4

产品名称&#xff1a;活性氧Propiconazole-d3 (nitrate)&#xff0c;CAS No. 2699607-26-4 产地&#xff1a;西安 规格&#xff1a;1mg 5mg 10mg 纯度&#xff1a;99% 用途&#xff1a;仅用于科研 状态&#xff1a;固体/粉末 储藏条件&#xff1a;冷藏-20℃ 温馨提示&#xff…

TestProject Python SDK入门

使用TestProject Python SDK&#xff0c;您可以使用TestProject平台的功能执行Selenium和Appium测试。这意味着您将受益于HTML和PDF中的自动测试报告&#xff0c;Selenium浏览器驱动程序的自动更新和配置&#xff0c;协作报告仪表板&#xff0c;以及更多其他功能。 安装TestPro…