Matlab immse公式与预期不同

beq87vna  于 2023-05-01  发布在  Matlab
关注(0)|答案(1)|浏览(260)

我试图计算两个图像之间的MSE。
1.在Matlab中,immse函数包含一个意想不到的公式(norm(x(:)-y(:),2).^2)/numel(x)
1.我的老师使用的是mean((x(:)-y(:)).^2)
我看到用平均数的方法得到的结果差不多是另一种方法的一半。
根据Wikipedia,我老师的版本似乎是正确的。
什么是正确的版本使用?为什么会有这些差异呢?

ou6hu8tu

ou6hu8tu1#

它们是计算同一事物的不同形式,它们确实给予了相同的答案。我们可以用一个例子来测试这是一样的

rng(0);
x = rand(3,3); 
y = rand(3,3);
immse( x, y );       % = 0.20527
mean((x(:)-y(:)).^2) % = 0.20527

这就是原因。..
根据范数文档,norm(v,2)等价于norm(v)或欧几里得范数,定义为平方和的平方根

您自己的维基百科链接将MSE定义为

我们可以合并这些(使用来自两个来源的n = Nk = i的一致字母)
norm(v,2)的定义和这个表达式的平方:

假设:

并代入MSE方程:

这是在immse中完成的计算:(norm(x(:)-y(:),2).^2)/numel(x)
因此Wikipedia和MATLAB的immse给出的定义是相同的。Wiki文章的介绍性句子甚至提到了规范
因为它是从欧几里德距离的平方导出的[。..]
这相当于你老师的定义。他们使用meani=1..n执行求和和除以n,并计算与平方欧几里德范数相同的delta的平方。

相关问题