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

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

сezar

Top Loader 04* 1TB

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

Сообщений: 1210

сezar · 09-Июл-09 20:00 (15 лет 4 месяца назад)

tartak писал(а):
сezar1 писал(а):
Попробовал DGPulldown. Сравнил покадрово. Полукается то же самое, что и с ConvertFPS.
Этого не может быть: DGPulldown прописывает флаги повтора и никак не трогает материал, тогда как ConvertFPS смешивает поля.
Может не правильно выразился. Ясно, что DGPulldown не изменяет материал. Просто если просматреть MPEG2 после "прочесывания" этой утилиткой (с учетом проставленных индексов), то получается такая же картина как и с использованием ConvertFPS, который делает физичестки 25 fps смешивая поля. Вот можно посмотреть если интересно. В архиве покадрово 2 сек. одного и того же момента в вариантах с DGPulldown и с ConvertFPS (ну и отдельно оригинал 24fps) Видно что DGPulldown тоже использует смешивание полей.
convert24_25.zip
[Профиль]  [ЛС] 

tartak

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

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

Сообщений: 2548

tartak · 09-Июл-09 21:27 (спустя 1 час 27 мин.)

сezar1 писал(а):
Ясно, что DGPulldown не изменяет материал.
сezar1 писал(а):
ConvertFPS, который делает физичестки 25 fps смешивая поля.
сezar1 писал(а):
Видно что DGPulldown тоже использует смешивание полей.
Под смешиванием я имел в виду именно физическое смешение двух разных полей в одно, blend. Это то, что делает ConvertFPS (и результат всегда выглядит неважнецки), и не делает DGPulldown.
Другое дело, что пользоваться DGPulldown надо уметь. Вы либо обратный телесин не сделали, с доведением до прогрессива, либо ваш плеер (в котором делали скриншоты) не понимает сложных каденций.
[Профиль]  [ЛС] 

сezar

Top Loader 04* 1TB

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

Сообщений: 1210

сezar · 10-Июл-09 07:32 (спустя 10 часов)

Да, действительно, вывел MPEG в интерлейсе. Сорри, ламернулся.
[Профиль]  [ЛС] 

сezar

Top Loader 04* 1TB

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

Сообщений: 1210

сezar · 10-Июл-09 16:27 (спустя 8 часов)

Перекодировал заново. Прогнал DGPulldown-ом. Получилось нормально. После кампиляции в VOB посмотрел на разных плеерах. Все отлично.
Из всех перепробованых вариантов эта схема дает лучший результат.
Если использовать измение fps в самом кодере (то что предлагает Carbon Coder по умолчанию в профиле DVD PAL), то результат получается хуже. А ConvertFPS вобще "мылит" движение.
Кроме того еще пробовал играться с MVTools. Результат получается прекрасный. Реальные 25 fps без смазывания. Но на моем материале в сложных ситуациях бывает плохой анализ блоков и в результате некоторые кадры получаются "изуродованые". А вообще плагин хороший. На более простом материале можно использовать.
Спасибо всем за помошь и подсказки.
[Профиль]  [ЛС] 

Magistrat0r

Стаж: 15 лет 11 месяцев

Сообщений: 50

Magistrat0r · 26-Авг-09 01:08 (спустя 1 месяц 15 дней)

Какой был источник этого видео? Ссылка на фрагмент: http://www.filehoster.ru/files/di6123
Каждый 6-й кадр подозрительно похож на прогрессив.
Кто-нибудь может ответить?
[Профиль]  [ЛС] 

Sarkofaq

Стаж: 14 лет 11 месяцев

Сообщений: 6


Sarkofaq · 06-Янв-10 15:42 (спустя 4 месяца 11 дней, ред. 06-Янв-10 15:42)

Мне попался фильм (продолжительность почти 3 часа, размер около 2 Гб) со странной частотой кадров (не поймешь это PAL или NTSC). В ВиртуалДабе показывает 24,393 fps, но в двух других программах показывает соответственно 23,976 и 23,98 fps. Вот гляньте что показывает GSpot:

