Канал синего цвета в 24-битном формате BMP

Я хочу найти синие области на 24-битном изображении BMP. Как я могу найти канал синего цвета? Как можно получить доступ к каналу синего цвета?

2 ответа

24-битное растровое изображение (.bmp) имеет заголовок размером 54 байта. После этого идут пиксельные данные. На пиксель используются 3 байта: синий, зеленый, красный, в этом порядке.

Чтобы увидеть это, сделайте изображение размером 1x1 пиксель в краске и сделайте один пиксель синим. Если вы посмотрите файл.bmp в гекседиторе, вы увидите, что 55-й байт имеет значение FF (синий), а 2 после этого - 00 (без зеленого, без красного). Конечно, вы также можете увидеть это, если напишите программу на C, которая читает все байты. Если вы напечатаете значения от 55-го байта до конца, вы увидите то же самое.

Пиксельные данные должны быть выровнены, это называется шагом. Страйд рассчитывается следующим образом:

stride = (width * bpp) / 8;

В 3x3 bmp шаг будет (3 * 24) / 8 = 9. Это значение должно быть округлено до числа, кратного 4 (в данном случае 12), поэтому для правильного выравнивания нужно 3 дополнительных байта в строке. биты. Итак, если все байты синего цвета, то после 54 байтов вы получите:

FF 00 00 FF   00 00 FF 00   00 00 00 00
FF 00 00 FF   00 00 FF 00   00 00 00 00
FF 00 00 FF   00 00 FF 00   00 00 00 00

Для 4x4 bmp stride = (4 * 24) / 8 = 12. 12 делится на 4, поэтому дополнительные байты не нужны. Для 5x5 ударов в минуту, stepde = (5 * 24) / 8 = 15, поэтому требуется 1 дополнительный байт на строку.

Чтобы узнать больше информации о формате файла bmp, посетите эту страницу википедии. Надеюсь это поможет!

24-битный пиксельный формат (24 бит / пиксель) поддерживает 16,777,216 различных цветов и сохраняет значение 1 пикселя на 3 байта. Каждое значение пикселя определяет красный, зеленый и синий образцы пикселя (8.8.8.0.0 в обозначении RGBAX). Конкретно в порядке (синий, зеленый и красный, 8 бит на каждый образец).

... отсюда.

Другие вопросы по тегам