Помогите со скриптом для AviSynth

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

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 - это Ваша рекомендация на Хоботе!
скрытый текст
http://forum.ixbt.com/topic.cgi?id=29:22283-73
NR1 = source.MDegrain1(source_super,vb1,vf1,thSAD=160,thSCD1=180,thSCD2=30)
# для blksize=8 установите thSAD=240,thSCD1=270,thSCD2=90,lambda=1000
Спасибо за рекомендацию CamCD, сделаю как Вы рекомендуете, только не понял ACOBW оставить или тоже убрать?
[Профиль]  [ЛС] 

Pustovetov

AVC-Видео

Стаж: 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

AVC-Видео

Стаж: 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 рассматривают как инструмент коррекции баланса белого, сам приспособился его использовать для работы с диапазонами, где надо поджать, а где и потянуть. Имется ли в арсенале пример строчечки для данного случая (...вытащить детали из пересвеченной части видеоряда...)?
Скрин:
[Профиль]  [ЛС] 
 
Ответить
Loading...
Error