Какое изображение RGB?

Я начал изучать обработку изображений, и я застрял здесь, пожалуйста, помогите мне.

Изображение в градациях серого представлено матрицей M на N, где значение каждого элемента матрицы равно [0,255], что представляет интенсивность.

пример:

    row 1 : 2,120
    row 2 : 190, 40

Это матрица 2 на 2, которая является серым изображением.

Теперь я запутался и не смог понять, как представить RGB-изображение, где каждое значение или интенсивность пикселя представляет собой смесь трех значений.

Определение говорит, что

RGB-изображение представлено массивом M-by-N-by3, где каждый 3-вектор соответствует интенсивностям красного, зеленого и синего каждого пикселя.

Но я не могу понять вышеприведенное предложение. Пожалуйста, помогите мне понять смысл.

Заранее спасибо.

2 ответа

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

В цветных изображениях каждый пиксель может быть представлен вектором из трех чисел (каждое в диапазоне от 0 до 255) для трех основных цветовых каналов: красного, зеленого и синего. Эти три значения красного, зеленого и синего (RGB) используются вместе для определения цвета этого пикселя. Например, фиолетовый может быть представлен как 128, 0, 128 (смесь умеренно интенсивного красного и синего без зеленого).

Теперь я возьму ваш пример, чтобы дать вам понимание данного определения.

Скажем, цветное изображение матрицы 2 на 2:

row1: зеленый, синий

row2: красный, черный

Если я представлю эти цвета выше с его значениями RGB:

row1: [0,255,0],[0,0,255]

строка2: [255,0,0],[0,0,0]

Итак, M-by-N-by 3 описывает, что M - это количество строк матрицы, N - количество столбцов матрицы, а 3 - размер вектора, который представляет значение RGB. Вот представление RGB в пиксельной сетке.

Концептуально, M-by-N RGB-изображение представляет собой 2D-матрицу, где каждый элемент матрицы представляет собой вектор с 3 значениями.

Есть много разных способов представить это в физической памяти. Например:

  1. Использование массива MxN, где каждый элемент представляет собой 24-разрядное целое число. Каждое целое число состоит из красного, зеленого и синего значений (каждое 8-битное целое число), например, так: red<<16 | green<<8 | blue (или эквивалентно red*256*256 + green*256 + blue).

  2. Использование 3 отдельных массивов MxN, по одному для каждого цветового канала.

  3. Использование массива MxNx3, где 3-е измерение - это "измерение цвета". Вы бы индексировали это как img[i,j,k], с k равный 0, 1 или 2. Таким образом, один пиксель образован 3 элементами массива.

Последний формат описан в вопросе. Такой трехмерный массив обычно реализуется как одномерный массив с преобразованием индексации следующим образом:

index = i + j * M + k * N*M;

или как это:

index = i * N*3 + j * 3 + k;

или в другом другом порядке, это не имеет значения (здесь мы предполагаем индексирование на основе 0). Таким образом, массив имеет M*N*3 элементы, и три элемента из него вместе представляют один пиксель.

(A) Пиксели RGB обычно сохраняются в виде целых чисел (32 бита). Таким образом, каждый канал представлен 8 битами (диапазон от 0 до 255). Первые 8 бит (32-24) числа представляют альфа-канал, следующие 8 бит - красный канал (24-16), следующие 8 бит - зеленый канал (16-8) и последние 8 бит - синий канал, Таким образом, каждое число в массиве фактически представляет прозрачность (альфа) и 3 значения интенсивности соответствующих цветовых каналов и, таким образом, также может рассматриваться как вектор. M-by-N-by3 описывает матрицу MxN, содержащую вектор (целое число) для каждого пикселя, чтобы описать его цвет.

Определение далее дает вам представление о том, как значения пикселей могут быть нанесены на график / просмотрены в трехмерном пространстве. Представьте трехмерную диаграмму, где каждая ось представляет один из цветовых каналов. Что вы получаете, когда добавляете определенный цвет на диаграмму? Вектор, который описывает, где находится цвет в трехмерном пространстве, происходящем из начала координат!

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