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

如果这是相同大小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 。



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


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

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



所有时间均为北京时间。现在的时间是 20:34


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