GrayScale (8 бит на пиксель) Манипулирование пикселями изображения в Java - PullRequest
1 голос
/ 18 апреля 2011

Я слышал, что данные в полутоновых изображениях с глубиной цвета 8 бит хранятся в первых 7 битах байта каждого пикселя и последнем битесохранить в целости и сохранности!Таким образом, мы можем хранить некоторую информацию, используя последний бит всех пикселей, это правда?

Если да, то как данные могут быть интерпретированы в отдельных пикселях?Я имею в виду нет красного, синего и зеленого!так что эти биты означают?

И как я могу вычислить среднее значение всех пикселей изображения?Я предпочитаю использовать чистые классы Java, а не JAI или другие третьи стороны.

Обновление 1

BufferedImage image = ...; // loading image
image.getRGB(i, j);

Метод getRGB всегда возвращает int , что больше, чем один байт !!!Что мне делать?

1 Ответ

0 голосов
/ 18 апреля 2011

Насколько я понимаю, глубина цвета в 8 бит означает, что на пиксель приходится 8 бит (то есть один байт), и что красный, зеленый и синий - все это значение.например, оттенки серого = 192 означает красный = 192, зеленый = 192, синий = 192.Там нет 7 бит плюс еще 1 бит.

AFAIK, вы можете просто использовать нормальное среднее.Однако я бы использовал long для суммы и удостоверился бы, что каждый байт не подписан, т.е. `b & 0xff

РЕДАКТИРОВАТЬ: Если серая шкала скажет 128 (или 0x80), я ожидаю, что RGB будет 128,128,128или 0x808080.

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