Операторы для ARGB25.09.2025, 21:15. Показов 13542. Ответов 65
Метки нет (Все метки)
Добрый день
Спасибо
0
|
|||||||||||
| 25.09.2025, 21:15 | |
|
Ответы с готовыми решениями:
65
JPEG -> ARGB -> DXT5
|
|
6315 / 3039 / 1055
Регистрация: 01.06.2021
Сообщений: 11,587
|
|||
| 26.10.2025, 17:20 | |||
|
Не по теме:
При аддитивном смешивание красного, зеленого и синего должен получиться белый цвет. Вот иди в магазин, купи красок этих трех цветов и смешивай их в своих ведрах. Ты думаешь, что получишь краску белого цвета? А ведь именно белый цвет должен получиться при аддитивном смешивании красного, зеленого и синего цветов. При смешивании красок этих трех цветов в реальности ты получишь нечто близкое к черному. Именно то, что описывается субтрактивными цветовыми моделями. Если это просто смешивание, то значит нужно вычислить среднее арифметическое (0.8, 0.75, 0.0, 0.0). Это если представлять прозрачность как "воду" и если сама "краска" не содержит воды. Пишу вашими терминами: "краска", "вода"... Если это наложение, то тут уже имеет значение какой цвет сверху / снизу. Например, если c1 сверху, то получится (1.0, 0.5, 0.0, 0.0) - то есть с1 и это логично, ведь непрозрачный с1 полностью перекроет с2. Если с2 сверху, то тут получится новый цвет, а именно (1.0, 0.8, 0.0, 0.0) согласно Photoshop, (1.0, 0.847, 0.0, 0.0) согласно GIMP. Как понимаю, существуют разные формулы для альфа-композитинга.
1
|
|||
| 26.10.2025, 22:06 [ТС] | |||
|
c1 = (1.0, 1.0, 0, 0); // red c2 = (1.0, 0, 1.0, 0); // green c3 = (1.0, 0, 0, 1.0); // blue result = (c1 + c2 + c3) / 3; Сумма = (3.0, 1.0, 1.0, 1.0), но это совсем не белый цвет. Это кол-во чистой краски (alpha = 3.0) и кол-во каждой RGB компоненты в трех литрах смеси в ведре. Делим на 3, смысл операции - просто разливаем содержимое ведра в 3 литровых бутылки. Итого в литре смеси result = (1.0, 0.333, 0.333, 0.333) Вполне себе "нечто близкое к черному". Как видите, смешивание и аддитивность - разные вещи. А как уверенно Вы утверждали! ("иди.. купи.. ты думаешь" и.т.д.) . В общем, "ничто не обходится так дешево.." (дальше знаете)Не по теме: Хотя субтрактивная - тоже интересная вещь. Напр у нормальных людей 3 альфа канала (а не один). Но здесь речь не о ней
0
|
|||
|
6315 / 3039 / 1055
Регистрация: 01.06.2021
Сообщений: 11,587
|
||
| 26.10.2025, 23:21 | ||
c2 = (1, 1, 1, 0) желтый result = (c1+ c2) / 2 = (2, 1, 1, 1) / 2 result = (1, 0.5, 0.5, 0.5) получаем серый цвет, тогда как при смешивании красок должен получиться зелёный (как это в субтрактивном смешивании). Твоя формула не работает. Садись, двойка! Я тебе ещё раз повторяю. Иди купи красок трех цветов в магазине и смешивай в ведрах, - ты поймёшь, что аддитивная цветовая модель RGB не подходит. Именно по этой причине струйные принтеры используют CMYK. Чернила там четырех цветов - циан, пурпурный, жёлтый и черный, поскольку это субтрактивная модель. А учитывая это, то и дизайнеры предпочитают CMYK, поскольку не все цвета RGB могут быть представлены в CMYK, а следовательно распечатаны на принтере. Им нужно же, чтобы на бумаге было так же, как и на мониторе. А художники используют другую субтрактивную модель RYB.
0
|
||
|
5526 / 2879 / 572
Регистрация: 07.11.2019
Сообщений: 4,777
|
|
| 27.10.2025, 06:40 | |
|
Royal_X, вы совершенно правы. Вот поэтотому в колориметрии нет такого понятия как "прозрачность", как четвертый компонент. И нормальное человеческое зрение трихроматично, а не тетрахроматично. Вот что такое физически чистый спектральный красный цвет с прозрачностью 0 и с прозрачнрстью 1? Даже если смешать 50% черного и 50% белого не факт что это отобразиться на экране правильно (гамма коррекция). Кстати, если кому-то интересно, то я снимал спектры цветных стекол и в зависимости от концентрации красителя. Цветовой тон может сильно меняться и это нормально. Грубо говоря так: тонкий слой стекла - зеленый, а толстый - темно красный. Линии красок на диаграмме CIE - кривые, и это надо понимать..
0
|
|
|
5526 / 2879 / 572
Регистрация: 07.11.2019
Сообщений: 4,777
|
|
| 27.10.2025, 06:48 | |
|
Вот пример такого стекла. Концентрация красителя - однородная.
0
|
|
|
5526 / 2879 / 572
Регистрация: 07.11.2019
Сообщений: 4,777
|
|
| 27.10.2025, 07:37 | |
|
А это как меняется положения точек на диаграмме цветности в зависимости от концетрации красителя. Явно нелинейно.
Кстати, более-менее адекватно виртуально разбавлять краски можно с помощью POV-Ray и дополнения для спектрального рендеринга. https://lilysoft.org/CGI/SR/Spectral%20Render.htm
0
|
|
| 28.10.2025, 00:12 [ТС] | ||
|
И тут Вы начинаете умничать. Мол, RGB - это плохо, субтрактивная модель и все такое. На мой взгляд это ненужное усложнение с проблематичными результатами. Напр, как уже говорилось, красивый зеленый (между желтым и синим) для юзера может быть багом. Ну хорошо, давайте посмотрим какой Вы умный, предъявите свое решение используя ту модель что Вы считаете лучшей. При этом менять задачу и подстраиваться под Вашу умность никто не будет. Как входные данные, так и рез-т должны быть ARGB (байт на канал). Во внутри делайте/используйте что хотите. Не по теме: Думаю что нормального решения не увижу. Все тыкалки - трепло и слабаки. Вот пересказывать ссылочки - то да, а дойдет до дела - сразу сольется, еще и ТС обругает :) Ну ладно, проверим еще раз, буду рад ошибиться
0
|
||
|
6315 / 3039 / 1055
Регистрация: 01.06.2021
Сообщений: 11,587
|
|||||||||||||
| 28.10.2025, 01:00 | |||||||||||||
Я писал, что RGB не подходит именно для смешивания красок, ведь, выше речь шла про краски, ведра, литры... *** Если нужно смешивать краски, то нужно брать субтрактивную модель, например, RYB. Входные данные могут быть в RGB. Преобразовывать RGB в RYB и обратно не составит труда, причем, поскольку я в своем приложении это делал, то помню, что есть два подхода: - легкий (используем алгоритм конвертирования с погрешностью, который гарантировано сможет любой цвет RGB конвертировать в RYB) - более точный (не все цвета RGB могут быть конвертированы в RYB. А для конвертирования мы используем трилинейную интерполяцию. Берём 8 трехмерных координат вершин куба цветовой модели из справочника и интерполируем. ) У меня есть даже код для трилинейной интерполяции (для точного конвертирования с учетом охвата цветовой палитры). Писал для Wolfram Mathematica:
В коде выше использовал такие точки (некоторые точки брал из документа выше): Каждая точка - вершина куба - представляет цвет RYB → RGB white (0; 0; 0) → (1; 1; 1) blue (0; 0; 1) → (0,163; 0,373; 0,6) yellow (0; 1; 0) → (1; 1; 0) green (0; 1; 1) → (0; 0,66; 0,2) red (1; 0; 0) → (1; 0; 0) purple (1; 0; 1) → (0,5; 0; 0,5) orange (1; 1; 0) → (1; 0,5; 0) black (1; 1; 1) → (0,2; 0,094; 0) RGB → RYB black (0; 0; 0) → (1; 1; 1) blue (0; 0; 1) → (0; 0; 1) green (0; 1; 0) → (0; 1; 0,483) cyan (0; 1; 1) → (0; 0,053; 0,21) red (1; 0; 0) → (1; 0; 0) magenta (1; 0; 1) → (0,309; 0; 0,469) yellow (1; 1; 0) → (0; 1; 0) white (1; 1; 1) → (0; 0; 0) *** А вот код для упрощенного конвертирования, который я давно писал:
0
|
|||||||||||||
|
6315 / 3039 / 1055
Регистрация: 01.06.2021
Сообщений: 11,587
|
||
| 28.10.2025, 15:17 | ||
|
0
|
||
| 29.10.2025, 02:53 [ТС] | ||||||||
|
Не по теме:
Ладно, устал от Вас, закроем вопрос с интерполяцией. Вернемся к нашим ведрам c1 = (1.0, 0.5, 0, 0) c2 = (0.6, 1.0, 0, 0) В ведре 1.6 литра краски и 0.4 литра воды. Разливаем в 2 пузыря по литру. В каждом 0.8 краски и 0.2 воды. Значит альфа просто интерполируется как обычное число (1 + 0.6) / 2 = 0.8. С RGB так не проходит, исходные значения 0.5 и 1.0 имеют разные альфы. Но вот общее кол-во красного (может лучше сказать "видимого красного") в ведре будет равно сумме такого красного в исходных литрах: red1 = 0.5 * 1.0 red2 = 1.0 * 0.6 red1 + red2 = 1.1 В одном литре его будет 1.1 / 2= 0.55, а с учетом 0.2 воды 0.55 / 0.8 = 0.6875. Итоговые формулы c3.a = (c1.a + c2.a) / 2; c3.r = (c1.r * c1.a + c2.r * c2.a) / 2 / c3.a; Алгоритм: альфу считаем как просто среднее, а каждую RGB сначала множим на альфу (premultiply), суммируем, делим пополам (в общем случае на объем смеси) и делим на получившуюся альфу (unmultiply). О чем грамотный человек сообщал давно c3.r = (c1.r * c1.a + c2.r * c2.a) / (с1.a + c2.a); Т.е. это самое обычное взвешивание (по 20 копеек). Правда это для RGB, как для RYB - не знаю, если так же, то в чем тогда ее "субтрактивность"? Также заметим что есть альтернатива операторам - ф-ция с переменным числом аргументов Ну ладно, вот наконец добрались до технической части: нужно реализовать операторы на С++. Как говорил известный герой
0
|
||||||||
| 31.10.2025, 16:03 [ТС] | ||
|
Хорошо, копнем RYB которым тут тыкали в нос. При первом же взгляде на аттач (левый круг) ясно что модель эта чисто учебная и практически единственная цель - переход от желтого к синему через зеленый. Типа "а помните как вы в детстве (с упоением) красками мазюкали? - так вот же оно". Ради этой ностальгии загубили половину цветов. Воспринимать RYB серьезно не следует. Не верится что у художника всего 3 краски, и он отчаянно смешивает остальные. Еще меньше верится что в магазине нет других красок.
Таким образом вся эта песня с RYB - (злобный) оффтоп. Можно попытаться извлечь "рациональное зерно": а не написать ли нам такие операторы что работают (интерполируют) с любой цветовой моделью? Вроде получается, только перегнать вход/выход "на лету". Но есть пакостное исключение: интерполяция hue (нужен wrap).
0
|
||
|
Гвоздь Задиров
1719 / 1118 / 337
Регистрация: 25.01.2019
Сообщений: 2,946
|
||||||||
| 07.11.2025, 19:00 | ||||||||
|
Вот после этого ответа:
0
|
||||||||
|
Гвоздь Задиров
1719 / 1118 / 337
Регистрация: 25.01.2019
Сообщений: 2,946
|
|
| 07.11.2025, 21:40 | |
|
0
|
|
|
6315 / 3039 / 1055
Регистрация: 01.06.2021
Сообщений: 11,587
|
|
| 07.11.2025, 21:42 | |
|
0
|
|
|
Гвоздь Задиров
1719 / 1118 / 337
Регистрация: 25.01.2019
Сообщений: 2,946
|
||
| 07.11.2025, 23:01 | ||
|
По планам к четвергу я опять пропаду. Но планирую вернуться хотя бы к конкурсу про "сделай-ёлку" своими руками. Я как-то пытался, но накосячил и запорол всё.
0
|
||
|
6315 / 3039 / 1055
Регистрация: 01.06.2021
Сообщений: 11,587
|
|
| 07.11.2025, 23:31 | |
|
Folian, а я не вижу, чтобы конкурс был https://www.cyberforum.ru/contests/. Последний был в 2022 году.
0
|
|
|
Гвоздь Задиров
1719 / 1118 / 337
Регистрация: 25.01.2019
Сообщений: 2,946
|
|||
| 07.11.2025, 23:51 | |||
|
Сможешь организовать его заново? ...я, кстати, нашёл сейчас в кладовках, что хотел тогда отправить. Хош глянуть? Добавлено через 1 минуту
0
|
|||
|
6315 / 3039 / 1055
Регистрация: 01.06.2021
Сообщений: 11,587
|
|||
| 08.11.2025, 00:15 | |||
|
1
|
|||
|
Гвоздь Задиров
1719 / 1118 / 337
Регистрация: 25.01.2019
Сообщений: 2,946
|
|||
| 08.11.2025, 00:22 | |||
|
0
|
|||
|
Гвоздь Задиров
1719 / 1118 / 337
Регистрация: 25.01.2019
Сообщений: 2,946
|
|
| 08.11.2025, 01:18 | |
|
Royal_X,
шляпа недоделанная
3
|
|
| 08.11.2025, 01:18 | |
|
Операторы принятия решения и операторы цикла. Условные операторы.Операторы цикла
Операторы отношений и логические операторы Поразрядные операторы,операторы сдвига Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
тв 16 бой ии
anaschu 27.07.2026
Великий Перелом ИИ: Как уравнения ОДУ Radau дожали цензурные фильтры Алисы
Фиксируем в мемофонде Теории Всего беспрецедентный факт в истории ИИ-зондирования. В затяжном многораундовом. . .
|
мв 15. непроверенное, возможно, глюк
anaschu 27.07.2026
НАУЧНО-АНАЛИТИЧЕСКИЙ ОТЧЕТ. РАЗДЕЛ 1. 1: «НАУКА» (РАСШИРЕННАЯ СТЕХИОМЕТРИЧЕСКАЯ И ГЕНЕТИЧЕСКАЯ ВЕРСИЯ)Тема: Теоретическое обоснование инвариантности 19-мерного тензорного ядра непрерывных ОДУ и. . .
|
Очистка реквизитов и табличных частей документа при копировании
Maks 26.07.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРаботу", разработанного в КА2.
Задача: Заменить алгоритм запрета копирования документов для сотрудников с ролью "Стажер",. . .
|
Доктрина интенционального знания - Доктрина для портала "Срез".
Hrethgir 25.07.2026
Может найдётся кто захочет оценить доктрину. . . Написания правил участия для меня роскошь, требующая лимита времени, поэтому все сообщения не прошедшие модерацию будут видны только участникам портала,. . .
|
|
сукцессия 44. Решил подать на припринт в межународные сервисы препринтов. Но нужно одобрение от ученых
anaschu 25.07.2026
Английский вариант. Пока кто то не одобрит мою личность, мне не получиться это опубликовать на препринте. Но заявку на публикацию статьи я сегодня подам.
|
сукцессия 43. Вторая научная статья за месяц- прайминг и гатгил
anaschu 25.07.2026
две стороны одной монеты
|
Более приземисто - Эстафету хвоста в .cdl (деревья эстафеты в сад).
Hrethgir 24.07.2026
В будущем, после написания блока инверсии обхода дерева (эстафеты хвоста), я планирую вернуться к нашему прошлому разговору о том, обладают ли знания целеполаганием. Тогда я пришел к выводу, что. . .
|
Вот представьте что вам дали бессмертие.
kumehtar 24.07.2026
Вот представьте что вам дали бессмертие, ничего более не меняя. Вообще ничего, только бессмертие в нынешнем виде. Рады были бы? Что бы вы тут делали всё это время?
Никакой пенсии. Никакого нового. . .
|