Примерно до 20 минуты на экране есть кадры-дубликаты и потому изображение дергается. Далее все идет гладко и примерно за 25 минут до конца фильма снова - повторяющиеся кадры, т.е. картинка подергивается. Я впервые сталкиваюсь с такой неровновностью частоты кадров в одном фильме. Кто сталкивался с подобной проблемой и как можно избавиться от кадров дубликатов в начале и конце фильма, не затрагивая его середину?
[Профиль]  [ЛС] 

tartak

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

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

Сообщений: 2548

tartak · 08-Янв-10 00:06 (спустя 1 день 8 часов)

Sarkofaq
Это то, что обсуждалось начиная с 1-й стр. - читайте!
Вкратце - Fdecimate или Tdecimate или пакет Decomb. И т.д.
[Профиль]  [ЛС] 

Sarkofaq

Стаж: 14 лет 11 месяцев

Сообщений: 6


Sarkofaq · 08-Янв-10 08:58 (спустя 8 часов)

tartak, придется перелистывать страницы. С другой стороны, у каждого фильма свои специфические свойства и потому слепо копировать чужие скрипты вряд-ли поможет. А конкретно, как-бы вы написали скрипт к моему случаю? Упомянутые вами плагины у меня есть.
[Профиль]  [ЛС] 

StudioRAK

Top Seed 04* 320r

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

Сообщений: 861

StudioRAK · 07-Фев-10 01:14 (спустя 29 дней)

в эфире давали криво кодированный NTSC в PAL в итоге вот http://webfile.ru/4282396
если найдёте способ собрать обратно картинку, плиз, подскажите в личку какими скриптами такое реально.
Заранее благодарен.
[Профиль]  [ЛС] 

Douplex

Стаж: 14 лет 11 месяцев

Сообщений: 2669

Douplex · 07-Фев-10 10:31 (спустя 9 часов)

У меня файл в формате МР-4, размер 19,4 Мб, PAL и частота кадров 25 fps. Хочу его добавить в проект, где все клипы в NTSC. Каков наиболее простой путь превращения из PAL в NTSC?
Вот ссылка на этот файл
http://v7.lscache8.c.youtube.com/videoplayback?ip=0.0.0.0&sparams=id%2Cexpire...3a58decd7f18a937
[Профиль]  [ЛС] 

waldis2

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

Сообщений: 2321


waldis2 · 09-Фев-10 17:55 (спустя 2 дня 7 часов)

Douplex писал(а):
У меня файл в формате МР-4, размер 19,4 Мб, PAL и частота кадров 25 fps. Хочу его добавить в проект, где все клипы в NTSC. Каков наиболее простой путь превращения из PAL в NTSC?
если наиболее простой, то сменой информации о частоте кадров, assumefps(23.976) для ntsc film
правда придется звук растягивать
[Профиль]  [ЛС] 

Douplex

Стаж: 14 лет 11 месяцев

Сообщений: 2669

Douplex · 11-Фев-10 00:04 (спустя 1 день 6 часов)

waldis2, а разве прямое превращение с 25 fps на 23,976 не приведет к подергиванию, все- таки "съедаем" целый кадр?!
[Профиль]  [ЛС] 

waldis2

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

Сообщений: 2321


waldis2 · 11-Фев-10 12:26 (спустя 12 часов)

Douplex писал(а):
waldis2, а разве прямое превращение с 25 fps на 23,976 не приведет к подергиванию, все- таки "съедаем" целый кадр?!
никто ничего не съедает, меняется информация о частоте (ну и соотв. длительности). фреймы остаются все на месте.
[Профиль]  [ЛС] 

Douplex

Стаж: 14 лет 11 месяцев

Сообщений: 2669

Douplex · 11-Фев-10 17:47 (спустя 5 часов, ред. 11-Фев-10 17:47)

