如何更改图像中的像素值范围?
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]
范围内,这会给您错误的输出这种情况。
我有值在 [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]
范围内,这会给您错误的输出这种情况。