Подтвердить что ты не робот

Преобразовать оттенки серого в представление RGB?

Как преобразовать значение шкалы серого (0-255) в значение/представление RGB? Он предназначен для использования в SVG-изображении, который, похоже, не поддерживает оттенки серого, только RGB...

Примечание: это не RGB → оттенки серого, на которые уже ответили в другом вопросе, например. Преобразование RGB в оттенки серого/интенсивность)

4b9b3361

Ответ 1

Быстрый и грязный подход - повторить интенсивность оттенков серого для каждого компонента RGB. Итак, если у вас есть оттенки серого 120, он переводится в RGB (120, 120, 120).

Это быстро и грязно, потому что эффективная яркость, которую вы получаете, зависит от фактической яркости субпикселей R, G и B устройства, которое вы используете.

Ответ 2

Если у вас есть значение оттенка серого в переменной и вы хотите создать новое значение в форме 0x00RRGGBB, то быстрый способ сделать это:

int rgb = grey * 0x00010101;

или эквивалент на выбранном вами языке.

Ответ 3

Шкала серого означает, что все значения имеют одинаковую интенсивность. Установите все каналы (в RGB), равные значению серого, и вы получите черно-белое изображение RGB.

Ответ 4

Преобразование оттенков серого в RGB прост. Просто используйте R = G = B = значение серого. Основная идея заключается в том, что цвет (если смотреть на мониторе с точки зрения RGB) является аддитивной системой.

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

Таким образом, добавление красного к зеленому дает желтый цвет. Добавьте в синий цвет этот микс в равных количествах, и вы получите нейтральный цвет. Полный [красный, зеленый, синий] = [255 255 255] дает белый цвет. [0,0,0] дает монитор черный. Промежуточные значения, когда R = G = B, равны, будут давать номинально нейтральные цвета заданного уровня серого.

Небольшая проблема зависит от того, как вы просматриваете цвет, это может быть не совсем нейтрально. Это будет зависеть от того, как ваш монитор (или принтер) откалиброван. Есть интересные глубины цветной науки, с которой мы могли бы перейти. Я остановлюсь здесь.

Ответ 5

Нельзя установить R, G и B в одно и то же значение (значение шкалы серого) для каждого пикселя, чтобы получить правильный оттенок серого?

Ответ 6

Вы также можете взглянуть на мое решение Более быстрый оптимизированный способ конвертирования изображения RGB8 в изображение RGB32. Серый канал просто повторяется во всех других каналах.

Цель заключалась в том, чтобы найти постное возможное решение для преобразования с использованием x86/SSE.