我在Matlab中有一个灰度图像。
我注意到,如果我将图像保持在"double"或"uint8"数组中,Matlab中的一些图像处理算法会受到影响。我意识到我在使用"double",即使"uint8"已经足够了。调用Matlab运动检测算法时,这似乎很重要。
这是由于"双"数字的表示吗?我知道"浮点计算有舍入误差",因为必须用32/64位来表示一个数字。
uint8
的计算具有比double
大得多的舍入误差。
您所看到的是因为MATLAB期望双图像在[0,1]的范围内。如果你的图像有一个更大的范围,它们可能会被一些算法剪辑掉。
除此之外,期望加倍可以得到更好(更精确(的答案。uint8
计算可能更快,尽管情况并非总是如此。