2009-10-05 12 views

답변

1

int8은 Matlab에서 가장 작은 정수 값입니다. 이미지의 모든 픽셀 값을 오른쪽으로 이동하여 int8에서 8 비트 중 3 비트 만 사용할 수 있습니다. 대신 고정 소수점 툴박스에 액세스 할 수있는 경우

, 당신은 간단한 표기법 numerictype 개체를 사용할 수 있습니다 :

T = numerictype(s,w) 

CIT를합니다. matlab에 서에서 :

T = numerictype (S, W)에 고정 소수점와 numerictype 오브젝트를 작성 불특정 스케일링 서명 속성 값 S, 및 워드 길이 w를.

4

선형으로 크기를 조정하려면 각 픽셀 값을 255/7로 나누면됩니다 (즉, 원본 이미지가 행렬 I에 저장되어있는 경우 저해상도 이미지 J = I/(255/7)).

업데이트 : 내 스케일링 상수가 잘못되었습니다. 당신은 MATLAB에서 uint8 형식으로 저장된 이미지가있는 경우

Results

+0

최대 'uint8'값이 255 인 경우 4를 사용하는 반올림 값 8을 얻습니다. 0에서 7의 범위를 얻으려면 (255/7)로 나누어야합니다. – gnovice

+0

gnovice에게 감사의 말을 전하고 결과 이미지를 수정하고 업데이트했습니다. – Jacob

2

은 다음 픽셀 값은 3으로 값을 제한하기 위해 0에서 255까지 다양합니다 : 여기

은 예입니다 (따라서 단지 숫자 0 ~ 7 사용)의 정밀도의 비트는 다음 예와 같이 데이터를 스케일링 할 수 스케일링 값은도 7에 도시 된 바와 같이, 0의 범위로 한정 되더라도

>> data = uint8([0 23 128 200 255]); % Create some data of type uint8 
>> scaledData = data*(7/255) 

scaledData = 

    0 1 4 5 7 

>> class(scaledData) 

ans = 

uint8 

참고 그들을 저장하는 변수 이것이 가장 작은 MATLAB이기 때문에 여전히 uint8 데이터 유형입니다. 사용되지 않는 상위 비트는 단순히 0입니다.

스케일링 된 이미지 데이터를 파일로 출력하는 방법에 따라 (원하는 경우) 저장된 값의 정밀도를 8 비트 미만으로 줄일 수 있습니다 (예 : PNG files can store 4-bit types).

관련 문제