Какое изображение 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 значениями.
Есть много разных способов представить это в физической памяти. Например:
Использование массива MxN, где каждый элемент представляет собой 24-разрядное целое число. Каждое целое число состоит из красного, зеленого и синего значений (каждое 8-битное целое число), например, так:
red<<16 | green<<8 | blue
(или эквивалентноred*256*256 + green*256 + blue
).Использование 3 отдельных массивов MxN, по одному для каждого цветового канала.
Использование массива 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, содержащую вектор (целое число) для каждого пикселя, чтобы описать его цвет.
Определение далее дает вам представление о том, как значения пикселей могут быть нанесены на график / просмотрены в трехмерном пространстве. Представьте трехмерную диаграмму, где каждая ось представляет один из цветовых каналов. Что вы получаете, когда добавляете определенный цвет на диаграмму? Вектор, который описывает, где находится цвет в трехмерном пространстве, происходящем из начала координат!