Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 其它 > 资料存档
资料存档 资料存档
回复
 
主题工具 显示模式
旧 2019-12-10, 20:48   #1
poster
高级会员
 
注册日期: 2019-11-21
帖子: 3,006
声望力: 66
poster 正向着好的方向发展
帖子 如何在MATLAB中找到均方误差

有没有办法在尺寸为256 * 256 * 3的真实颜色的2个图像A,B(say)之间找到matlab中的均方误差?矩阵M1和M2的数学公式如下

mean sq err=1/n*n { summation (square[M1(i,j)-M2(i,j)])} 我代表行,j代表列



回答:

好吧,开始写作!一次吃一个编程大象(甚至最小的大象)一个字节!

我们如何形成两个图像的差异?首先,将它们转换为double,以防它们是uint8图像,这很常见。做吧!试试吧!学习这样做的方式,并逐步编写matlab代码,以便您可以照做。

首先,您尚未告诉我们这是否要成为所有三个渠道的MSE。您的公式表示,对于每个红色,绿色和蓝色通道,我们都应该以不同的MSE作为结束。

double(M1) - double(M2) 现在,您将如何形成每个差异的平方?使用。^运算符。

(double(M1) - double(M2)).^2 接下来,均方误差表示我们对所有行和列均取均值。一个简单的方法是使用均值函数。此调用在各行中取平均值。

mean((double(M1) - double(M2)).^2,2) 下一个取平均值。

mean(mean((double(M1) - double(M2)).^2,2),1) 结果将是1x1x3向量。使用reshape函数将其转换为1x3向量。 (挤压功能也有帮助。)将它们打包成一行,我们得到了...

MSE = reshape(mean(mean((double(M1) - double(M2)).^2,2),1),[1,3]); 如果您觉得这很复杂,那么最好将其分成几行,并附上一些注释,以提醒您以后要做的事情。

但关键是,您可以通过在matlab中将操作分解为可管理的部分来创建操作。

编辑:

在许多情况下,人们希望RMSE(均方根误差)的单位与原始数字相同。它只是MSE的平方根。



更多&回答...
poster 当前离线   回复时引用此帖
回复


发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛禁用 表情符号
论坛启用 [IMG] 代码
论坛启用 HTML 代码



所有时间均为北京时间。现在的时间是 23:22


Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.