如何更改图像中的像素值范围?

How can I change the pixel value range in an image?

我有值在 [0-65533] 范围内的灰度图像。我以前从未见过这个。这个范围是多少?

我想将值缩放到 [0-1200] 范围内。我尝试了 imadjust 函数,但它不起作用,因为此函数只需要 0.0 和 1.0 之间的值。

如何使用 imadjust 正确缩放这些值?

如果我没理解错的话,你可以这样做:

newimage=1200.*oldimage./65533;

该值范围表明您的灰度图像包含无符号的 16 位整数,即它是类型 uint16 (integer values from 0 to 65535). The documentation for imadjust 表明它支持这种类型的图像,但要获得结果仍然有点棘手你要。

无论图像类型如何,对比度限制始终应在 [0 1] 范围内。这将需要您自己通过除以 65535:

来重新缩放它们
scaledImage = imadjust(uint16(inputImage), [0 65533]./65535, [0 1200]./65535);

请注意,我还添加了转换 uint16(...) 只是为了绝对确保输入图像在传递给 imadjust 时是那种类型。如果您的输入图像恰好首先转换为 double 类型,则 imadjust 会期望图像的值也在 [0 1] 范围内,这会给您错误的输出这种情况。