LINUX.ORG.RU

Новая разработка: Фильтр, улучшающий любое видео. Требуются специалисты ⓐⓔⓢⓣⓗⓔⓣⓘⓒ

 , ,


2

3

Идет активная разработка SECAM-фильтра, альфа-версии от разных участников уже доступны.

Версия mertvoprog для ffmpeg:

У ffmpeg’овских фильтров куча ограничений, geq максимум 9 регистров может, ну и вообще оно люто костыльное и медленное. На полноценном ЯП лучше выйдет, тупо жахнем yuv420p через пайп в него и из него.

Мы почитали матчасть и вроде наконец поняли, как SECAM-факелы образуются: из-за того, что там цветность и свет в одной модуляции, а полоса цветности внутри полосы цветности — в местах резких перепадов яркости сигнал яркости пересекает сигнал цветности, и декодер цветности некоторое время отслеживает не тот сигнал. Чтобы это произошло — производные сигналов в точке пересечения должны быть примерно равны (посему это случается не в любых таких местах, а лишь в некоторых).

Выраженно красные/синие факелы потому, что из-за намного большей ширины полосы яркости для декодера цветности сигнал вне полосы цветности — это лютый перегруз.

Следить «не за тем сигналом» декодер может долго. Мы нашли запись арабского телевидения, там это особенно наглядно: на однотонных зелёных простынях факелы просто огромные.

Факелы же в произвольных местах кадра возникают из-за шума в сигнале яркости: резкие перепады возникают в произвольных местах. Ещё перепад яркости в VBI тоже может восприниматься декодером цвета, отчего возникает полоса факелов у левого края.

Короче, надо будет это всё формализовать и закодить. А то в ffmpeg-реализацию заложены более грубые принципы, а ещё она ложно срабатывает на кадрах без цветности, чего вообще быть не должно. Можно даже изи добавить режим «пропадания цвета», с выводом OSD PAL/AUTO/MESECAM/AUTO :3

#!/bin/sh
ffmpeg -i video.mp4 -lavfi '
nullsrc=s=80x360, geq=lum=128:cb=128+tan(random(12389)*1.5)*4*sin(Y/10):cr=128[blue_noise];
nullsrc=s=80x360, geq=lum=128:cr=128+tan(random(22893)*1.5)*5*sin(Y/10):cb=128[red_noise];
[0:v] geq=
lum=p(X+0.5*sin((Y+100*T)/5)\,Y)+(random(3)*10-5):
cb=p(X+2*sin((Y+T*20)/10)\,Y):
cr=p(X+2*sin((2+Y+T*20)/10)\,Y)
[distorted];
[blue_noise][red_noise] blend=all_mode=lighten [secam_noise];
[secam_noise] scale=w=6*iw:h=ih,setsar=1/1 [secam_noise_widened];
[distorted] geq=cr=
st(mod(X\,8)+1\, clip(lum(X/SW\,Y/SH)-cr(X\,Y)/5-cb(X\,Y)/3\, 0\, 255))\;
st(9\, cos(Y*3+5*T)*8)\;
cr(X\,Y)+clip(exp(
max( max( max(
ld(clip(1\, 1\, ld(9)))\,
ld(clip(2\, 1\, ld(9)))
)\, max(
ld(clip(3\, 1\, ld(9)))\,
ld(clip(4\, 1\, ld(9)))
))\, max( max(
ld(clip(5\, 1\, ld(9)))\,
ld(clip(6\, 1\, ld(9)))
)\, max(
ld(clip(7\, 1\, ld(9)))\,
ld(clip(8\, 1\, ld(9)))
)))
/51)*sin(cos(Y*3)+sin(T))*5-lum(X/SW\,Y/SH)/2\, 0\, 255-cr(X\,Y)):
cb=cb(X\,Y):lum=lum(X\,Y) [distorted_fired];
[distorted_fired][secam_noise_widened] blend=shortest=1:all_mode=grainmerge [out]' -map '[out]' \
 -filter_threads 2 \
result.mp4

Результат: https://0x0.st/iBRI.mp4

##########

Версия Thetan для frei0r: https://github.com/xoffy/secamiz0r

Результат: https://0x0.st/iBRU.mp4

Представляю местной публике свой генератор факелов (цветовых помех) SECAM: https://github.com/xoffy/secamiz0r.

