将8位灰度图像转换为7位灰度图像

时间:2017-09-24 11:48:46

标签: image matlab grayscale

我想将原始的8位深度灰度图像转换为7位深度灰度图像(像素值应在[0 127]范围内。

我使用以下语法,但值等于255的像素将更改为128(看似它们在除法后舍入,即127.5更改为128 )。如何解决此问题并在分割后将像素值保持在[0 127]范围内?

RGB = imread('camera_man128x128.png')% read 8-bit image
RGB = RGB*0.5; %change pixel value to be in range to 0~127
               %however pixels with value 255 change to 128.

2 个答案:

答案 0 :(得分:2)

最简单的方法是使用bitshift

RGB = bitshift(RGB, -1);

这将每个uint8值的位模式向右移动,相当于乘以2 -1 (即除以2),这样255将成为127

答案 1 :(得分:1)

将数据类型转换为double,然后乘以0.5。使用floor向负无穷大舍入,然后转换回uint8

~/.bash_profile