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

时间:2019-07-10 15:37:08

标签: image matlab range scale image-manipulation

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

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

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

2 个答案:

答案 0 :(得分:3)

该值范围表明您的灰度图像包含无符号的16位整数,即其类型为uint16(整数值从0到65535)。 imadjust的文档指出它支持这种类型的图像,但是要获得所需的结果仍然有些棘手。

无论图像类型如何,对比度限制始终期望在[0 1]范围内。这将需要您自己除以65535来重新缩放它们:

scaledImage = imadjust(uint16(inputImage), [0 65533]./65535, [0 1200]./65535);

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

答案 1 :(得分:0)

如果我理解正确,则可以执行以下操作:

newimage=1200.*oldimage./65533;