Факелы SECAM это такие красные и синие (редко зелёные и чёрные) горизонтальные полосы, характерные для системы цветного аналогового ТВ SECAM, от которых каждый из вас когда-то давно пытался избавиться. В отличие от бездуховных помех NTSC и PAL, наши родные советские помехи намного зрелищнее и красивее. Одним словом, aesthetic.

Если вы и ваша тульпа по каким-то причинам не понимаете, о чём идёт речь, то вот.

Проєкт реализован в виде плагина для frei0r — замшелого свободного API для видеоэффектов.

Сборка:

$ git clone https://github.com/xoffy/secamiz0r
$ cd secamiz0r
$ meson build
$ cd build
$ ninja
$ mkdir -p ~/.frei0r-1/lib
$ cp secamiz0r.so ~/.frei0r-1/lib/secamiz0r.so
Для сборки нужны: meson, инклуды frei0r и библиотека gavl.

Проверка через ffmpeg:

$ ffplay -f lavfi -i testsrc=size=768x576 -vf 'frei0r=secamiz0r'
Результат должен быть примерно таким.

Фильтр имеет 4 параметра (вещественные числа от 0 до 1), которые в ffmpeg можно указать следующим образом:

-vf 'frei0r=secamiz0r:0.3|0.15|0.15|0.3'

  1. процент случайных факелов;
  2. процент факелов на перепадах яркости;
  3. процент факелов на перенасыщенных местах;
  4. цветовой шум.

Ещё важно учитывать, что для корректной работы плагинов frei0r в ffmpeg требуется, чтобы изображение было строго 4:3, иначе по какой-то причине всё съедет. Можно использовать либо 640x480, либо 768x576.

Кроме того, плагины frei0r можно применить в видеоредакторах Pitivi или Kdenlive.

★★

Последнее исправление: Moderators (всего исправлений: 4)

Ответ на: удаленный комментарий

у меня проигрывается. андроид MX Player.
во втором, вроде, шумов меньше

teod0r ★★★★★
()
Ответ на: комментарий от teod0r

На мой взгляд, шум в версии от mertvoprog реализован реалистичнее, но эффект волнистости слишком силен. Но самое главное, что в альфа-версии нет никакой корреляции между шумами и изображением, это просто рандом, что очень сильно бросается в глаза. А также полно других аспектов, над которыми требуется работа, научное исследование, построение модели. Требуются специалисты.

Moderators ★★
() автор топика
Ответ на: комментарий от Moderators

эффект волнистости слишком силен

Да волны и вырубить можно, фигли.

это просто рандом

Ну тащемта, у Нас ввиду нахождения в зоне слабого приёма среди кучи не согласованных между собой вышек и частого возникновения тропосферной проводимости — нередко на одной частоте смешивались несколько каналов, что выражалось в ползущем по одному кадру лёгком силуэте другого. HBI такого силуэта (а то и не одного) давал именно эффект таких вот рандомных не связанных с кадром полос.

Их же, но по всему кадру, даёт шум по яркости, что более распространённый случай и обширно встречается на чужих записях. Но шум по яркости, разумеется, должен быть виден на кадре, в том числе точками, которые факелы не провоцируют.

Впрочем, в этот прототип никакой реалистичной матчасти не заложено; если рандом ещё более-менее реалистичен, то факелы за белым областями совершенно не соответствуют действительности. @Thetan явно преуспели в наблюдательности, сразу выделив, что факелы провоцируют именно перепады яркости.

mertvoprog
()

Кстати, @Thetan, а как Вы пришли к выводу по п.4, что между U и V бывают наводки? Их ведь не может быть исходя из сути SECAM (U и V передаются по очереди). Или наводки возникают уже в приёмном тракте, когда запомненный сигнал U смешивается с принимаемым V, и наоборот? Может, есть более разумное объяснение?

И ещё и в Вашей, и в Нашей матчасти есть огромная дыра: в целом понятно, где факелы должны начинаться, но совершенно непонятно, когда они должны заканчиваться — как декодер цвета должен понять, что он «следит» не за той волной, и переключаться на правильный? Мы использовали синусоиды, Вы — уровень сигнала цветности в начальной точке. Но скорее всего, не верно ни то, ни другое, поскольку факелы могут быть очень разной длины, особенно это видно по чёрно-белым участкам, где сигнал цветности, по идее, одинаковый, но факелы получаются разными.

