Восстановление прогрессивного потока с NTSC-DVD, транскодированного из PAL

Страницы :   Пред.  1, 2, 3, 4, 5  След.
Ответить
 

Mikky72

VIP (Заслуженный)

Стаж: 17 лет 8 месяцев

Сообщений: 8498

Mikky72 · 28-Сен-08 21:59 (16 лет 2 месяца назад)

tartak
И нифига он не удаляет - может у меня не та версия.
Можете dll скинуть?
[Профиль]  [ЛС] 

tartak

VIP (Заслуженный)

Стаж: 18 лет 8 месяцев

Сообщений: 2548

tartak · 29-Сен-08 04:51 (спустя 6 часов)

Версия с офсайта, 1.1.0
[Профиль]  [ЛС] 

tartak

VIP (Заслуженный)

Стаж: 18 лет 8 месяцев

Сообщений: 2548

tartak · 29-Сен-08 08:43 (спустя 3 часа, ред. 29-Сен-08 08:43)

Mikky72
TDecimate решил проблему (спасибо Pustovetov за наводку). А FDecimate глючит. Этот скрипт производит вполне мягкое движение, без дублей, причем 25 фпс:
Код:
source = MPEG2Source("111.d2v")
#source.FDecimate(rate = 22)
source.TDecimate(mode = 0, cycleR = 3, cycle = 25)
#ConvertFPS(25)
#MotionProtectedFPS(25)
backward_vec = source.MVAnalyse(isb = true, truemotion = true, pel = 2, idx = 1, search = 3)
forward_vec = source.MVAnalyse(isb = false, truemotion = true, pel = 2, idx = 1, search = 3)
cropped = source.crop(4, 4, -4, -4)
backward_vec2 = cropped.MVAnalyse(isb = true, truemotion = true, pel = 2, idx = 2, search = 3)
forward_vec2 = cropped.MVAnalyse(isb = false, truemotion = true, pel = 2, idx = 2, search = 3)
source.MVFlowFps2(backward_vec, forward_vec, backward_vec2, forward_vec2, num=25, idx = 1,idx2 = 2)
Плагины берем здесь (TIVTC) и здесь (MVTools)
[Профиль]  [ЛС] 

Mikky72

VIP (Заслуженный)

Стаж: 17 лет 8 месяцев

Сообщений: 8498

Mikky72 · 29-Сен-08 09:10 (спустя 27 мин., ред. 29-Сен-08 09:10)

tartak
Спасибо, конечно. Но этот скрипт на моем сэмпле (111.mpg) вообще дублей не удалил (5,7,9 так и остались на месте в виде повторов предыдущих, 30,32,34 - аналогично и т.д.)!!!
ТIVTC 1.05
MVtools 1.11.4.2
[Профиль]  [ЛС] 

waldis2

Стаж: 17 лет 5 месяцев

Сообщений: 2321


waldis2 · 29-Сен-08 09:23 (спустя 12 мин.)

Mikky72 в качестве идеи -- сравнить ваш скрипт и tartak-a, построчно,
возможно побуквенно
111.mpg вы препарировали с помощью dgindex?
tartak писал(а):
cropped = source.crop(4, 4, -4, -4)
подскажите плиз почему обрезка важна именно в этом месте, а не после смены количества кадров?
[Профиль]  [ЛС] 

Mikky72

VIP (Заслуженный)

Стаж: 17 лет 8 месяцев

Сообщений: 8498

Mikky72 · 29-Сен-08 09:28 (спустя 4 мин., ред. 29-Сен-08 09:31)

waldis2
Я просто скопиравал текст из сообщения.
DGIndex 1.5.0
[Профиль]  [ЛС] 

waldis2

Стаж: 17 лет 5 месяцев

Сообщений: 2321


waldis2 · 29-Сен-08 09:30 (спустя 2 мин.)

Mikky72 вопрос в силе
waldis2 писал(а):
111.mpg вы препарировали с помощью dgindex?
хотя конечно если оно хоть что-то у вас делает, то ответ понятен.
не знаю тогда как на одном источнике и с использованием одного и того же кода получаются разные результаты.
[Профиль]  [ЛС] 

tartak

VIP (Заслуженный)