waldis2, да действительно. Применил этот скрипт и превращение с 25 в 23,976 прошло безболезненно. Пасибо.
Сейчас у меня другая проблема - под рукой фильм в формате rmvb с частотой кадров 30 fps (это PAL или NTSC?). Oчень, кстати, капризный формат, приносящий мне всегда головную боль. Хочу кинуть его на диск, но вижу на экране подергивание (на плеере компа и в ВиртуалДабе). При подкадровом просмотре (небольшого фрагмента) замечаю, что каждый 6-й кадр повторяется. Правда, от и до проверять покадрово фильм нет сил и терпения. Возможно, в других местах алгоритм дубликатов меняется (такое может быть?). Каким скриптом можно спасти фильм? Я писал selectevery(6,0,1,2,3,4), но это не помогло.
[Профиль]  [ЛС] 

waldis2

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

Сообщений: 2321


waldis2 · 09-Мар-10 09:31 (спустя 25 дней)

Douplex писал(а):
waldis2, да действительно. Применил этот скрипт и превращение с 25 в 23,976 прошло безболезненно. Пасибо.
Сейчас у меня другая проблема - под рукой фильм в формате rmvb с частотой кадров 30 fps (это PAL или NTSC?). Oчень, кстати, капризный формат, приносящий мне всегда головную боль. Хочу кинуть его на диск, но вижу на экране подергивание (на плеере компа и в ВиртуалДабе). При подкадровом просмотре (небольшого фрагмента) замечаю, что каждый 6-й кадр повторяется. Правда, от и до проверять покадрово фильм нет сил и терпения. Возможно, в других местах алгоритм дубликатов меняется (такое может быть?). Каким скриптом можно спасти фильм? Я писал selectevery(6,0,1,2,3,4), но это не помогло.
да ничего удивительно, много таких залеп, любят отличиться, например, русские издатели.
Попробуйте по-простому -- decimate(6). Если не поможет копайте в сторону семейства фильтров *decimate, их много, под разные случаи, и параметров у каждого фильтра может быть тоже немало. Надо подстраивать если с разбегу не выйдет.
Закономерность появления дублей лучше на бумагу выписывать, потом проще цепочку отследить. Кадров 50-100 обычно хватает. А уж каких только алгоритмов вживления лишних кадров понапридумывали -- так тут ваще "туши свет" Но у вас скорее простой случай.
[Профиль]  [ЛС] 

Laynos

Стаж: 15 лет 9 месяцев

Сообщений: 32

Laynos · 21-Апр-10 23:02 (спустя 1 месяц 12 дней)

Подскажите, пожалуйста, какие есть программки чтобы максимально сохранить качество исходного материала, переформатировав NTSC в PAL или наоборот, чтобы не возникло проблем, описанных выше? Смысл такой: накачал кучу видеоклипов, но они в разных форматах, хотел создать проект в DVD-Lab Pro2, но нужно чтобы все файлы (VOB) были одного формата...
[Профиль]  [ЛС] 

Ainyr

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

Сообщений: 7


Ainyr · 26-Май-10 19:26 (спустя 1 месяц 4 дня, ред. 27-Май-10 17:55)


Помогите пожалуйста как избавиться от раздвоение изображения!!! Какой фильтр нужен в программе Virtual dub???

И вот этот фильтр поможет убрать раздвоение, если поможет то как с ним пользоваться???
[Профиль]  [ЛС] 

Гость


Гость · 19-Апр-17 09:16 (спустя 6 лет 10 месяцев)

AviSynth, QTGMC (может есть решение и в VapourSynth/прочих технологиях?)
неудача в преобразовании interlace scan -> double frame rate progressive scan,
а именно при удвоении числа кадров, кадры дублируются - выходное видео с удвоенной частотой кадров, но соседние кадры одинаковые
конкретный пример: 1080i@25 -> 1080p@50. Результат 50p, но уникальных (не одинаковых) кадров только 25.
т.е. задача: деинтерлейс с повышением частоты кадров не решена для конкретного видео
По возможности, подскажите решение. Обсуждение:
https://rutr.life/forum/viewtopic.php?p=72940672#72940672
 

Tempter57

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

Сообщений: 4960

Tempter57 · 21-Апр-17 07:01 (спустя 1 день 21 час, ред. 27-Апр-17 21:57)