mertvoprog
()

Ещё вчера хотел создать пост и даже написал его, теперь не знаю, публиковать ли? Будет почти дубль.

Thetan ★★★
()
Ответ на: комментарий от mertvoprog

Наша матчасть и есть одна огромная дыра.

Кстати, @Thetan, а как Вы пришли к выводу по п.4, что между U и V бывают наводки? Их ведь не может быть исходя из сути SECAM (U и V передаются по очереди). Или наводки возникают уже в приёмном тракте, когда запомненный сигнал U смешивается с принимаемым V, и наоборот? Может, есть более разумное объяснение?

Мы пересмотрели кучу таких записей, и вживую часто видели, что факелы очень интенсивно появляются именно в бирюзовых, ярко-зелёных, темно-синих и ещё каких-то областях: https://www.youtube.com/watch?v=DE11x6e3_x8. Не зная, как это формализовать, Мы просто решили брать разницу U и V и, кажется, получилось хорошо. Так что разумного объяснения не будет.

Ещё Мы часами читали этот текст и пытались его осилить (но он имеет отношение к видакам и прочему оборудованию):

Correct SECAM decoding requires that the subcarrier be present throughout the active line, and not just in coloured areas. If an attempt is made to inlay text, as illustrated here where an analogue satellite receiver’s menu is being displayed, the loss of subcarrier during the white characters causes the automatic gain control on the decoder to set the colour gain to maximum with the result that severe coloured noise is present on the text and for a short while afterwards until the gain has settled back to the correct value.

но совершенно непонятно, когда они должны заканчиваться

Можно плюнуть и привлечь его величество рандом.

Thetan ★★★
()
Ответ на: комментарий от Thetan

https://www.youtube.com/watch?v=DE11x6e3_x8

Ну настроечная таблица не даёт полноты анализа, очень уж там специфичный паттерн. Зато явственно видно, особенно если прикрутить цветность (клавиш 7 в mpv), что в зелёном прямоугольнике шум по яркости намного сильнее, чем в остальных — он и является причиной возникновения новых факелов. А вот природа этого шума сама по себе неясна, возможно, это искажение от композитного кабеля и перемодуляции в MESECAM. Желательно для полноты картины поискать оцифровки непосредственно с телеэфира, а не через кассету. На крайняк, у Нас есть несколько записей, снятых с экрана на мобильник.

этот текст

Ну, это мало, Мы целый соответствующий раздел в «Джакония В.Е., Гоголь А.А., Друзин Я.В. Телевидение (4-е издание, 2007)» пытались осилить ;-)

the loss of subcarrier during the white characters causes the automatic gain control on the decoder to set the colour gain to maximum

Это да, субтитры SECAM сильнее всего портит. Мы нередко даже выключали цвет, потому что факелы мешают читать. Но временная потеря сигнала не объясняет все случаи, даже по настроечной таблице видно: там с жёлтого на голубой не потеря сигнала, а просто резкий перепад — и по U, и по V.

mertvoprog
()
Ответ на: комментарий от mertvoprog

С удовольствием.


Представляю местной публике свой генератор факелов (цветовых помех) SECAM: https://github.com/xoffy/secamiz0r.

Факелы SECAM это такие красные и синие (редко зелёные и чёрные) горизонтальные полосы, характерные для системы цветного аналогового ТВ SECAM, от которых каждый из вас когда-то давно пытался избавиться. В отличие от бездуховных помех NTSC и PAL, наши родные советские помехи намного зрелищнее и красивее. Одним словом, aesthetic.

Если вы и ваша тульпа по каким-то причинам не понимаете, о чём идёт речь, то вот.

Проєкт реализован в виде плагина для frei0r — замшелого свободного API для видеоэффектов.

Сборка:

$ git clone https://github.com/xoffy/secamiz0r
$ cd secamiz0r
$ meson build
$ cd build
$ ninja
$ mkdir -p ~/.frei0r-1/lib
$ cp secamiz0r.so ~/.frei0r-1/lib/secamiz0r.so

Для сборки нужны: meson, инклуды frei0r и библиотека gavl.

Проверка через ffmpeg:

