Преобразование 8 бит в 16 бит - PullRequest
4 голосов
/ 22 июня 2011

У меня есть изображение, которое захватывает 8 бит. Я хочу преобразовать 8-битные значения в 16-битные. Я использовал следующее

short temp16 =  (short)val[i] << 8 ;

, где val - массив 8-битных выборок.

Вышеприведенное утверждение делает шумным. Кто-нибудь может предложить метод для преобразования 8 бит в 16 бит?

Ответы [ 3 ]

4 голосов
/ 22 июня 2011

Является ли val [] подписанным или беззнаковым 8bit? Приведите его к unsigned (при условии, что у вас есть обычное соглашение 0 = самый темный, 255 = самый яркий), затем приведите его к подписанному короткому (я полагаю, это то, что вы хотите, так как обычный 'короткий' по умолчанию подписан).

3 голосов
/ 22 июня 2011

Чистый битрейфтинг не даст вам чистый белый цвет. 0xff << 8 == 0xff00, а не 0xffff, как ожидалось. </p>

Один прием - использовать val [i] << 8 + val [i] и запоминать правильные типы данных (размер, подпись). Таким образом, вы получите 0x00 -> 0x0000 и 0xff -> 0xffff.

0 голосов
/ 06 октября 2013
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...