Показать сообщение отдельно
Старый 07.08.2016, 15:38   #1
Жрец Нефтиды
Модератор
 
Аватар для Жрец Нефтиды
 
Регистрация: 15.07.2012
Адрес: Санкт-Петербург
Сообщений: 1,395
Сказал(а) спасибо: 344
Поблагодарили 539 раз(а) в 368 сообщениях
Вес репутации: 623
Жрец Нефтиды has a reputation beyond reputeЖрец Нефтиды has a reputation beyond reputeЖрец Нефтиды has a reputation beyond reputeЖрец Нефтиды has a reputation beyond reputeЖрец Нефтиды has a reputation beyond reputeЖрец Нефтиды has a reputation beyond repute
По умолчанию Универсальный плагин микширования каналов YCbCrChannelMixer.dll для AviSynth

Частное применение плагина – преобразование BT.709 в BT.601.
В комплект также входит статья, в которой приведены формулы в символьном виде для преобразования RGB в YCbCr и обратно. Понятным русским языком описано, какие нужно произвести математические выкладки, чтобы на основании взятых из стандартов коэффициентов получить точные формулы для преобразования форматов. В русскоязычной Сети я не встретил сайтов, где использование формул было бы так понятно объяснено.
Ленивые закопипастили Сеть одними и теми же формулами, неточно округлёнными, без всяких объяснений, откуда эти формулы произошли. На основании математических расчётов я показал, к какой погрешности приводит такой иждивенческий подход.
В статье также описан уникальный эксперимент, который раньше никто не проводил. Был написан скрипт, который создаёт все возможные цвета для планарного формата. Каждый кадр – это свой цвет, всего их получается 14 с лишним миллионов. За счёт команд скрипта производится сравнение того цвета, который должен получиться строго по формулам, и того цвета, который выдаёт плагин Тритикала "ColorMatrix". В результате эксперимента было выявлено, что плагин Тритикала иногда считает с погрешностью. Не часто, примерно для одного цвета на 500 цветов, но всё же неточность есть неточность.
Мною был написан плагин, который выполняет все операции строго по законам. Добро лежит здесь:
https://yadi.sk/d/cPycYLKZtzMJp
Начинать читать рекомендую со статьи "Колорматрикс", потом читать "Инструкцию". Статья кишит формулами, как Кишан вшами. Чтобы они отображались, в Ворде должен быть включён "Редактор формул" 3.1 или позднее.
Получается, что российский жрец взял за жабры американского профессора.
Рекомендую также ознакомиться с исходным текстом программы YCbCrChannelMixer.cpp. Узнаешь много интересного о передаче данных из кадра в С++. Программа написана понятным сиплюсплюсному середняку способом, без труднопонимаемых программистских приёмов. Программа снабжена подробными комментариями на русском языке.
Исследуя исходники плагинов аналогичных типов от других писарей, я выявил вот какую недоработку. Известно, что в формате YV12 планар Y свой для каждого пикселя, а вот пара Cb и Cr общая для четырёх пикселей. Поэтому считать Cb и Cr достаточно, во-первых, один раз на две строки – и это в программах прописано. Во-вторых, на протяжении одной строки на каждые два смежных значения Y значения Cb и Cr тоже общие, и считать их тоже достаточно только один раз. Однако программно прописать расчёт Cb и Cr один раз на два Y довольно трудно, и у неееекоторого количества других программистов Cb и Cr в пределах одной строки считаются столько же раз, сколько и Y. На конечную точность конкретно такой двойной пересчёт никак не влияет, а вот ресурсы у компьютера он забирает почём зря.
Я же в своём плагине применил довольно хитрый приём, позволяющий избежать любых двойных расчётов.
В ближайшее время планирую написать инструкцию для новичка по компилированию от нуля на Microsoft Visual C++ 2008.
Жрец Нефтиды вне форума   Ответить с цитированием Вверх
2 пользователя(ей) сказали cпасибо:
DmitryKz (08.09.2016), vovke (09.03.2018)