$ ffplay -f lavfi -i testsrc=size=768x576 -vf 'frei0r=secamiz0r'

Результат должен быть примерно таким.

Фильтр имеет 4 параметра (вещественные числа от 0 до 1), которые в ffmpeg можно указать следующим образом:

-vf 'frei0r=secamiz0r:0.3|0.15|0.15|0.3'
  1. процент случайных факелов;
  2. процент факелов на перепадах яркости;
  3. процент факелов на перенасыщенных местах;
  4. цветовой шум.

Ещё важно учитывать, что для корректной работы плагинов frei0r в ffmpeg требуется, чтобы изображение было строго 4:3, иначе по какой-то причине всё съедет. Можно использовать либо 640x480, либо 768x576.

Кроме того, плагины frei0r можно применить в видеоредакторах Pitivi или Kdenlive.


Thetan ★★★
()
Ответ на: комментарий от Thetan

(редко зелёные и чёрные)

Ну вот и не редко, только что смотрели «Теорию заговора» про томатную пасту — на красном зелёных факелов очень даже много ;-)

mertvoprog
()
Ответ на: комментарий от Moderators

Я даже не имею понятия, что это. Что касается подобного, то я ещё года три назад искал, и единственное, что нашёл, это какой-то ncc1988/secamizer, который can only handle raw RGB-24 images. Так что в мире существует только три таких фильтра. Больше поехавших не нашлось.

Thetan ★★★
()
Ответ на: комментарий от mertvoprog

в зелёном прямоугольнике шум по яркости намного сильнее, чем в остальных — он и является причиной возникновения новых факелов

Вспомнились Наши ранние фейлы. Факелы тупо продолжались до конца строки и изображение превращалось в исполосованный говнокал.

MESECAM

Мы и в эфире наблюдали кучу факелов именно в сине-зеленоватых областях.

Thetan ★★★
()
Ответ на: комментарий от Thetan

Я и приличных NTSC/PAL не видел, да даже VHS, везде - либо наложение поверх видео готовой дорожки видео-артефактов, либо шум - даже не в случайном порядке, что смотрится очень дешево.

Moderators ★★
() автор топика
Ответ на: комментарий от Moderators

NTSC/PAL

Цветовые помехи там скучные. За NTSC не скажу, но наслышан о фиолетовой коже. В PAL серьёзные помехи выражаются в виде разноцветного «конфетти», а очень серьёзные — в падении насыщенности. PAL вообще слишком хорошо работает, неинтересно.

Вот яркостные помехи сделать труднее. Нужно продумать реалистичные сдвиги строк, имитировать вылеты синхронизации (подпрыгивание кадра), имитировать так называемый ghosting и многое другое. Намного проще записать на VHS или другой аналоговый носитель и оцифровать обратно.

Thetan ★★★
()

После пары тестов на глазок я обнаружил, что мой фильтр реалистично отрабатывает на нереалистичных изображениях. Например, на восьмибитщине. В общем, задание выполнено, проект окончен. Всем спасибо за внимание.

Thetan ★★★
()

Я думал, он помехи чудесным образом убирает, а тут оказывается, что всё наоборот.

Ну что, го снимать загадку дыры

deadplace
()
Ответ на: комментарий от Thetan

Факелы тупо продолжались до конца строки и изображение превращалось в исполосованный говнокал

Ну так и есть, в прошлом треде Мы приводили пример качественной записи (без шума из эфира, только артефакты VHS), где в исходном сигнале многие строки были полностью зелёными: https://www.youtube.com/watch?v=7gMHa9hIOlM?t=255 Факелы огромные, почти не ограничены по длине. Причём постепенно угасают и опять возрождаются в рамках одной строки — видимо, они зависят ещё и от фазы Луны несущей или поднесущей волны.

mertvoprog
()
Ответ на: комментарий от Moderators

В ffmpeg появится, когда линукс станет готов для десктопа. А появление в составе frei0r-plugins не исключено.

Thetan ★★★
()
Ответ на: комментарий от Thetan

Намного проще записать на VHS или другой аналоговый носитель и оцифровать обратно

Ну это пока аппаратура живая есть ;-) Да и обрабатывать пакетно много видео так будет проблематично. В идеале такая штука вообще должна работать в реальном времени для любого просматриваемого видео, как Наш taporwave.