Стаж: 18 лет 8 месяцев

Сообщений: 2548

tartak · 29-Сен-08 09:44 (спустя 13 мин., ред. 29-Сен-08 09:44)

Mikky72
Скопировали, открыли в Дубе, а дальше? Смотрим File->File Information. Если закомментировать все строки после TDecimate, должно быть 22 fps. Далее, прокручиваем по одному кадру. Дубликатов быть не должно. Этот скрипт работает, гарантирую.
waldis2
cropped нужен только для внутренней работы MVFlowFps2, никакой обрезки source не происходит. Там вообще один сплошной хак, по делу такой плагин должен быть multithreaded.
[Профиль]  [ЛС] 

Mikky72

VIP (Заслуженный)

Стаж: 17 лет 8 месяцев

Сообщений: 8498

Mikky72 · 29-Сен-08 10:12 (спустя 27 мин., ред. 29-Сен-08 10:12)

tartak
С задокументированным концом - удаляет (спасибо).
А если конец активировать - то опять вставляет их обратно на те же места - хи-хи.
Что-то мне сдается, что именно этим скриптом его из NTSC в PAL конвертили без изменения продолжительности (так как музыкальный) и по дороге потеряли по 2 ценных кадра в секунду (поэтому без дублей дергается вперед, а с дублями подтормаживает, что лучше -непонятно - оба плохо).
[Профиль]  [ЛС] 

tartak

VIP (Заслуженный)

Стаж: 18 лет 8 месяцев

Сообщений: 2548

tartak · 29-Сен-08 10:17 (спустя 4 мин.)

Mikky72
Ну, я там параметры наобум взял. Надо с параметрами MVAnalyse и MVFlowFps2 поиграть. По идее, он должен намного лучше ConvertFPS работать.
[Профиль]  [ЛС] 

tartak

VIP (Заслуженный)

Стаж: 18 лет 8 месяцев

Сообщений: 2548

tartak · 29-Сен-08 10:46 (спустя 29 мин., ред. 29-Сен-08 10:46)

Mikky72
Я совсем очумел. Изменение fps происходило же с оригиналом, а не с прореженным вариантом, то есть ничего не происходило. Исправил и перешел на MVFlowFps, ничего MVFlowFps2 лучшего не даст:
Код:
source = MPEG2Source("111.d2v")
#source.FDecimate(rate = 22)
decimated = source.TDecimate(mode = 0, cycleR = 3, cycle = 25)
#ConvertFPS(25)
#MotionProtectedFPS(25)
backward_vec = decimated.MVAnalyse(isb = true, truemotion = true, pel = 2, idx = 1)
forward_vec = decimated.MVAnalyse(isb = false, truemotion = true, pel = 2, idx = 1)
decimated.MVFlowFps(backward_vec, forward_vec, num = 25, den = 1, ml = 100, idx = 1)
Но вы правы, теперь слегка проскакивает вперед, кадров не хватает. Хрен редьки не слаще. Надо функцию, добавляющую среднее между 2-мя кадрами, вместо дублей. Морока.
[Профиль]  [ЛС] 

Mikky72

VIP (Заслуженный)

Стаж: 17 лет 8 месяцев

Сообщений: 8498

Mikky72 · 29-Сен-08 10:51 (спустя 5 мин., ред. 29-Сен-08 10:51)

tartak
О, Вы меня опередили. А я хотел вот это написать:
скрытый текст
В идеале, возможно - на место дублей вставить "усредненные" кадры 5=0.5*(4+6). А так он вставляет 5=4. Хотя, наверное, надо не 3 усредненных кадра вставлять, а 1 (но не очень понятно, на какую из освободившихся позиций - иначе всё равно будет подтормаживать). Идея, скорее всего, безнадежная. Жаль.
Но за некое введение в работу с этим фрэймсервером и фильтрами - спасибо. Теперь хоть имею представление, как с этим работать.
Спасибо за участие и микро ликбез по AVISynth и фильтрам - было очень интересно и полезно на будущее.
[Профиль]  [ЛС] 

tartak

VIP (Заслуженный)

Стаж: 18 лет 8 месяцев

Сообщений: 2548

