Ваша задача состоит в том, чтобы взять sRGB-изображение размером 24 BPP и вывести одно и то же изображение с 3-кратным увеличением в красный, зеленый и синий подпиксели. Полученное изображение будет полностью сделано из чисто черного, красного, зеленого и синего пикселей.
Каждый пиксель из исходного изображения при увеличении создает компоновку из 9 субпикселей, которые могут быть либо включены, либо выключены (т.е. их соответствующий цвет или черный). Конкретное расположение использует три столбца красного, зеленого и синего в следующем порядке:
(Обратите внимание, что границы этих «пикселей» предназначены только для демонстрации.)
Поскольку каждый из девяти субпикселей может быть только включен или выключен, вам придется квантовать входное изображение и использовать разные шаблоны субпикселей для достижения 3 уровней яркости.
Для каждого субпикселя в изображении:
- Для уровней цвета 0-74 все подпиксели должны быть черными.
- Для уровней цвета 75-134 средний подпиксель должен быть соответствующего цвета, а два других должны быть черного цвета.
- Для уровней цвета 135-179 средний подпиксель должен быть черным, а два других должны быть соответствующего цвета
- Для уровней цвета 180-255 все три подпикселя должны иметь свой соответствующий цвет
Я выбрал эти диапазоны уровней, потому что они выглядели хорошо
Примените это преобразование к каждому пикселю изображения и выведите изображение с субпиксельным увеличением.
Однопиксельные примеры
RGB (40, 130, 175) будет производить этот шаблон:
RGB (160, 240, 100) будет производить этот шаблон:
Примеры полного изображения
Изображения получены из Википедии
Правила и примечания
- Вход и выход могут быть в любом удобном формате, будь то фактические файлы изображений или (возможно, вложенные) списки значений RGB.
- Вы можете предположить, что пиксели находятся в цветовом пространстве sRGB с 24BPP.
Удачного игры в гольф!
источник
Ответы:
JavaScript (Node, Chrome, Firefox), 111 байт
Формат ввода / вывода: матрица
[R,G,B]
значений.Попробуйте онлайн! (всего один пиксель)
Как?
Все пороговые значения кратны 15. Вместо проведения явных сравнительных тестов немного короче проверить битовую маску, где каждый бит представляет интервал из 15 значений (за исключением старшего значащего бита, который отображается на одно значение).
Мы закодировать от , как1 и в качестве0 чтобы максимизировать число ведущих нулей.
Мы получили:
000000000111111111
для верхнего и нижнего пикселей (000000111000011111
для среднего пикселя (комментарии
пример
Следующий фрагмент кода обрабатывает голову Моны Лизы (64x64). Не работает на Edge.
Показать фрагмент кода
источник
Желе , 27 байт
Монадическая ссылка, принимающая список (изображение) списков (строк) списков (пикселей). Каждый пиксель состоит из трех целых[0,255] ,
[r, g, b]
который дает результат в том же формате.Попробуйте онлайн! В этом примере берется изображение два на два, где верхний левый пиксель является первым примерным пикселем, верхний правый пиксель является вторым примерным пикселем, нижний левый пиксель является черным пикселем, а нижний правый пиксель является белым пиксели.
Как?
источник
3⁼þ¤
выполняет внешнее произведение с[1,2,3]=[1,2,3]
получением[[1=1,2=1,3=1],[2=1,2=2,2=3],[3=1,3=2,3=3]]
который[[1,0,0],[0,1,0],[0,0,1]]
.Wolfram Language (Mathematica) , 186 байт
Вход и Выход - списки значений RGB
Попробуйте онлайн!
Wolfram Language (Mathematica), 243 байта
этот второй код является функцией, которая принимает в качестве входного изображения и выводит изображение
(я не знаю, почему люди были смущены в комментариях)
Итак, если вы кормите это img
в эту функцию
вы получите этот вывод
источник
i
это изображение.C # (интерактивный компилятор Visual C #) , 157 байт
Печатает RGB вывода. Вывод разделен новой строкой и не выровнен. Первоначально я использовал битовую маску для
1
включения и0
выключения, но затем я увидел ответ Арно и понял,0
что включение и1
выключение позволяют сохранять байты в числе. Ссылка TIO содержит образец изображения размером 4 на 2 пикселя.Попробуйте онлайн!
источник
APL + WIN, 102 байта
Запрашивает двумерную матрицу пикселей в виде 24-битных целых чисел так, как они выглядят на изображении
Попробуйте онлайн! Предоставлено Dyalog Classic
Выводит 2-мерную матрицу из 24-битных целых чисел преобразованного изображения. Большая часть кода обрабатывает форматирование ввода и вывода.
Пример: возьмите изображение 2 x 2, состоящее из образцов пикселей
Входные данные:
Вывод:.
источник
Ржавчина - 281 байт
Эта строка представляет собой функцию, которая отвечает этой задаче, однако ее ввод на самом деле представляет собой данные в формате файла TGA, как описано на paulbourke.net , вместе с предварительно проанализированной шириной и высотой изображения в пикселях. Он возвращает данные пикселей для вывода в виде байтов в векторе, в 9 раз превышающем размер входных данных пикселей.
Эта вторая строка является функцией main (), которая может преобразовать входной файл с именем i.tga в выходной файл с именем o.tga, вызвав функцию z из первой строки, без использования каких-либо внешних библиотек. Он обрабатывает разбор ширины / высоты, создает заголовок для выходного файла и чтение файла + запись. Это добавило бы 402 байта, если вызов требовал файлового ввода-вывода, в общей сложности 683. Это полезно для тестирования.
источник