LiveM
Если после применения боб-деинтерлейса идут дубликаты, то получить 50p можно уплавлением (интерполяцией) дополнительных кадров. Наиболее качественную интерполяцию дают скрипты :
DoubleFPS.avsi
#########################
###
### DoubleFPS()
###
#########################
###
### v.0.3 fixed typo
### changed defaults
### improved accuracy
###
### Function for doubling framerate from original FPS through frame interpolation.
### Useful for better motion smoothness or slow motion. It is prone to artefacting
### so is probably better to fine tune settings apart from function parameters and
### do some craft work.
###
### Didйe function adapted by Dogway (23/02/2011) from following documentation:
### http://forum.doom9.org/showpost.php?p=1409324&postcount=18
### http://www.avsforum.com/avs-vb/showthread.php?p=20045304
###
### It is recommended to supply a clean source to feed this function. It is slow.
###
###
### mode [default: 2]
### -------------------
### Interpolation method:
### 1 = MBlockFps (block interpolation)
### 2 = MFlowFps (pixel interpolation)
### You might want to play with ThSCD.
###
### mopro [default: false]
### -------------------
### motion protection; it duplicates the last frame when there are big
### changes (prone to artifacting), useful for scenechanges, motion blur...
### you may not want it as it might create stutter. [true, false]
###
###
### bias [default: 128]
### -------------------
### Threshold for frame difference detection.
### You wouldn't want to set it higher from
### default value. [0...255]
###
###
### show [default: false]
### -------------------
### Shows a "dot" in the interpolated frames. [true, false]
###
###_________________________________
### |
### Example: |
### |
### DoubleFPS(bias=32,show=true) |
###_________________________________|
###
###
### FEEL FREE TO REMOVE THIS USELESS HELP
##############################################################
function DoubleFPS(clip clp, int "numerator", int "denominator", int "pel",\
int "mode", bool "mopro", int "bias", bool "show")
{
# Defaults
#
numerator = Default(numerator, 2)
denominator = Default(denominator, 1)
pel = Default(pel, 2)
mode = Default(mode, 2)
mopro = Default(mopro, true)
bias = String(Default(bias, 128))
showdot = Default(show, false)
# Here is code of function...
#
v = addborders(clp, 16, 16, 16, 16)
o = v.assumefps(FramerateNumerator(clp))
ox = v.width()
oy = v.height()
S = (showdot == true) ? v.subtitle(".", x=32, y=24).MSuper(pel=pel, hpad=16, vpad=16, rfilter=4) :
\ v.MSuper(pel=pel, hpad=16, vpad=16, rfilter=4)
A = S.MAnalyse(isb=true, blksize=16, overlap=4, plevel=0, search=3, searchparam=8, divide = 2, badrange=(-24), dct=0)
B = S.MAnalyse(isb=false, blksize=16, overlap=4, plevel=0, search=3, searchparam=8, divide = 2, badrange=(-24), dct=0)
C = S.MRecalculate(A, blksize=8, overlap=2, search=3, searchparam=4, thSAD=80)
D = S.MRecalculate(B, blksize=8, overlap=2, search=3, searchparam=4, thSAD=80)
E = S.MRecalculate(C, blksize=4, overlap=0, search=3, searchparam=1, thSAD=100)
F = S.MRecalculate(D, blksize=4, overlap=0, search=3, searchparam=1, thSAD=100)
double = (mode == 1) ? v.MBlockFps(S, E, F, num = FramerateNumerator(v) * numerator, den = FramerateDenominator(v) * denominator, mode = 0, blend = false, ThSCD1 = 220)
\ : (mode == 2) ? v.MFlowFps(S, E, F, num = FramerateNumerator(v) * numerator, den = FramerateDenominator(v) * denominator, mask = 2, ml = 180, blend = false)
\ : NOP()
diff2next = mt_makediff(o, o.selectevery(1, 1)).mt_lut("x "+bias+" - abs 32 / 1 2.0 / ^ 128 *", U=-128, V=-128)
diff2next = mt_lutf(diff2next, diff2next, yexpr="x", mode="average").pointresize(32, 32)
diff2next = interleave(diff2next.selectevery(4, 0).tsg(2), diff2next.selectevery(4, 1).tsg(2),
\ diff2next.selectevery(4, 2).tsg(2), diff2next.selectevery(4, 3).tsg(2))
max = diff2next.mt_logic(diff2next.selectevery(1, -3), "max")
\ .mt_logic(diff2next.selectevery(1, -2), "max")
\ .mt_logic(diff2next.selectevery(1, -1), "max")
\ .mt_logic(diff2next.selectevery(1, 1), "max")
\ .mt_logic(diff2next.selectevery(1, 2), "max")
\ .mt_logic(diff2next.selectevery(1, 3), "max")
ismax = mt_lutxy(diff2next, max, "x y < 255 0 ?", U=-128, V=-128).pointresize(ox, oy) # swap 255 0 to interpolate only on big changes.
themask = interleave(o.mt_lut("0"), ismax)
interleave(o, o).mt_merge(double, themask, luma=true, U=3, V=3)
(mopro == true) ? last.crop(16, 16, -16, -16) : double.crop(16, 16, -16, -16)
return (last)
}
function tsg(clip clp, int t)
{
last = clp
(t < 5) ? last : last.temporalsoften(1, 255, 0, 255, 2).merge(last, 0.25)
(t < 4) ? last : last.temporalsoften(1, 255, 0, 255, 2).merge(last, 0.25)
(t < 3) ? last : last.temporalsoften(1, 255, 0, 255, 2).merge(last, 0.25)
(t < 2) ? last : last.temporalsoften(1, 255, 0, 255, 2).merge(last, 0.25)
(t < 1) ? last : last.temporalsoften(1, 255, 0, 255, 2).merge(last, 0.25)
return (last)
}
и
mx_fps.avsi
# Frame Rate Converter
# Version: 25-Apr-2017
# By Etienne Charland
# Based on Oleg Yushko's YFRC artifact masking,
# johnmeyer's frame interpolation code, and
# raffriff42's "weak mask" and output options.
# Slightly modified interface by manolito
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA, or visit
# http:#www.gnu.org/copyleft/gpl.html.
#######################################################################################
### mx_fps
### Changes the frame rate with interpolation and strong artifact removal.
##
## YV12/YV24/Y8/YUY2
## Requires: MaskTools2, MvTools2, RemoveGrain and fftw3.dll (in the System32 or SysWOW64 folder)
##
## @ fps - The new framerate
##
## @ Preset - The speed/quality preset [slow|normal|fast|faster]. (default=normal)
##
## @ BlkSize - The horizontal block size (default = Width>=1200||Height>=900 ? 32 : Width>=720||C.Height>=480 ? 16 : 8)
##
## @ BlkSizeV - The vertical block size (default = BlkSize)
##
## @ Output - Output mode [auto|inter|none|mask|over] (default=auto)
## auto=normal artifact masking; flow=interpolation only
## none=ConvertFPS only; mask=mask only; over=mask as cyan overlay for debugging
##
## @ MaskGam - A gamma to be applied to the raw mask, between 0 and 1.
## Higher value means stronger mask. (Default=.6)
##
## @ MaskTrh - The treshold where a block is considered bad, between 0 and 255. 0 to disable artifact masking.
## Higher value means stronger mask. (Default=90)
##
## @ SkipOver - Skip interpolation of frames when artifacts cover more than specified treshold,
## 0 to disable. Does not work in Avisynth+ MT mode. (Default=20)
##
function mx_fps(clip C, float "fps", string "Preset", int "BlkSize")
{
fps = default(fps, 25.000)
NewNum = int(fps * 1000)
NewDen = 1000
Output = "auto"
Preset = Default(Preset, "normal")
BlkSize = Default(BlkSize, C.Width>=1200||C.Height>=900 ? 32 : C.Width>=720||C.Height>=480 ? 16 : 8)
BlkSizeV = BlkSize
blkmin = BlkSize > BlkSizeV ? BlkSizeV : BlkSize
MaskGam = .6
MaskTrh = 90
SkipOver = 20
Assert(Preset == "slow" || Preset == "normal" || Preset == "fast" || Preset == "faster", "mx_fps: Preset must be slow, normal, fast or faster")
Assert(BlkSize == 8 || BlkSize == 16 || BlkSize == 32, "mx_fps: BlkSize must be 8, 16 or 32")
# Performance settings: slow, normal, fast, faster
Recalculate= preset == "slow" || preset == "normal"
Prefilter = preset != "faster"
DCT = preset == "slow" ? 1 : 0
## "B" - Blending, "BHard" - No blending
BHard = C.ChangeFPS(NewNum, NewDen)
B = C.ConvertFPS(NewNum, NewDen)
## jm_fps interpolation
prefiltered = Prefilter ? RemoveGrain(C, 22) : C
superfilt = MSuper(prefiltered, hpad = 16, vpad = 16) # all levels for MAnalyse
super = Prefilter ? MSuper(C, hpad = 16, vpad = 16, levels = 1) : superfilt # one level is enough for MRecalculate
bak = MAnalyse(superfilt, isb = true, blksize = BlkSize, blksizeV = BlkSizeV, overlap = blkmin>8?4:blkmin>4?2:0, search = 3, dct = DCT)
fwd = MAnalyse(superfilt, isb = false, blksize = BlkSize, blksizeV = BlkSizeV, overlap = blkmin>8?4:blkmin>4?2:0, search = 3, dct = DCT)
fwd = Recalculate ? MRecalculate(super, fwd, blksize = BlkSize/2, blksizeV = BlkSizeV/2, overlap = blkmin>8?2:0, thSAD = 100) : fwd
bak = Recalculate ? MRecalculate(super, bak, blksize = BlkSize/2, blksizeV = BlkSizeV/2, overlap = blkmin>8?2:0, thSAD = 100) : bak
Flow = MFlowFps(C, super, bak, fwd, num = NewNum, den = NewDen, blend = false, ml = 200, mask = 2)
## "EM" - error or artifact mask
EM = MaskTrh > 0 ? C.MMask(bak, ml=255, kind=1, ysc=255, gamma=1.0/MaskGam) : BlankClip(C) # kind=SAD
EMfwd = MaskTrh > 0 ? C.MMask(fwd, ml=255, kind=1, gamma=1.0/MaskGam) : EM # kind=temporal blending
EM = MaskTrh > 0 ? EM.Overlay(EMfwd, opacity=0.5, mode="lighten") : EM
SkipEM = EM
BlkSize = C.Width>1200||C.Height>900 ? BlkSize : BlkSize == 32 ? 16 : BlkSize
BlkSizeV = C.Width>1200||C.Height>900 ? BlkSizeV : BlkSizeV == 32 ? 16 : BlkSizeV
EM = EM.BicubicResize(Round(C.Width/BlkSize/4.0)*4, Round(C.Height/BlkSizeV/4.0)*4)
\ .mt_expand(mode= mt_circle(zero=true, radius=1))
\ .mt_binarize(255-MaskTrh)
\ .Blur(.6)
\ .BicubicResize(C.Width, C.Height)
## "Sc" - scene detection / SkipOver
Sc = SkipOver > 0 ? ConditionalFilter(SkipEM, BlankClip(EM, color=color_white), BlankClip(EM),
\ "AverageLuma()", ">", string(SkipOver)) : BlankClip(EM)
## Convert masks to desired frame rate
EM = EM.ChangeFPS(NewNum, NewDen)
Sc = Sc.ChangeFPS(NewNum, NewDen)
## the mx_fps magic happens
M = mt_merge(Flow, B, EM, luma=true)
M = SkipOver > 0 ? mt_merge(M, BHard, Sc, luma=true) : M
R = (StrCmpi(Output, "auto")==0) [** auto: artifact masking *]
\ ? M
\ : (StrCmpi(Output, "flow")==0) [** flow: interpolation only *]
\ ? Flow
\ : (StrCmpi(Output, "none")==0) [** none: ConvertFPS only *]
\ ? B
\ : (StrCmpi(Output, "mask")==0) [** mask: mask only *]
\ ? EM
\ : (StrCmpi(Output, "over")==0) [** over: mask as cyan overlay *]
\ ? mt_merge(
\ Flow.Overlay(MergeRGB(BlankClip(EM), EM, EM), mode="Add", opacity=0.40, pc_range=true),
\ BlankClip(EM, color=color_darkgoldenrod), Sc.mt_lut("x 2 / "), luma=true)
\ : NOP()
return R
}
Чуть проще выглядит
скрытый текст
function ConvertMFlowFPS(clip input, int "numerator", int "denominator")
{
prefiltered = input.blur(0.6)
super = MSuper(input, hpad = 16, vpad = 16, levels = 1) # one level is enough for MRecalculate
superfilt = MSuper(prefiltered, hpad = 16, vpad = 16) # all levels for MAnalyse
A = superfilt.MAnalyse(isb=true, blksize=16, overlap=4, plevel=0, search=3, searchparam=2, badrange=(-24), dct=0)
B = superfilt.MAnalyse(isb=false, blksize=16, overlap=4, plevel=0, search=3, searchparam=2, badrange=(-24), dct=0)
C = superfilt.MRecalculate(A, blksize=8, overlap=2, search=3, searchparam=1, thSAD=100)
D = superfilt.MRecalculate(B, blksize=8, overlap=2, search=3, searchparam=1, thSAD=100)
out = MFlowFps(input, super, C, D, num = numerator, den = denominator, blend = false, ml = 200, mask = 2)
return out
}
Можно также применить скрипты уплавления группы SVP.
Следует иметь в виду, что качество интерполированных кадров при движении объекта страдает. Заметно это при покадровом просмотре. При обычном просмотре глаз это вряд ли уловит.
[Профиль]  [ЛС] 