tartak · 29-Сен-08 10:59 (спустя 7 мин., ред. 29-Сен-08 10:59)

Mikky72
Не так уж и безнадежна идея. Функция эта MVFlowInter из MVTools. А флаг на дубли ей выставит CFrameDiff из TIVTC. Осталось только загнать все это в Trim.
[Профиль]  [ЛС] 

yaboxer

Стаж: 16 лет 1 месяц

Сообщений: 87


yaboxer · 23-Апр-09 17:48 (спустя 6 месяцев)

У меня фильм-исходник был в формате avi, NTSC с частотой кадров 23,976 fps. Сейчас его нет. После ошибочного кодирования (авторинга) в PAL этот фильм стал с частотой кадров 25 fps. В результате в фильме - дублирующиеся кадры, расположенные в неопределенной последовательности друг от друга, и это делает движения объектов (особенно заметно на автомобилях и поездах) неплавными, дерганными. Пытался исправить положение разными скриптами Ависинта. Ничего не помогает. Упомянутый тут fdecimate убрал кадры-дубликаты в одних местах, но они появились в других местах. Причем, сдвоенные, и, к тому же, идущие реверсом. Кому-нибудь приходилось решать подобную проблему?
Неплохая статья на эту тему тут http://ubuntulogia.blogspot.com/2008/06/blog-post_4.html но у меня уже голова идет кругом от всего этого.
[Профиль]  [ЛС] 

waldis2

Стаж: 17 лет 5 месяцев

Сообщений: 2321


waldis2 · 23-Апр-09 18:22 (спустя 33 мин.)

yaboxer попробуйте определить цикл для дублей и прореживайте с помощью
такой конструкции
tdecimate(cycler=3,cycle=18,chroma=false,vidthresh=1.2,nt=2,blocky=16,mode=0)
это для цикла в 18 фреймов с тремя дублями по схеме 7-7-4 (каждый последний в цепочке дубль)
[Профиль]  [ЛС] 

yaboxer

Стаж: 16 лет 1 месяц

Сообщений: 87


yaboxer · 24-Апр-09 09:11 (спустя 14 часов)

waldis2, сейчас этот фильм у меня находиться на внешнем жестком диске, у которого сгорел кейс. Поэтому, более обстоятельно отвечу вам позже. Кстати, я проверил ваш скрипт, он вообще не открывается. Пишет: Нет такой функции, именуемой tdecimate. Вообще, я не хотел-бы грубо вырезать кадры. В моем случае, как говорил, нет четкого алгоритма расположения дубликатов, это и затрудняет "охоту" за ними. Но я слышал, что даже после ошибочного кодирования из NTSC 23,976 fps в PAL 25 fps можно выкрутиться и каким-то скриптом вернуть фильм в исходное состояние NTSС 23,976 fps.
Не понятна фаша фраза: "это для цикла в 18 фреймов с тремя дублями по схеме 7-7-4 (каждый последний в цепочке дубль)".
[Профиль]  [ЛС] 

waldis2

Стаж: 17 лет 5 месяцев

Сообщений: 2321


waldis2 · 24-Апр-09 11:55 (спустя 2 часа 43 мин.)

yaboxer писал(а):
нет четкого алгоритма расположения дубликатов
а на сколько далеко вы пошли в своих изысканиях, что бы так уверенно говорить?
схема обычно есть, только ее не сразу видно,
дубли хорошо начинают проглядывать после деинтерлейса,
поэтому берете скрипт, деинтерлейсите исходник, и затем начинаете выписывать номера дублирующихся кадров, обычно кадров 50-60-100 хватает для выяснения закономерности их появления
yaboxer писал(а):
Не понятна фаша фраза: "это для цикла в 18 фреймов с тремя дублями по схеме 7-7-4 (каждый последний в цепочке дубль)".
а это как раз про случай якобы хаотичного появления дублей,
идёт цикл из:
7 кадров, 7-й дубль
7 кадров, 7-й дубль
4 кадра, 4-й дубль
потом всё в точности повторяется
и из 29.97 кадров/с получаются почти красивые 24.975, и на что похожа эта частота надеюсь объяснять не надо
[Профиль]  [ЛС] 

yaboxer