mertvoprog
()
Ответ на: комментарий от Thetan

PAL вообще слишком хорошо работает, неинтересно

У него есть серьёзный недостаток — низкая стойкость. По Нашим наблюдениям, при той силе сигнала, когда на каналах с PAL уже цвет пропадает, SECAM ещё остаётся с цветом, хоть и залит нахрен кетчупом.

mertvoprog
()
Ответ на: комментарий от Thetan

С лёгкими факелами он справляется хорошо, а вот что насчёт имитации плохого приёма? Мы вчера пытались выкручивать настройки — выходила какая-то фигня.

mertvoprog
()
Ответ на: комментарий от mertvoprog

Мы согласны, что там была полнейшая лажа. Вы можете попробовать новую версию с параметрами, например, 0.7|0.5|0.5, Мы там пошаманили чутка. Однако там не хватает зелёных помех и помех яркости, с идеальной люмой оно выглядит неестественно.

Thetan ★★★
()
Ответ на: комментарий от Thetan

с идеальной люмой

А если в неё предварительно шумка добавить?

mertvoprog
()

А где начало драммы? Заголовок вводит в заблуждение вы накладываете фильтр, а не чистите видео. Конечно шум реалистичный это прикольно (Но далеко ещё до реалистичного). А вот теперь возмите видео и очистите его ))))))) Вот это уже веселее.

LINUX-ORG-RU ★★★★★
()
Ответ на: комментарий от LINUX-ORG-RU

Начало драмы у меня на аватарке.

А вот теперь возмите видео и очистите его

Тут только нейроочиститель поможет.

Thetan ★★★
()
Ответ на: комментарий от Thetan

Дефолт ослаб. Раньше было лучше! И шум после перепадов исчез.

А с такими параметрами особо заметно, что длина факелов от цветности зависит. Ненатуральненько, в общем. Может, хотя бы рандомности в длину добавить, раз уж с моделью затухания непонятки.

mertvoprog
()
Ответ на: комментарий от LINUX-ORG-RU

Заголовок вводит в заблуждение

да! тоже зашел, думал тут супер качественный апкейл для бурятских мультов пилят.

а всё наоборот.

n_play
()
Ответ на: комментарий от mertvoprog

Дефолт ослаб. Раньше было лучше!

Да, занизили значение случайных факелов.

И шум после перепадов исчез.

А этого Мы не трогали.

Ненатуральненько, в общем.

Мы покопались в старых архивах и с ужасом обнаружили, что раньше было намного лучше: https://0x0.st/iMAC.mp4 (это где-то год назад). Не по тому пути развития ушёл наш фильтр.

Thetan ★★★
()
Ответ на: комментарий от Thetan

Нужно найти очень хороший отрывок, где эффект выглядит максимально аутентично, и должен быть такой же отрывок, но максимально чистый, DVD-версия например. Возможно, будет достаточно даже минуты, если она будет насыщена разными проявлениями SECAM-эффекта. Нарезать эти видео на кадры и скормить какому-нибудь GAN. У тебя есть мощная видяшка?

Moderators ★★
() автор топика
Ответ на: комментарий от Thetan

В натуральном телеэфире есть ещё важный момент: мелкие точки шума по яркости с SECAM превращаются в красные, зелёные и синие хаотично меняющиеся точки, которые особенно хорошо заметны как раз на чёрном фоне (letterbox, например :3). В Вашей реализации таких точек нету в принципе.

mertvoprog
()
Ответ на: комментарий от Thetan

Мда, Нам на это ещё в начале февраля на это ссылку кидали, но Мы так и не посмотрели. И до конца карантина вряд ли посмотрим :3

mertvoprog
()

Здравствуйте. Я специалист. Фильтр не нужен. И так всё хорошо. Нормальный монитор купи себе.

anonymous
()
Ответ на: комментарий от shkolnick-kun

Нужно натренировать нейросеть на создание SECAM-эффектов. Типа тех, что делают 2 программы из шапки, но уже более-менее реалистично.

Moderators ★★
() автор топика
Ответ на: комментарий от Moderators

Вот только не знаю, есть ли еще раздачи, записанные с ТВ в формате MESECAM на VHS. Ведь обычные PAL и NTSC не подходят.

Moderators ★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.