MATLAB爱好者论坛-LabFans.com

MATLAB爱好者论坛-LabFans.com (https://www.labfans.com/bbs/index.php)
-   资料存档 (https://www.labfans.com/bbs/forumdisplay.php?f=72)
-   -   计算均方误差时的逻辑误差 (https://www.labfans.com/bbs/showthread.php?t=26673)

poster 2019-12-14 20:46

计算均方误差时的逻辑误差
 
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类型。但是,有两个问题:
[LIST=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 ;[*]在MSE公式中,在删除双0.5346 0.6132 0.6275数据类型时,误差最小化到0.5346 0.6132 0.6275[/LIST]谁能清楚地解释为什么会这样,有什么补救办法?



[B]回答:[/B]

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

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

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



[url=https://stackoverflow.com/questions/5375280]更多&回答...[/url]


所有时间均为北京时间。现在的时间是 23:29

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