Стаж: 16 лет 1 месяц

Сообщений: 87


yaboxer · 24-Апр-09 15:41 (спустя 3 часа)

waldis2, как я сказал, ваш скрипт не открывается (eсли, конечно, tdecimate не отдельный плагин, которого у меня нет). Значит, он неправильно написан.
[Профиль]  [ЛС] 

waldis2

Стаж: 17 лет 5 месяцев

Сообщений: 2321


waldis2 · 24-Апр-09 15:47 (спустя 6 мин.)

yaboxer писал(а):
как я сказал, ваш скрипт не открывается
это иллюстрация децимации, и ни в коей мере не полный скрипт обработки
yaboxer писал(а):
eсли, конечно, tdecimate не отдельный плагин
у вас интернет только до этого форума работает?
yaboxer писал(а):
Значит, он неправильно написан
да, безусловно
[Профиль]  [ЛС] 

yaboxer

Стаж: 16 лет 1 месяц

Сообщений: 87


yaboxer · 24-Апр-09 17:39 (спустя 1 час 51 мин.)

waldis2, еще есть фильтр multidecimate, который вроде в виде текста показывает номера кадров-дубликатов, что облегчает их поиск. Но я забыл последовательность действий с multidecimate. А вообще, как-бы вы удаляли хаотично расположенные дубликаты?
[Профиль]  [ЛС] 

waldis2

Стаж: 17 лет 5 месяцев

Сообщений: 2321


waldis2 · 24-Апр-09 18:56 (спустя 1 час 16 мин.)

yaboxer писал(а):
А вообще, как-бы вы удаляли хаотично расположенные дубликаты?
waldis2 писал(а):
а на сколько далеко вы пошли в своих изысканиях, что бы так уверенно говорить?
вот это я так понимаю сделано
waldis2 писал(а):
поэтому берете скрипт, деинтерлейсите исходник, и затем начинаете выписывать номера дублирующихся кадров, обычно кадров 50-60-100 хватает для выяснения закономерности их появления
?
[Профиль]  [ЛС] 

yaboxer

Стаж: 16 лет 1 месяц

Сообщений: 87


yaboxer · 25-Апр-09 09:53 (спустя 14 часов)

В описании фильтра TomsMoComp http://avisynth.org/warpenterprises/files/tmonitor_25_dll_20041030.zip написано: этот фильтр использует компенсацию движения и адаптивную обработку для деинтерлейса видео источников (не для кинофильмов NTSC).
В описании фильтра - TMonitor http://avisynth.org/warpenterprises/files/tmonitor_25_dll_20041030.zip : Комбинация двух фильтров. TFM - фильтр подбора полей, который восстанавливает оригинальные прогрессивные поля в теликино источнике. TDecimate - фильтр децимации, который удаляет дубликаты. Вы не пользовались ими?
[Профиль]  [ЛС] 

waldis2

Стаж: 17 лет 5 месяцев

Сообщений: 2321


waldis2 · 25-Апр-09 16:29 (спустя 6 часов)

yaboxer по-моему я вам привёл пример с использованием одного из этих фильтров,
да и при чём тут чем я пользовался, речь совершенно не об этом, а скорее о том, что вы продолжаете игнорировать мои вопросы. наверное я тоже воспользуюсь этим методом общения.
[Профиль]  [ЛС] 

yaboxer

Стаж: 16 лет 1 месяц

Сообщений: 87


yaboxer · 25-Апр-09 19:16 (спустя 2 часа 46 мин.)

waldis2, я уже исправил свой внешний хард-диск на котором находится упомянутый фильм. Скоро постараюсь выявить, с каким алгoритмом расположены дубликаты и сообщу вам.
[Профиль]  [ЛС] 

waldis2

Стаж: 17 лет 5 месяцев

Сообщений: 2321


waldis2 · 25-Апр-09 22:33 (спустя 3 часа)

yaboxer кстати больший интерес представляет дистанция между дублями
[Профиль]  [ЛС] 

yaboxer

Стаж: 16 лет 1 месяц

Сообщений: 87


yaboxer · 26-Апр-09 22:53 (спустя 1 день, ред. 26-Апр-09 22:53)

