2017-09-24 231 views
0

我想將原始8比特深度的灰度圖像轉換爲一個7位的深度灰度圖像(像素值應在範圍[0 127]轉換8位灰度級圖像以7位灰度級圖像

我使用下面的語法,但值等於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. 
+0

在MATLAB中不能有7位數據類型。儘管如此,您可以將數據重新調整爲0-127整數。你想要那個嗎? –

+0

@SardarUsama是的,沒錯。我想將值存儲在'unit8'中,但我只想從0〜127改變數據比例。 – VSB

+1

將您的數據進行平鋪或除以分割後的數據中的最大值,然後乘以127 – Adriaan

回答

1

將您的數據類型轉換爲double,然後乘以0.5。使用floor向負值無窮大回合,然後轉換回uint8

RGB = uint8(floor(double(RGB)*0.5)); 
2

做到這一點的最簡單的方法是使用bitshift:由2 -1

RGB = bitshift(RGB, -1); 

此移位每個uint8值之一的比特模式添加到右,相當於乘法(即除以2),這樣255將變成127