2017-09-24 5 views
0
내가 (픽셀 값의 범위에 있어야 7 비트 깊이 그레이 스케일 이미지에 내 원래의 8 비트 깊이 그레이 스케일 이미지를 변환 할

[0 127].변환 8 비트 그레이 스케일 이미지에 7 비트 그레이 스케일 이미지

다음 구문을 사용하지만 255 값의 픽셀은 128으로 변경됩니다 (즉, 127.5128으로 변경됨). 즉,이 문제를 해결하고 [0 127] 범위 내 픽셀 값을 유지할 수 있습니다. division?

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로 곱하십시오. 음수 무한대 방향으로 반올림하고 uint8으로 다시 변환하려면 floor을 사용하십시오.

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

이를 수행하는 가장 쉬운 방법은 bitshift 사용하는 2 -1 곱셈이 오른쪽 각 uint8 값 중 하나의 비트 패턴을 이동

RGB = bitshift(RGB, -1); 

이 등가 (즉 2로 나눈 값)이므로 255127이됩니다.