waldis2, я проверил покадрово первые 22 секунды фильма. Алгоритм расположения дубликатов странный. Они приходяться на кадры:
74,98,123,147,172,196,220,245,269,294,318,342,367,391,416,440,464,489,513,538 и.т.д.
т.е. соответствуют шаблону
24-25-24-25-24 / 24-25-24-25-24 / 24-25-24-25-24 / 24-25-24-25-24 / 24-25-24-25-24 и.т.д.
Первые 2 секунды фильма - полнейшая темнота, поэтому я начал отсчёт с 74 кадра. Но если следовать алгоритму, то первые кадры-дубликаты приходятся на 1,25,50 кадры.
Интересно, как тут можно вернуть PAL 25 fps в родной NTSC 23,976 fps?
[Профиль]  [ЛС] 

Mikky72

VIP (Заслуженный)

Стаж: 17 лет 8 месяцев

Сообщений: 8498

Mikky72 · 26-Апр-09 23:50 (спустя 56 мин., ред. 26-Апр-09 23:50)

yaboxer
Взять серию в 25 кадров и указать, что на выходе нужны первые 24 (т.е. 0-23).
Цитата:
SelectEvery(25,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23)
[Профиль]  [ЛС] 

yaboxer

Стаж: 16 лет 1 месяц

Сообщений: 87


yaboxer · 27-Апр-09 09:45 (спустя 9 часов)

Mikky72, еще раз обращаю внимание, что в моем случае не в каждой секунде нужно грубо отсекать 25-й кадр. Вдвое чаще дубликаты приходяться на 24-й кадр. Кстати, я однажды писал аналогичный (как у вас) скрипт. Eсли не ошибаюсь, он выглядел так:
SelectEvery(25,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23)
SelectEvery(26,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,24)
SelectEvery(25,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23)
SelectEvery(26,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,24)
SelectEvery(25,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23)
SelectEvery(25,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23)
SelectEvery(26,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,24)
SelectEvery(25,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23)
SelectEvery(26,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,24)
SelectEvery(25,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23)
Столько строк в тексте скрипта исправят только первые 10 секунд фильма. Скопировать это многократно ниже можно, но это не даст эффекта, потому что тогда ВиртуалДаб вообще не открывает файл ввиду громоздкости текста скрипта. Короче, таким путем можно выправить положение только до второй минуты фильма и подобный скрипт вряд-ли пригоден. Надо искать нечто универсальное, чтобы не указывать какие именно кадры удалять, а чтоб фильтр сам автоматически находил и удалял кадры-дубликаты.
Я пока не могу разобраться с выложенным выше фильтром TMonitor. По описанию он вроде должен помочь, но нет образца, по которому я-бы смог написать скрипт.
[Профиль]  [ЛС] 

waldis2

Стаж: 17 лет 5 месяцев

Сообщений: 2321


waldis2 · 27-Апр-09 10:10 (спустя 24 мин.)

yaboxer писал(а):
24-25-24-25-24
ну а говорите закономерности нет ( ),
последовательность конечно веселая, но главное терпение.
правильно я понял что в этой цепочке из 5 групп каждый участник группы завершается дублем?
(24-25-24-25-24)
т.е. каждый 24-й, 25-й, 24-й, 25-й, 24-й кадр является дублем?
можно например так:
tdecimate(cycler=5,cycle=122,chroma=false,vidthresh=1.2,nt=2,blocky=16,mode=0)
что в результате должно дать частоту 25 * 117/122 == 23.9754,
с точностью до 3-го знака искомая частота NTSC Film
надеюсь это будет ответом на
yaboxer писал(а):
Интересно, как тут можно вернуть PAL 25 fps в родной NTSC 23,976 fps?
особой скоростью прореживания видимо это блистать не будет, но своё дело сделает.
прошу сообщить результат применения.
[Профиль]  [ЛС] 

yaboxer

Стаж: 16 лет 1 месяц

Сообщений: 87


yaboxer · 27-Апр-09 11:18 (спустя 1 час 7 мин.)

waldis2, у меня ваш скрипт не открывает файл. Пишет: Не существует функции tdecimate. Что это за tdecimate?
[Профиль]  [ЛС] 
 
Ответить
Loading...
Error