Гость


Гость · 21-Апр-17 21:36 (спустя 14 часов, ред. 21-Апр-17 21:36)

Tempter57
спасибо огромное! home pages (если подобные есть) всех трех, листинг кода которых предоставили, подскажите? Вроде только в DoubleFPS внутри указан URL
да, возникают дубликаты через QTGMC.
Если интересно, оцените что получилось (ссылка временная):
https://yadi.sk/d/dDOLHj5r3GXJFh
только в InterFrame 2.8.2 (на основе SVPFlow 4.0.0.128) переход между сценами получается "постепенный" что ли, как очень быстрый fade out т fade in. Пока не знаю хорошо это или плохо, в исходниках такого нет.
 

Tempter57

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

Сообщений: 4960

Tempter57 · 22-Апр-17 08:31 (спустя 10 часов, ред. 22-Апр-17 08:31)

LiveM
В основном разные варианты уплавления обсуждаются активно здесь https://forum.doom9.org/showthread.php?t=174410
Правильно подметили вариант смены сцен в InterFrame 2.8.2 (на основе SVPFlow 4.0.0.128). Именно этот переход мне не особо импонирует. В остальных скриптах уплавления применяется MFlowFps с blend=false по умолчанию, поэтому не наблюдается наложений при переходе, связанном со сменой сцен.
Моё мнение следующее:
1) скрипты интерполяции необходимы в случае, когда мы работает со старыми исходниками с частотой 16,666 или 18,75 fps, зачастую это реставрация 8 мм киноплёнки , и пытаемся установить на выходе частоту 25 fps. Выполнить это можно достраивая дополнительные интерполированные кадры при этом максимально сохрянняя оригинальные. Обратите внимание, что 16,666*3=50 Гц и 18,75*4=75 Гц. Отсюда делайте правильный выбор значений num и den в функции MFlowFps, чтобы сохранить наибольшее число оригинальных кадров.
2) для получения эффекта уплавления стоит только для просмотра подключить скрипт SVP или ConvertMFlowFPS, если процессор не будет тормозить. В прочих случаях подобные рипы от лукавого.
Если материал исходника снят реально на интерлейсную видеокамеру PAL и вы действительно наблюдаете в каждом поле движение, то тогда выполняем боб-деинтерлейс и получаем на выходе 50 fps. В основном так снимают студийно спортивные мероприятия, ну и существует огромный потенциал домашних интерлейсных камкодеров. В данном случае скрипт на основе QTGMC.avsi только частный случай боб-деинтерлейса, но при этом один из наиболее качественных. Объясню почему. В принципе боб-деинтерлейсы фактически интерполируют каждое поле до полного кадра, то есть фактически имеем классический пример апскейла по вертикали в 2 раза. А какой из скриптов апскейла наиболее качественный? -Тот, который базируется на плагинах NNEDI3 и EEDI3. Вот отсюда и все преимущества QTGMC.avsi + векторный анализ оценки движения + дополнительные возможности ремонта контуров и пост-обработки кадра в целом, включая временной шумоподавитель на более сложных пресетах.
[Профиль]  [ЛС] 

