作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
有没有办法在 matlab 中找到尺寸为 256*256*3 的真彩色图像 A、B(比如说)之间的均方误差? M1 和 M2 矩阵的数学公式如下所示
mean sq err=1/n*n { summation (square[M1(i,j)-M2(i,j)])}
i代表行,j代表列
最佳答案
好了,开始写吧!一次吃一个字节的编程大象(即使是最小的)!
我们如何形成两个图像的差异?首先,将它们转换为 double,以防它们是 uint8 图像,这很常见。做吧!尝试一下!通过这样做来学习编写 matlab 代码,并分块进行,这样您就可以按照您所做的去做。
首先,您没有告诉我们这是否是所有三个 channel 的 MSE。你的公式表明我们应该为每个红色、绿色和蓝色 channel 得到不同的 MSE。
double(M1) - double(M2)
现在,您将如何计算每个差值的平方?使用 .^ 运算符。
(double(M1) - double(M2)).^2
接下来,均方误差意味着我们取所有行和列的平均值。一种简单的方法是使用 mean 函数。此调用取各行的平均值。
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 的平方根。
关于matlab - 如何在matlab中找到均方误差,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3692335/
我是一名优秀的程序员,十分优秀!