Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) |
![]() |
![]() |
#1 |
高级会员
注册日期: 2019-11-21
帖子: 3,006
声望力: 66 ![]() |
![]()
如果这是相同大小256 * 200的RGB图像A,B的MSE的公式,则如何获取每个像素的线图,其中x轴表示像素,y轴表示MSE值
MSE = reshape(平均值(平均值((double(A)-double(B))。^ 2,2),1),[1,3]) 只有两个图像A,B。该图应说明MSE表示的A和B的每个像素之间的变化。 回答: 如果您想显示“每个像素之间”的变化,那么您所显示的不再是均方误差了-没有求平均值。 (除非您打算在三个颜色平面上取平均值,但我不建议这样做:R,G,B的变化对人类视觉系统的影响并不显着。如果确实必须这样做,则可能需要对它们进行加权,例如2:4:1代表更具代表性,但这仍然是临时性的,不太可能就什么差异看起来最大的问题提供非常准确的想法。) 当然,要查看每个像素的误差是完全合理的,但是我不建议使用折线图来显示它们。这很可能令人困惑,而不是提供信息。而是将它们显示为图像: errs = (double(A)-double(B)).^2; image(errs / max(errs(:))); axis image; 然后可以通过肉眼与A和B进行比较,以查看哪些图像区域/特征/ ...对应于更严重的错误。每个像素的亮度和颜色指示错误的数量及其在R,G和B平面上的分布方式。 另一方面,也许您真正需要的是图像各个行或列的均方误差。在这种情况下,按照上述方法创建errs之后,请使用mean计算行或列均值;这将为您提供256 x 1 x 3图像或1 x 200 x 3图像;现在,我建议您分别绘制R,G,B曲线,除非您(如上所述,我认为这可能很愚蠢)坚持求平均。 row_errs = mean(errs,2); % this is now of size [n,1,3] 现在row_errs(:,:,1)是MS row_errs(:,:,2)红色错误的向量, row_errs(:,:,2)是MS row_errs(:,:,2)绿色错误的向量,等等。您可以将其馈送到plot 。 更多&回答... |
![]() |
![]() |