Гость


Гость · 24-Апр-17 20:50 (спустя 2 дня 12 часов, ред. 25-Апр-17 13:55)

Tempter57,
спасибо за подробный комментарий!
Цитата:
для получения эффекта уплавления стоит только для просмотра подключить скрипт SVP или ConvertMFlowFPS, если процессор не будет тормозить. В прочих случаях подобные рипы от лукавого.
поясните почему от лукавого, конечно, принцип интерполяции таков, что появляются артефакты, но в оффлайн обработке мы может задать максимальное качество интерполяции, а в real-time часто железо наших компов этого не позволяет. не все сидят на топовых четырехядерниках, да еще и без фоновой активности. чего процессору uT стоит на сотне раздач с up-каналом хотя бы в 30-50 Мбит/с или при скачивании...
поведайте почему от лукавого - только артефакты? но это же самая качественная обработка из возможных, к тому же такой раздаче всегда есть альтернативы с оригинальным fps.
еще вопрос: скажите, а попадался ли ещё более качественный интерполятор, пусть и более требовательный к ресурсам?
производительность кодера x265 с моими настройками (конечно не самыми идеальными по качеству: к сожалению, железо не позволяет) получается на 2 порядка ниже (в сто раз примерно), чем у интерполятора - т.е. по обработке видео данные интерполяторы что-то совсем "дохлые" (мала обработка) относительно кодера.
Пробовал 4 указанных Вами:
DoubleFPS.avsi
FrameRateConverter.avsi
ConvertMFlowFPS.avsi
InterFrame 2.8.2 (SVPFlow 4.0.0.128 based)

