图像标准化需要什么?

What is the need of normalisation in image?

我在网上看到这段代码

imgN = double(img-min(img(:)))/(max(img(:)-min(img(:))));

对 0..1 中的图像进行标准化。这是什么意思?它还显示此错误

Error using  / 
Integers can only be combined with integers of the same class, or scalar doubles.

在 MATLAB 中,许多函数都会对图像中的值范围做出假设。通常,图像存储为 uint8double。在 uint8 的情况下,范围是 0...255(这是 uint8 中的所有可能值)。对于 double,MATLAB 从 0...1 中选择了一个值范围。要正确使用 imshowimwrite 等函数,您的 double 图像必须正确缩放,否则某些像素无法正确显示。

代码中有一个小错误:它基本上是一个除法 a / b,其中 adouble(img - min(img(:)))b(max(img(:)) - min(img(:)))。如果您的输入图像是 double 类型,这将工作正常。但是,如果它是 uint8 或任何其他类型,则分子 a 将转换为 double,而分母 b 保持不变,例如uint8。你会有一个师double / uint8。 MATLAB 在错误消息中告诉您,它不能在除法中混合类型。一个简单的解决方案是也将分母 b 转换为 double:

imgN = double(img-min(img(:))) / double(max(img(:)-min(img(:))));