Маскировка верхних или нижних 4 битов приводит к тому же изображению - PullRequest
0 голосов
/ 14 октября 2018

Я обрабатываю 12-битное изображение, которое, к сожалению, сохраняется как 16-битный формат.Однако я не знаю, какие 4 из 16 битов бесполезны.Поэтому я попробовал три метода: замаскировать каждый пиксель 0xFFF0, 0x0FFF или 0x0FF0.Мне кажется, что итоговое изображение этих трех методов выглядит одинаково, но их значения md5 отличаются.Почему это происходит?Есть ли какие-либо различия, если я позже использую какое-либо из этих трех изображений для других целей?

1 Ответ

0 голосов
/ 14 октября 2018

Компьютерные мониторы могут отображать только 256 различных уровней яркости.Следовательно, 12-битное изображение игнорирует свои младшие 4 бита.Таким образом, вы не видите никакой разницы, обнуляя эти биты или нет.

Когда 12-битное изображение хранится в 16-битном целом числе, старшие 4 бита обычно остаются равными нулю, поэтому нет разницы, когда вы обнуляете их или нет.[Иногда значение пикселя масштабируется, чтобы занять весь 16-битный диапазон, но обычно это не так.]

Поэтому я не рекомендую маскировать биты.Обнуление младших 4 бит просто уменьшило точность значений в изображении, сделав его эквивалентным 8-битному изображению.Маскировать старшие 4 бита бессмысленно, потому что они уже равны нулю.

...