Подскажите, если встречали покачественнее не зависимо от производительности.
Чем хуже качество интерполяции, тем больше соседние (опорный и интерполированый) кадры отличаются друг от друга, хуже качество кодирования при даже при большем CRF или bit rate. Или приходится увеличивать итоговый размер файла очень круто (а оно надо вообще? как исходник что ли громоздить?), чтобы замыливание хотя бы на опорных кадрах попытаться убрать (не пробовал). В общем если обработка у интерполяторов молниеносная, то, скорее всего, они и формируют так себе интерполяцию кадра.
Озвученные 4 интерполятора не нашли применения для передачи ПрожекторПерисХилтон: HDTV 1080p 25p сильно чётче HDTV 1080p 50p полученных любым из этой четвёрки при условии CRF, отличающегося на 2 пункта. зависимость-то не должна быть прямая типа "в 2 раза больше кадров, типа значит в 2 раза больше битрейт" - движений то от кадру к кадру меньше.
 

waldis2

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

Сообщений: 2321


waldis2 · 27-Авг-17 14:40 (спустя 4 месяца 2 дня, ред. 27-Авг-17 14:40)

LiveM писал(а):
72980903Подскажите, если встречали покачественнее не зависимо от производительности
Попробуйте вот такие "комбайны"
TempGaussMC / QTGMC, mcbob2, srestore
[Профиль]  [ЛС] 
 
Ответить
Loading...
Error