Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 其它 > 资料存档
资料存档 资料存档
回复
 
主题工具 显示模式
旧 2019-12-14, 08:46 PM   #1
高级会员
 
注册日期: 2019-11-21
帖子: 2,864
感谢他人: 0
有 0 帖获得 0 感谢
声望力: 59
poster 正向着好的方向发展
帖子 计算均方误差时的逻辑误差

a=imread('pic1.jpg'); b=0.25*a; c=4.0*b; figure; imshow(c); MSE = reshape(mean(mean(((a) - (c)).^2,2),1),[1,3]) 代码工作正常,没有任何错误。 a的大小是256 * 256 * 3 RGB类型。但是,有两个问题:
  1. 现在从逻辑上讲,对于RGB波段,MSE应该为零,因为将结果c乘以4.0应该会逆转运算。但是,MSE得出的值为1.1361 1.2780 1.2902在b=0.27.*a时进行测试时也观察到了相同b=0.27.*a ;然后c=3.703703704.*b ;
  2. 在MSE公式中,在删除双0.5346 0.6132 0.6275数据类型时,误差最小化到0.5346 0.6132 0.6275
谁能清楚地解释为什么会这样,有什么补救办法?



回答:

看一下变量a的数据类型。它可能是一个uint8,这意味着b也将成为包含舍入值的uint8-换句话说,您每个像素会丢失两位信息。

您提到了“双重数据类型”,但是我看不到在代码中使用它的位置。

如果您以a = double(imread('pix1.jpg'))开始;那么您的MSE应该接近零(我希望它的大小为256 * 256 * 3 * eps(即舍入误差))。



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

主题工具
显示模式

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

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



所有时间均为北京时间。现在的时间是 06:06 PM


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

SEO by vBSEO ©2009, Crawlability, Inc.