|
glock-17
Стаж: 17 лет 4 месяца Сообщений: 19
|
glock-17 ·
27-Янв-11 22:05
(13 лет 10 месяцев назад, ред. 27-Янв-11 22:07)
Всем Доброго времени суток, очень нужна помощь опытных видеомонтажников. Я сам чайник в этом, накропал скрипт (честно сказать скомпилировал из нескольких), вот он:
скрытый текст
Код:
# Убираем звук KillAudio() # Обрезаем кривые края crop( left = 16, \
top = 16, \
-right = -16, \
-bottom = -16) # Добавляем обратно бордюрчик AddBorders( left = 16, \
top = 16, \
right = 16, \
bottom = 16) # Восстанавливаем баланс белого ConvertToRGB32()
ACOBW(44,2,0)
ConvertToYV12() # Удаляем одиноких точек (мошек) Undot() # Подавление цветового шума VHS Cnr2( mode = "oxx", \
scdthr = 8, \
ln = 16, \
lm = 191, \
un = 100, \
um = 255, \
vn = 32, \
vm = 255, \
log = false, \
sceneChroma = false) # Удаление горизонтальных и вертикальных полос и царапин turnleft()
DeScratch( mindif = 3, \
asym = 10, \
maxgap = 20, \
maxwidth = 3, \
minlen = 72, \
maxlen = 1000, \
maxangle = 10, \
blurlen = 50, \
keep = 100, \
border = 0, \
modeY = 1, \
modeU = 1, \
modeV = 1, \
mindifUV = 0, \
mark = false)
turnright()
DeScratch( mindif = 3, \
asym = 10, \
maxgap = 20, \
maxwidth = 3, \
minlen = 72, \
maxlen = 1000, \
maxangle = 10, \
blurlen = 50, \
keep = 100, \
border = 0, \
modeY = 1, \
modeU = 1, \
modeV = 1, \
mindifUV = 0, \
mark = false) # Удаляем размытость цветовых контуров RemoveColorBleeding() # Удаляем радужность DeRainbow2() # Предварительная фильтрация DeGrainMedian( mode = 3, \
limity = 8, \
limituv = 8, \
norow = true) # Готовим супер-клип для последующего анализа super = MSuper( hpad = 0, \
vpad = 0, \
pel = 2, \
levels = 0, \
chroma = true, \
sharp = 2, \
rfilter = 4) # Анализируем движение (получаем вектора на +/- 3 кадра) с помощью функции MAnalyse плагина MVTools vb3 = MAnalyse( super, \
isb = true, \
truemotion = true, \
delta = 3, \
blksize = 8, \
overlap = 2, \
lambda = 1000, \
pelsearch = 2, \
search = 3, \
searchparam = 4, \
chroma = true)
vb2 = MAnalyse( super, \
isb = true, \
truemotion = true, \
delta = 2, \
blksize = 8, \
overlap = 2, \
lambda = 1000, \
pelsearch = 2, \
search = 3, \
searchparam = 4, \
chroma = true)
vb1 = MAnalyse( super, \
isb = true, \
truemotion = true, \
delta = 1, \
blksize = 8, \
overlap = 2, \
lambda = 1000, \
pelsearch = 2, \
search = 3, \
searchparam = 4, \
chroma = true)
vf1 = MAnalyse( super, \
isb = false, \
truemotion = true, \
delta = 1, \
blksize = 8, \
overlap = 2, \
lambda = 1000, \
pelsearch = 2, \
search = 3, \
searchparam = 4, \
chroma = true)
vf2 = MAnalyse( super, \
isb = false, \
truemotion = true, \
delta = 2, \
blksize = 8, \
overlap = 2, \
lambda = 1000, \
pelsearch = 2, \
search = 3, \
searchparam = 4, \
chroma = true)
vf3 = MAnalyse( super, \
isb = false, \
truemotion = true, \
delta = 3, \
blksize = 8, \
overlap = 2, \
lambda = 1000, \
pelsearch = 2, \
search = 3, \
searchparam = 4, \
chroma = true) # Используем первый основной шумодав MDegrain3 плагина MVTools MDeGrain3 ( super, \
mvbw = vb1, \
mvfw = vf1, \
mvbw2 = vb2, \
mvfw2 = vf2, \
mvbw3 = vb3, \
mvfw3 = vf3, \
thSAD = 240, \
thSADC = 240, \
plane = 4, \
limit = 255, \
limitC = 255, \
thSCD1 = 270, \
thSCD2 = 90, \
isse = true, \
planar = false) # Используем второй основной шумодав FFT3DFilter fft3dfilter( wintype = 1, \
bt = 5, \
bw = 64, \
bh = 64, \
ow = 32, \
oh = 32, \
degrid = 1, \
sigma = 3.5, \
sigma2 = 2.5, \
sigma3 = 2.0, \
sigma4 = 2.5, \
plane = 4) # Шумодав в виде функции Fizzkiller на основе того же MDeGrain 1,2 или 3 (на выбор) и RemoveGrain Fizzkiller( degrain = 3, \
blksize = 8, \
overlap = 2, \
thSAD = 400) # Повышаем резкость LSFmod( defaults = "slow", \
preblur = "ON", \
strength = 90)
Gradfun2dbmod( thr = 1.4, \
thrC = 1.8, \
str = 1.75, \
temp = 60, \
adapt = 64) # Скрипт скомпилирован на основе материалов предоставленных Howler на различных форумах, за что ему огромный респект
Хочу использовать для очистки VHS оцифровок. Цифровал с помощью iuVCS без сжатия.
Требуется помощь:
1. Покритикуйте, может что лишнее или не хватает, или параметры не совсем удачные, или может стоить заменить какие-то фильтры/функции или поменять их порядок.
2. Помогите пожалуйста прикрутить это все к чересстрочному видео, чтобы на выходе сохранился интерлейс (Top Field First).
Не стал указывать импорт всех dll и допфункций, это и так понятно.
Большое спасибо.
|
|
Tempter57
Стаж: 16 лет 1 месяц Сообщений: 4960
|
Tempter57 ·
28-Янв-11 00:07
(спустя 2 часа 1 мин., ред. 28-Янв-11 00:07)
Ну скажем так, я никогда не включал в этот скрипт MDegrain3 совместно с Fizzkiller с радиусом 2 да в придачу ещё FFT3DFilter между ними. Максимум MDegrain1+Fizzkiller. Два таких векторных анализа да ещё с размером блоков 8 и перекрытием 2 для VHS это тоже жесть, результат можно ждать сутками. Рекомендация 16\ 4.
Теперь о начале скрипта: есть у Столяревсого помимо ACOBW прекрасный фильтр для подавления цветового шума камкодеров CamCD. Так вот справляется превосходно не только с цветовым шумом(с ним можно во всех векторных анализах установить chroma=false и процесс обработки значительно ускорится), но этот фильтр лучше всех убирает радужность изображения. Он присутствует во пресетах для камкодеров и SATRip. Практически он заменяет Cnr2, DeRainbow2 и позволяет установить по векторным анализам chroma=false. Притом по эффетивности он превосходит все их вместе взятые. Будьте осторожны и с применением RemoveColorBleeding(). Помимо этого значения thSAD=240 для VHS очень низкое, надо увеличивать.
Фильтр DeScratch по умолчанию вряд ли подойдет и ему на VHS особо делать нечего, если фильм не очень старый и зашарпанный, а вот, если плёнки VHS была нарезаны механически и есть горизонтальные полосы или факела слева в начале развёртки, тут надо уже думать о другом фильтре DePulse
Код:
#plugin_files
#ccd_sse2.vdf
#vdf_arguments:CamCD:0
#DePulse.dll ConvertToRGB32()
CamCD(7,1) # удаление радужности и цветового шума
#ConvertToYUY2()
#DePulse(h=20, l=70, d=40, debug=false) #обязательно подстроить надо
ConvertToYV12()
|
|
glock-17
Стаж: 17 лет 4 месяца Сообщений: 19
|
glock-17 ·
28-Янв-11 09:52
(спустя 9 часов, ред. 28-Янв-11 09:52)
Tempter57, спасибо Вам, что откликнулись)))
Да, я преднамеренно взял пресеты VHS DLS и какой-то из Молотовых, и специально загнал параметры практически в экстремальный режим.
Вы говорите, что этого делать не стоит, не могли бы Вы пояснить - не стоит только потому, что займет ну ооочень много времени или изуродует картинку или просто особого дополнительного эффекта я не увижу?
Время обработки для меня значения не имеет.
Еще такой вопрос, что лучше оставить Mdegrain+Fizzkiller или же Mdegrain+FFT3DFilter
Насчет значения thSAD - это Ваша рекомендация на Хоботе!
Спасибо за рекомендацию CamCD, сделаю как Вы рекомендуете, только не понял ACOBW оставить или тоже убрать?
|
|
Pustovetov
Стаж: 17 лет Сообщений: 4255
|
Pustovetov ·
28-Янв-11 21:57
(спустя 12 часов)
glock-17 писал(а):
Насчет значения thSAD - это Ваша рекомендация на Хоботе!
thSAD (и прочие параметры) необходимо подбирать по конкретному источнику, а не копировать какие-то рекомендации. И я бы на Вашем месте озаботился бы в первую очередь вопросом применимости Вашего скрипта к интерлейсному видео.
|
|
glock-17
Стаж: 17 лет 4 месяца Сообщений: 19
|
glock-17 ·
30-Янв-11 21:37
(спустя 1 день 23 часа)
Pustovetov, ну на самом деле я думал SelectEven/SelectOdd, потом Weave, а между ними собсно сам скрипт. Или я не прав?
|
|
Pustovetov
Стаж: 17 лет Сообщений: 4255
|
Pustovetov ·
31-Янв-11 07:36
(спустя 9 часов)
glock-17 писал(а):
Pustovetov, ну на самом деле я думал SelectEven/SelectOdd, потом Weave, а между ними собсно сам скрипт. Или я не прав?
С интерлейсным видео я еще не работал, так что самому интересно как его правильно обработать =) У нас есть поток полукадриков которые сдвинуты относительно друг друга на строчку вверх/вниз.
1) separatefields..... weave. mdegrain не знает об этом сдвиге и будет складывать и делить содержимое соседних строчек.
2) selecteven/selectodd .... weave. Мы фактически фильтруем раздельно два клипа и потом их сливаем. Имхо это черевато разными артефактами
3) nnedi3( field=-2).... Наверно будут артефакты от интерполяции )
|
|
glock-17
Стаж: 17 лет 4 месяца Сообщений: 19
|
glock-17 ·
31-Янв-11 09:50
(спустя 2 часа 14 мин., ред. 01-Фев-11 15:46)
Pustovetov, имхо, из того что я читал (в первую очередь статья Балахнина ака Fizik "основы использования утилиты Avisynth") второй вариант самый правильный. Именно так это внутренне реализовано в фильтрах DeGrainMedian и FFT3DFilter при параметре interlaced=true.
В принципе можно наверное, рассматривать интерлейсное видео как два разных клипа снятых с задержкой 1/50 секунды и сдвинутых на одну строку.
Я думаю как-то вот так можно (учитывая рекомендации Tempter57)
скрытый текст
Код:
# Загружаем нашу capture, отрубаем звук AVISource("VHS.avi", audio=false, pixel_type="YUY2") #plagin files LoadVirtualDubPlugin("\plugins\ACOBW.vdf", "ACOBW", 0)
LoadVirtualDubPlugin("\plugins\ccd_sse2.vdf", "CamCD", 0)
LoadPlugin("\plugins\UnDot.dll")
LoadPlugin("\plugins\degrainmedian.dll")
LoadPlugin("\plugins\mvtools2.dll")
LoadPlugin("\plugins\fft3dfilter.dll")
Import("\plugins\LimitedSharpenFaster MOD.avs")
Import("\plugins\GradFun2DBmod.avs")
LoadPlugin("\plugins\MaskTools.dll")
LoadPlugin("\plugins\RemoveGrain.dll")
LoadPlugin("\plugins\WarpSharp.dll")
LoadPlugin("\plugins\Gradfun2db.dll")
LoadPlugin("\plugins\AddGrainC.dll") # Указываем явно: клип основан на кадрах, верхнее поле первое AssumeFrameBased()
AssumeTFF() # Обрезаем кривые края crop(left=16, top=16, -right=-16, -bottom=-16, align=true) # Добавляем обратно бордюрчик AddBorders(left=16, top=16, right=16, bottom=16) # Разделяем на поля и далее обрабатываем два отдельных клипа SeparateFields()
Even=SelectEven()
Odd=SelectOdd() # Удаляем одиноких точек (мошек) Even=Undot(Even) Odd=Undot(Odd) # Восстанавливаем баланс белого, убираем радужность и цветовой шум VHS ConvertToRGB32(Even)
ACOBW(44,2,0)
CamCD(7,1)
Even=ConvertToYV12() ConvertToRGB32(Odd)
ACOBW(44,2,0)
CamCD(7,1)
Odd=ConvertToYV12() # Предварительная фильтрация Even=DeGrainMedian(Even, mode=3, limitY=8, limitUV=8, norow=true) Odd=DeGrainMedian(Odd, mode=3, limitY=8, limitUV=8, norow=true) # Готовим супер-клипы для последующего анализа superEven = MSuper(Even, hpad=0, vpad=0, pel=2, levels=0, chroma=false, sharp=2, rfilter=4) superOdd = MSuper(Odd, hpad=0, vpad=0, pel=2, levels=0, chroma=false, sharp=2, rfilter=4) # Анализируем движение (получаем вектора на +/- 3 кадра) с помощью функции MAnalyse плагина MVTools vb3Even=MAnalyse(superEven, isb=true, truemotion=true, delta=3, blksize=8, overlap=2, lambda=1000, pelsearch=2, search=3, searchparam=4, chroma=false)
vb2Even=MAnalyse(superEven, isb=true, truemotion=true, delta=2, blksize=8, overlap=2, lambda=1000, pelsearch=2, search=3, searchparam=4, chroma=false)
vb1Even=MAnalyse(superEven, isb=true, truemotion=true, delta=1, blksize=8, overlap=2, lambda=1000, pelsearch=2, search=3, searchparam=4, chroma=false)
vf1Even=MAnalyse(superEven, isb=false, truemotion=true, delta=1, blksize=8, overlap=2, lambda=1000, pelsearch=2, search=3, searchparam=4, chroma=false)
vf2Even=MAnalyse(superEven, isb=false, truemotion=true, delta=2, blksize=8, overlap=2, lambda=1000, pelsearch=2, search=3, searchparam=4, chroma=false)
vf3Even=MAnalyse(superEven, isb=false, truemotion=true, delta=3, blksize=8, overlap=2, lambda=1000, pelsearch=2, search=3, searchparam=4, chroma=false) vb3Odd=MAnalyse(superOdd, isb=true, truemotion=true, delta=3, blksize=8, overlap=2, lambda=1000, pelsearch=2, search=3, searchparam=4, chroma=false)
vb2Odd=MAnalyse(superOdd, isb=true, truemotion=true, delta=2, blksize=8, overlap=2, lambda=1000, pelsearch=2, search=3, searchparam=4, chroma=false)
vb1Odd=MAnalyse(superOdd, isb=true, truemotion=true, delta=1, blksize=8, overlap=2, lambda=1000, pelsearch=2, search=3, searchparam=4, chroma=false)
vf1Odd=MAnalyse(superOdd, isb=false, truemotion=true, delta=1, blksize=8, overlap=2, lambda=1000, pelsearch=2, search=3, searchparam=4, chroma=false)
vf2Odd=MAnalyse(superOdd, isb=false, truemotion=true, delta=2, blksize=8, overlap=2, lambda=1000, pelsearch=2, search=3, searchparam=4, chroma=false)
vf3Odd=MAnalyse(superOdd, isb=false, truemotion=true, delta=3, blksize=8, overlap=2, lambda=1000, pelsearch=2, search=3, searchparam=4, chroma=false) # Используем первый основной шумодав MDegrain3 плагина MVTools Even=MDeGrain3(superEven, vb1Even, vf1Even, vb2Even, vf2Even, vb3Even, vf3Even,\
thSAD=400, thSADC=400, plane=4, limit=255, limitC=255, thSCD1=270, thSCD2=90, isse=true, planar= false) Odd=MDeGrain3(superOdd, vb1Odd, vf1Odd, vb2Odd, vf2Odd, vb3Odd, vf3Odd,\
thSAD=400, thSADC=400, plane=4, limit=255, limitC=255, thSCD1=270, thSCD2=90, isse=true, planar= false) # Используем второй основной шумодав FFT3DFilter Even=FFT3Dfilter(Even, wintype=1, bt=5, bw=64, bh=64, ow=32, oh=32, degrid=1, sigma=3.5, sigma2=2.5, sigma3=2.0, sigma4=2.5, plane=4) Odd=FFT3Dfilter(Odd, wintype=1, bt=5, bw=64, bh=64, ow=32, oh=32, degrid=1, sigma=3.5, sigma2=2.5, sigma3=2.0, sigma4=2.5, plane=4) # Повышаем резкость last=Even
LSFmod(defaults="slow", preblur="ON", strength=90)
Gradfun2dbmod(thr=1.4, thrC=1.8, str=1.75, temp=60, adapt=64)
Even=last last=Odd
LSFmod(defaults="slow", preblur="ON", strength=90)
Gradfun2dbmod(thr=1.4, thrC=1.8, str=1.75, temp=60, adapt=64)
Odd=last # Собираем исходную последовательность полей Interleave(Even, Odd) # Соединяем поля в кадры Weave() # Для Rhozet/Carbon Coder'а ConvertToYUY2(interlaced=true)
|
|
Tempter57
Стаж: 16 лет 1 месяц Сообщений: 4960
|
Tempter57 ·
01-Фев-11 18:57
(спустя 1 день 9 часов, ред. 01-Фев-11 22:31)
glock-17
Код:
ConvertToYV12(interlaced=true)
AssumeBFF()
#TDeint(mode=1,order=0) # mode=0 deinterlace, mode=1 doubleframerate, order=0 BFF, order=1 TFF
yadifmod(mode=1, order=0, edeint=nnedi3(field=-3)) #mode=1 means double framerate,field=-2 means double rate (alternates each frame) # Фильтрация SeparateFields().SelectEvery(4, 0, 3).Weave()
#DoubleWeave().SelectEvery(4,1)
AutoYUY2() # нероновский или ConvertToYUY2(interlaced=true)
Далее подается скрипт либо Rhozet Carbon Coder либо CCE SP2
|
|
Areyou
Стаж: 16 лет Сообщений: 1703
|
Areyou ·
01-Фев-11 22:18
(спустя 3 часа, ред. 02-Фев-11 08:31)
В этом скрипте не все здорово (даже если оставить в стороне отключенные альтернативы - они не вполне взаимозаменяемы - и отсутствие строк импорта + загрузки плагинов).
a) ConvertToYUY2() ошибочно в конце скрипта - видео чересстрочное, поэтому нужно либо ConvertToYUY2(interlaced=true), либо (лучше) ConvertToYUY2(), но перед SeparateFields()
б) Хаос с порядком полей. Допустим, отключенные строки отсутствуют. В начале скрипта AssumeBFF(). Конкретно yadif(mod) устроен так, что транслирует входной порядок на свой выход (хотя сам работает по указанным параметрам - там тоже нужно не промахнуться). Значит BFF остается перед
SeparateFields().SelectEvery(4, 0, 3).Weave()
Эта комбинация не инвертирует порядка полей, и на выходе будет BFF, чего пользователь, которому предложен скрипт, может не знать (нет комментария) и может легко ошибиться при кодировании. Как и в случае, если выберет DoubleWeave().SelectEvery(4,1) с переворотом в TFF.
в)рекомендация "или нероновский AutoYUY2()" бесполезна, плагин может что-то изменить по сравнению со встроенной функцией только на гибридном видео (с чередованием прогрессивных и чересстрочных фрагментов).
г) ConvertToYV12 в большинстве случаев не нужно Пример нормального скрипта, делающего тоже самое:
скрытый текст
# строки импорта видео и загрузки плагинов
LeakKernelBob(order=1)# order=0 если на входе BFF; либо любимый плагин
# ресайз и фильтры
#ColorMatrix(mode="Rec.709->Rec.601")# если переход из HD в SD
ConvertToYUY2() # если для CCE или канопуса; для HCEncoder оставить YV12
AssumeBFF().DoubleWeave().SelectEvery(4,1)# TFF либо с таким реинтерлейсом (тот же результат):
# строки импорта видео и загрузки плагинов
LeakKernelBob(order=1)# order=0 если на входе BFF; либо любимый плагин
# ресайз и фильтры
#ColorMatrix(mode="Rec.709->Rec.601")# если переход из HD в SD
ConvertToYUY2() # если для CCE или канопуса; для HCEncoder оставить YV12
AssumeTFF()# соотв. нужному на выходе
SeparateFields()
SelectEvery(4,0,3)
Weave()# TFF
|
|
glock-17
Стаж: 17 лет 4 месяца Сообщений: 19
|
glock-17 ·
02-Фев-11 00:01
(спустя 1 час 42 мин., ред. 02-Фев-11 00:01)
Areyou, Tempter57 большое спасибо за комментарии. Скажите, а скрипт под спойлером, в моем последнем посте жизнеспособен? (Ну конечно если дописать пути к плагинам))).
Интересует именно такое разделение исходного интерлейсного источника на два клипа, состоящих соответственно из четных и нечетных полей, последующая раздельная фильтрация (да возможно фильтры слишком жестокие, и это будет делаться мега-долго) и обратное их слияние. Или данный подход неправильный априорно?
Если все-таки можно делать так как я описал, то подскажите как правильно применять плагин МТ для двухядерника так, чтобы не было вертикальной полосы склейки, я читал, что многие с этим сталкиваются. Или ткните носом, где можно на русском про этот плагин почитать, а то с аглицким тугова-то.
|
|
Tempter57
Стаж: 16 лет 1 месяц Сообщений: 4960
|
Tempter57 ·
02-Фев-11 08:27
(спустя 8 часов, ред. 02-Фев-11 17:12)
glock-17
По большому счёту в настоящее время все свои проблемы по обработке оцифрованных VHS, вы можете решить одним скриптом QTGMC.avsi (самый качественный боб-деинтерлейс, шумодав до MDegrain3, ремонот контуров, шарпер, частичный возврат детализации и шума), а после его обработки перевести его в цветовое пространство YUY2, сделать видео вновь интерлейсным и скормить Карбону или ССЕ. Описание вариантов обработки подробно есть в самом скрипте QTGMC.avsi
Интерлейсное видео можно очистить от шума и без боб-деинтерлейса с помощью MDegrain2i2_CS или MDegrain3i3_CS:
Код:
function MDegrain2i2_CS(clip clp, int "overlap", int "dct")
{
overlap=default(overlap,0) # overlap value (0 to 4 for blksize=8)
dct=default(dct,0) # use dct=1 for clip with light flicker
fields=clp.SeparateFields() # separate by fields
super = fields.MSuper()
backward_vec2 = super.MAnalyse(isb = true, delta = 2, overlap=overlap, dct=dct)
forward_vec2 = super.MAnalyse(isb = false, delta = 2, overlap=overlap, dct=dct)
backward_vec4 = super.MAnalyse(isb = true, delta = 4, overlap=overlap, dct=dct)
forward_vec4 = super.MAnalyse(isb = false, delta = 4, overlap=overlap, dct=dct)
NR = fields.MDegrain2(super, backward_vec2,forward_vec2,backward_vec4,forward_vec4,thSAD=400)
s = NR.minblur(1,1)
allD = mt_makediff(fields,NR)
ssD = mt_makediff(s,s.removegrain(11,-1))
ssDD = ssD.repair(allD,1)
ssDD = ssDD.mt_lutxy(ssD,"x 128 - abs y 128 - abs < x y ?")
NR.mt_adddiff(ssDD,U=2,V=2)
Weave()
}
Но впереди всё же для VHS примените обработку Cnr2 или CamCD. В этом случае в векторном анализе можно отказаться от обработки сигнала цветности chroma=false. Это позволит вам увеличить скорость обработки значительно.
Теперь комментарий относительно вашего скрипта:
Вы в своём скрипте обрабатываете поля абсолютно одинаковыми фильтрами, затеяли два векторных анализа для каждого поля. На мой взгляд, не стоило это делать и усложнять скрипт. Перед вами скрипт MDegrain2i2_CS. Можно его преобразовать MDegrain3i3_CS и если вы желаете обрабатывать материал по принципу фильтрации Молотов: после MDegrain3 ещё и дополнительно почистить FFT3DFilter, то нет проблем, добавьте его перед Contra-Sharpening, сразу за MDegrain3. Только вот с указанными сигмами вы настолько сделаете изображение не реально вылизанным. что получите просто восковые лица. Спрашивается зачем ? да ещё после столь сильного временного шумоподавителя, как MDegrain3 ? И почему вы им чистите ещё и цветность, если это уже выполнил CamCD? И я бы не применял здесь скрипты повышения резкости, содержащие в своей структуре ресайзеры( LimitedSharpenFaster или LSFmod, а также SeeSaw), а также Gradfun2dbmod, поскольку мы имеем дело не с целым кадром ( в случае скрипта с боб-деинтерлейсом каждое поле восстанавливается до полного кадра), а только с полями с половинчатым размером по вертикали.
P.S. Почему здесь не спросили меня о цветовом сдвиге сразу, а вынесли вопрос на forum.ixbt. Я бы вам рассказал, но раз MAG79 это уже сделал, то смысла повторяться нет.
|
|
siberg_andre
Стаж: 16 лет 8 месяцев Сообщений: 24
|
siberg_andre ·
21-Фев-11 21:28
(спустя 19 дней)
прошу прощения.
следующий скрипт не выполним?
Код:
a=AviSource("D:\VIDEO\1.mkv")
b=AviSource("D:\VIDEO\2.avi")
StackHorizontal(a,b)
спасибо.
|
|
MMMXXX_2
Стаж: 15 лет 10 месяцев Сообщений: 78
|
MMMXXX_2 ·
21-Фев-11 21:36
(спустя 8 мин.)
siberg_andre писал(а):
...следующий скрипт не выполним?
AviSource, скорее всего, не откроет MKV. Используй DirectShowSource или сначала вытащи видеопоток из MKV.
|
|
siberg_andre
Стаж: 16 лет 8 месяцев Сообщений: 24
|
siberg_andre ·
21-Фев-11 21:57
(спустя 21 мин., ред. 21-Фев-11 21:57)
MMMXXX_2 писал(а):
siberg_andre писал(а):
...следующий скрипт не выполним?
AviSource, скорее всего, не откроет MKV. Используй DirectShowSource или сначала вытащи видеопоток из MKV.
действительно. при следующем коде
Код:
a=DirectShowSource("D:\VIDEO\1.mkv")
b=AviSource("D:\VIDEO\2.avi")
StackHorizontal(a,b)
ошибка появляется лишь в третьей строке StackHorizontal: image formats dont match
при одинаковых разрешениях. хочу сравнить два ролика кодированых разными способами.
|
|
MMMXXX_2
Стаж: 15 лет 10 месяцев Сообщений: 78
|
MMMXXX_2 ·
21-Фев-11 23:35
(спустя 1 час 37 мин., ред. 21-Фев-11 23:35)
siberg_andre писал(а):
ошибка появляется лишь в третьей строке StackHorizontal: image formats dont match
при одинаковых разрешениях. хочу сравнить два ролика кодированых разными способами.
У тебя форматы видео разные, о чем тебе и сообщают. Делаешь так:
Перед StackHorizontal добавляешь строку:
return a.info
Списываешь что тебе выдало info
Затем изменяешь её на:
return b.info
Сравниваешь с параметрами первого клипа и делаешь вывод что нужно изменить. Для StackHorizontal нужно, чтобы высота изображения и цветовой формат совпадали.
|
|
siberg_andre
Стаж: 16 лет 8 месяцев Сообщений: 24
|
siberg_andre ·
21-Фев-11 23:51
(спустя 16 мин.)
MMMXXX_2 писал(а):
siberg_andre писал(а):
ошибка появляется лишь в третьей строке StackHorizontal: image formats dont match
при одинаковых разрешениях. хочу сравнить два ролика кодированых разными способами.
У тебя форматы видео разные, о чем тебе и сообщают. Делаешь так:
Перед StackHorizontal добавляешь строку:
return a.info
Списываешь что тебе выдало info
Затем изменяешь её на:
return b.info
Сравниваешь с параметрами первого клипа и делаешь вывод что нужно изменить. Для StackHorizontal нужно, чтобы высота изображения и цветовой формат совпадали.
точно. colorspace не совпадает.
иначе никак без перекодирование не сравнить?
|
|
MMMXXX_2
Стаж: 15 лет 10 месяцев Сообщений: 78
|
MMMXXX_2 ·
22-Фев-11 00:01
(спустя 10 мин.)
siberg_andre писал(а):
colorspace не совпадает.
иначе никак без перекодирование не сравнить?
Достаточно просто добавить
.ConvertToRGB или .ConvertToYV12 или .ConvertToYUY2
в конце одной из первых двух строк.
|
|
siberg_andre
Стаж: 16 лет 8 месяцев Сообщений: 24
|
siberg_andre ·
22-Фев-11 00:18
(спустя 17 мин., ред. 22-Фев-11 00:18)
MMMXXX_2 спасибо!!
а то я уже фильтр начал искать)
|
|
oQAVqbo
Стаж: 14 лет Сообщений: 416
|
oQAVqbo ·
18-Мар-11 12:31
(спустя 24 дня, ред. 18-Мар-11 12:31)
Просьба! Люди добрые, не могли бы вы создать инструкцию для чайников по оцифровке VHS в iuVCS (без сжатия или с использованием кодека Huffyuv v2.1.1 - CCESP Patch v0.2.5) и очистке скриптом AviSynth для подачи в Карбон.
|
|
glock-17
Стаж: 17 лет 4 месяца Сообщений: 19
|
glock-17 ·
18-Мар-11 16:55
(спустя 4 часа, ред. 18-Мар-11 16:55)
Камрады, два вопроса. Помогите прояснить пожалуйста.
1. Допустим я захватил видео неправильно (указал верхнее поле первым). В итоге получил смещение полей в потоке. Лечу этот баг следующим скриптом:
скрытый текст
AssumeFrameBased
AssumeTFF
separatefields()
Even=SlectEven.DeleteFrame(0)
Odd=SelectOdd
Interleave(Even,Odd)
Weave()
И теперь хочу подать этот avs скрипт на вход карбон-кодера, сохранив интерлейс. Так у меня теперь первое поле получается уже не верхнее? Что указать в карбон-кодере? Lower Field First или Top Field First?
2. Наблюдаю такой эффект - кодирую карбон-кодером, подаю ему на вход avs-скрипт, звук не убирал, изначальный источник avi с несжатыми видео и аудио потоками, кодирую в MPEG2 и AC3 соответственно, на выходе получаю видео, в котором не хватает кадров и у которого меньшая продолжительность, сюжет весь на месте, просто такое впечатление, что выборочно проделана децимация кадров. Вместо 1 часа 16 минут исходного получаю 57 минут после кодера. С чем это может быть связано? Частота кадров такая же 25 fps.
|
|
oQAVqbo
Стаж: 14 лет Сообщений: 416
|
oQAVqbo ·
19-Мар-11 10:38
(спустя 17 часов, ред. 04-Апр-11 09:41)
glock-17, ты о m2v? Продолжительность не будет корректно определятся. Соберешь и все встанет на место. Аудио лучше дугими прогами делать. Тебе нужен мануал: https://rutr.life/forum/viewtopic.php?t=3406548 . По работе с DVD тем много на форуме. Странно, на счет полей в теме Оцифровка VHS-видеокассет при помощи компьютера рекомендуют как раз верхнее поле первым. Удачи
|
|
Areyou
Стаж: 16 лет Сообщений: 1703
|
Areyou ·
19-Мар-11 12:28
(спустя 1 час 49 мин.)
glock-17
В вещательном сигнале PAL (по стандарту оцифровки BT.601) первое поле - верхнее, в NTSC - нижнее. Исключение - DV-avi с цифровых камер, там для получения полных цифровых строк (в аналоговом PAL 575 активных строк, и одна из них лежит по половинкам) в PAL тоже сделано с первым нижним полем, при этом сигнал до оцифровки имеет больше непогашенных строк, чем в аналоговом вещательном стандарте.
Менять в скрипте порядок полей есть смысл только если видео прогрессивное (кино 25fps), и произошел сдвиг полей, превративший его в чересстрочное (поля хранятся не в своих кадрах), тогда простое DoubleWeave()
SelectOdd() вернет поля на место и можно будет кодировать с прогрессивной установкой. В случае чересстрочного видео достаточно указать при импорте в кодер истинный порядок полей источника. Его можно проверить в скрипте:
AssumeTFF()
Bob() Если при покадровом просмотре все движется естественно, то это TFF, если возвратно-поступательно, то BFF. oQAVqbo
На этом больше специализируются в форуме IXBT, я дам ссылки на соотв. ветки в личку.
|
|
glock-17
Стаж: 17 лет 4 месяца Сообщений: 19
|
glock-17 ·
20-Мар-11 19:23
(спустя 1 день 6 часов)
oQAVqbo
Areyou
Большое спасибо, все понял))) Все получилось, соберу до конца DVD - выложу в разделе образование))
|
|
Tim68
Стаж: 14 лет 9 месяцев Сообщений: 712
|
Tim68 ·
22-Апр-11 16:25
(спустя 1 месяц 1 день, ред. 04-Май-11 17:21)
Имеется домашнее видео снятое фотомыльницей. Фотоаппарат использует метод видеосжатия M-JPEG. Насколько известно технология сжатия медиаданных M-JPEG подразумевает работу с полным цвето-яркостным динамическим диапазоном (0-255) изображений, но все мои попытки загрузить видеоряд заканчиваются получением изображения в TV диапазоне (16-235).
Создается впечатление, что используемый декодер в автомате при загрузке выполняет клиппирование (обрезку) динамического диапазона до 16-235, допускаю, что этим занимается енкодер самой фотокамеры. Пробовал грузиться как через DSS так и через AviSource c привязкой к разным декодерам (fourCC).
Но как выяснить кто виноват и можно-ли загрузиться в полном диапазоне? Уж больно бьют по глазам пересветы и т.д. Интересуют так-же методы коррекции гистограммы. Вопрос закрыт.
После долгих инет поисков все-таки удалось загрузиться в полно-диапазонном (0-255) виде. Виновником оказался M-JPEG декодер Picvideo 4-й версии, который при загрузке как Avisource (), впрочем как и DSS, выполняет клиппирование (обрезку) динамического диапазона до 16-235, подобной заразой заражена и 3-я версия декодера. Все решилось с использованием 2-ой версии декодера Picvideo.
|
|
Tim68
Стаж: 14 лет 9 месяцев Сообщений: 712
|
Tim68 ·
30-Май-11 10:32
(спустя 1 месяц 7 дней)
Необходимо по возможности максимально вытащить детали из пересвеченной части видеоряда. С levels чего либо приличного не получается. Насколько Я понимаю HDR AGC хоть и писался для темных областей, возможно существует "заветная строчечка" и по моим запросам?
Спасибо. Надеюсь дождусь ответов, не так как в предыдущем посте.
|
|
Tempter57
Стаж: 16 лет 1 месяц Сообщений: 4960
|
Tempter57 ·
30-Май-11 11:21
(спустя 48 мин., ред. 30-Май-11 11:21)
Tim68
Как насчёт подстройки целой кучи параметров настройки в ColorYUV()?
|
|
Tim68
Стаж: 14 лет 9 месяцев Сообщений: 712
|
Tim68 ·
30-Май-11 17:07
(спустя 5 часов)
Tempter57 писал(а):
Как насчёт подстройки целой кучи параметров настройки в ColorYUV()?
Насчет ColorYUV() нормально.
Какие параметры из "целой кучи" позволят получить детали из пересвеченной части видеоряда?
|
|
Tempter57
Стаж: 16 лет 1 месяц Сообщений: 4960
|
Tempter57 ·
30-Май-11 18:34
(спустя 1 час 26 мин.)
В основном эти gain_y=, off_y=, gamma_y=, cont_y=, cont_u=, cont_v= и скорее всего с отрицательным знаком
|
|
MMMXXX_2
Стаж: 15 лет 10 месяцев Сообщений: 78
|
MMMXXX_2 ·
30-Май-11 19:21
(спустя 46 мин.)
Tim68
Цитата:
Необходимо по возможности максимально вытащить детали из пересвеченной части видеоряда. С levels чего либо приличного не получается.
Для AVISynth есть такой плагин: SmoothAdjust. В него входит в том числе и функция SmoothCurve. Интерфейс не самый удобный, но это реально рабочие кривые для AVISynth.
|
|
Tim68
Стаж: 14 лет 9 месяцев Сообщений: 712
|
Tim68 ·
30-Май-11 21:24
(спустя 2 часа 3 мин., ред. 30-Май-11 22:24)
Tempter57 писал(а):
В основном эти gain_y=, off_y=, gamma_y=, cont_y=, cont_u=, cont_v= и скорее всего с отрицательным знаком
Если с силой и гаммой боле-менее ясно, то как только дело доходит до цветоразностных составляющих - сразу начинает ехать баланс белого. Если и удается визуально отстроить одну из сцен, другая принимает непотребный вид. Надо конечно изыскивать время, садиться и крутить, но положительный результат не гарантироыван.
MMMXXX_2 писал(а):
SmoothAdjust. В него входит в том числе и функция SmoothCurve.
Думается, что скорее всего это наиболее подходящая вещь, но как его использовать по этому назначению ума не приложу. На думе в профильной ветке мне сложновато, там SmoothCurve рассматривают как инструмент коррекции баланса белого, сам приспособился его использовать для работы с диапазонами, где надо поджать, а где и потянуть. Имется ли в арсенале пример строчечки для данного случая (...вытащить детали из пересвеченной части видеоряда...)?
Скрин:
|
|
|