Канал синего цвета в 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 бит на каждый образец).
... отсюда.