2012-06-18 2 views
10

Что такое формат BMP для изображений в масштабе серого (особенно для 16 бит на пиксель)? wikipedia просто говорит о цветных изображениях для bmp.Что такое формат BMP для изображений в масштабе серого?

Update:

Просто для обновления и информации для будущих посетителей, я иду за PGM, как это несжатое и может поддерживать 16 разрядную серую шкалу. Другим вариантом было использование PNG, но он сжимает данные (что не то, что я хочу), как обсуждалось here. Также обратите внимание, что изображение может выглядеть искаженным, так как большинство мониторов поддерживают 256 цветов, а не 4096 для 16 бит. Таким образом, изображение будет насыщенным.

Было бы удивительно знать, что BMP почти беспомощный в случае серого для 16-битных изображений.
Спасибо за людей, которые помогли мне понять проблему.

+0

Вам нужно использовать другой формат, если вам нужна 16-битная серая шкала - я предлагаю PNG. –

+0

это потеря без сжатия? – gpuguy

+0

Да, PNG без потерь - он использует zlib для сжатия: https://en.wikipedia.org/wiki/Portable_Network_Graphics –

ответ

3

Для изображений в оттенках серого я использовал бы 8-битный BMP. 8-битные BMP могут кодировать цвета с палитрой. Однако, если вы его не используете, вы можете просто интерпретировать значения цвета [0...255] как цвета от черного (0) до белого (255).

Редактировать: Я бы не использовал BMP для 16-битных изображений в оттенках серого. Технически вы можете использовать формат BMP 16 бит на пиксель для кодирования 16-битных градаций серого (http://en.wikipedia.org/wiki/BMP_file_format#Pixel_format). Однако на практике это плохая идея (читайте: hacky), так как эта глубина предназначена для кодирования альфа, красного, зеленого и синего образцов пикселей.

Лучшим форматом для хранения 16-разрядных данных в градациях серого является PNG.

Также спросите себя, действительно ли вам нужна эта сверхточная точность? Для большинства приложений 8 бит на пиксель просто отлично (= если у вас нет конкретных требований к точности, это будет так).

+0

Это не помогает ему с его 16-битными изображениями в оттенках серого. – trumpetlicks

+0

Да. Вопрос был обновлен позже этой информацией. – jsalonen

+0

Извинения, не обратили внимание на то, что это обновление :-) – trumpetlicks

2

Вы правы, BMP знает только о цветах. Способ сделать это - создать палитру из 256 записей, где каждая запись имеет такое же значение для R, G, B: первая запись (0,0,0), вторая запись (1,1,1) и т. Д. Теперь сделайте изображение размером 8 бит на пиксель с помощью палитры.

Редактировать: учитывая ваше новое требование для 16-битных оттенков серого, я думаю, у вас есть 2 варианта: конвертировать в 8 бит или использовать другой формат, отличный от BMP.

+0

Это не помогает ему с его 16-битными изображениями в оттенках серого !!! – trumpetlicks

+0

@trumpetlicks, вопрос не упоминал 16 бит при написании. –

+0

Извинения, не обратили внимание на это как на обновление :-) Кроме этого, хороший ответ! – trumpetlicks

1

Как видно, TIFF и PNG поддерживают 16-битный оттенки серого.

http://en.wikipedia.org/wiki/Grayscale

Im предполагая, что эти изображения, которые вы хотите сохранить не просто для показа, но и для какой-то пост-обработки, где Вы нуждаетесь в дополнительной точности? Если нет, то я бы предложил удалить наименее значимые 8 бит и сохранить более простую 8-битную растровую карту с цветовой картой для сопоставления каждого значения с RGB со значением -> (значение, значение, значение) RGB-сопоставление.

Смежные вопросы