Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) |
![]() |
![]() |
#1 |
高级会员
注册日期: 2019-11-21
帖子: 3,006
声望力: 66 ![]() |
![]()
有没有办法在尺寸为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的平方根。 更多&回答... |
![]() |
![]() |