• Техника
  • Улучшение изображения с помощью нейросетей [AI-UPSCALE] (p.143)
2022/03/04 21:31:57
tim6676
  Решил поделиться информацией, может кто еще кроме меня столкнется с такой проблемой.
Делаю сейчас один старый фильм, и как в большинстве старых DVD у него проблема с яркостным мерцанием. Вернее даже не с мерцанием, а скорее с яростной нестабильностью видеоряда. Сделал яркостную стабилизацию при помощи Deflicker-а, даже уже прогнал через Топаз. А на финальном кодировании обнаружил неприятные артефакты после Deflicker-а.  Проявляются они на темных кадрах в виде какого-то инверсивного повторения. 

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

Фильтра из Avisynth-а показали такие же артефакты и так же не эффективны. Слава богу отлично подошел фильтр из комплекта XviD4PSP 5 - "DVD Deflicker Dither" Хорошо убрал мерцание и не оставил артефактов.
 Вот исходный файл: https://disk.yandex.ru/d/4_3dmuAOuhR2Bg
 Так было когда я обратил внимание на проблему: https://disk.yandex.ru/i/KSZPpco8p6seMw
 Здесь с помощью настроек пытался вытянуть. Уже лучше, но артефакты все равно есть:     https://disk.yandex.ru/d/pQs3LoEy3mBthQ
 Окончательный вариант: https://disk.yandex.ru/i/hwBJqZWBn-BH8w
 Такая вот инфо.
 
2022/03/05 00:24:13
Genik07
tim6676
Фильтра из Avisynth-а показали такие же артефакты и так же не эффективны. Слава богу отлично подошел фильтр из комплекта XviD4PSP 5 - "DVD Deflicker Dither" Хорошо убрал мерцание и не оставил артефактов.



Можно увидеть итоговый скрипт, который решил проблему?
2022/03/05 09:05:35
tim6676
Genik07
Можно увидеть итоговый скрипт, который решил проблему?


  Здесь полный скрипт фильтра. Можно менять различные его параметры, но мне не понадобилось.
Скрипт

#RemoveGrainTSSE2.dll
#RGTools.dll
#TIVTC.dll
#TDeInt.dll
#repal.dll
#Deblock.dll
#AddGrainC.dll
#dctfilter.dll
#warpsharp.dll
#masktools2.dll
#NNEDI3.dll
#mvtools2mod.dll
#TIVTC.dll
#flash3kyuu_deband.dll
#GradFun2DB.dll
#GRunT.dll
#Dither.dll
#Dither.avsi
#mt_xxpand_multi.avsi
#srestore.avs
#minblur.avs
#QTGMC.avs
#Contrasharpening.avs
#Deblock_QED_MT2.avs
#LSFmod v1.9.avsi

# setmemorymax(640)
RemoveGrain(0) # No-Op filter, just to do frame request
ChangeFPS(last,last,true) # initiate a small forward buffer
# ==== Варианты нестандартного деинтерлейса ====
# TFM(mode=5, PP=1, slow=2)
# TDecimate()
# TDeint(order=-1, slow=2, mthreshL=5, mthreshC=5)
# TDeInt(order=-1, mode=1) # вариант 2
# QTGMC(preset="Faster", Sharpness=0.5, Edithreads=1) # вариант 3
# ==== DeBlend ====
# repal() # трансфер NTSC=>PAL вариант 1
# srestore(25) # трансфер NTSC=>PAL вариант 2
# Deblock_QED(uv=3)
blksize = 16
overlap = blksize/2
chroma = true
planes = chroma?4:0
tr = 3 # Temporal radius
thSAD = 321
thSAD2 = 135
rest = last
w = rest.width()
h = rest.height()
calm = rest.temporalsoften(1,255,255,32,2).merge(rest,0.25).repair(rest,1).removegrain(11)
calm = calm.temporalsoften(1,255,255,16,2).merge(calm,0.25)
# temporalsoften(6,32,32,24,2)
# calm = clense().repair(last,1)
LOP = calm.bicubicresize(w/4,h/4).bicubicresize(w,h,1,0)
HIP = rest.bicubicresize(w/4,h/4).bicubicresize(w,h,1,0)
HIP = mt_makediff(rest,HIP)
mix = LOP.mt_adddiff(HIP,U=2,V=2)
psuper = mix.removegrain(11).MSuper(pel=2, sharp=2, rfilter=2, chroma=chroma)
rsuper = rest.MSuper(pel=2, sharp=2, levels=1, chroma=chroma)
multi_vec = MAnalyse (psuper, multi=true, delta=tr, blksize=blksize, overlap=overlap, global=true, truemotion=false, chroma=chroma, lambda=1024, dct=5)
rest.MDegrainN (rsuper, multi_vec, tr, thSAD=thSAD, thSAD2=thSAD2, limit=135, plane=planes, lsb=true)
# ==== DEBANDING ====
DB = last.f3kdb(16, 56, 48, 48, 36, 18, dynamic_grain=true, input_mode=1, output_mode=1)
# GradFun3 (thr=1.4*0.3, smode=0, lsb_in=true, lsb=true)
# DB = last.Dither_add_grain16 (var=0.6, uvar=0, soft=1)
DB.DitherPost(mode=-1)
output = mergechroma(last)

# ===== Финальное повышение резкости ====
# sharp8 = output.LSFmod(defaults="fast", preblur="ON", strength=100)
sharp8 = Contrasharpening(output,rest)
lsbctr = Dither_merge16_8(DB,sharp8.Dither_convert_8_to_16(), DitherBuildMask(sharp8, output))
lsb_out = lsbctr.DitherPost(mode=6, ampo=1, ampn=1) # for XviD encode
# lsb_out = lsbctr.DitherPost(mode=7, ampo=1, ampn=0) # for x264 encode
lsb_out

# Для обработки проблемных материалов интерлейсных DVD c повышенным уровнем флюктации строк и мерцанием по яркости
# отключить деинтерлейс, выставляемый автоматически XviD 4PSP в случае подключения трансфера NTSC=>PAL
Спрятать

2022/03/05 10:19:09
MACTEPCTBO
tim6676Решил поделиться информацией

Как вариант.
Делая Холмса (исходник нечернушный dvd), я сначала использовал dtd-4, поскольку чересстрочная развёртка, и потом использовал XviD4PSP 5 для устранения шума и дрожания кадра.
Конечно, скорость XviD4PSP 5 на FullHD невысока, но итог того стоил.
2022/03/05 10:55:00
tim6676
MACTEPCTBO
Делая Холмса (исходник нечернушный dvd), я сначала использовал dtd-4, поскольку чересстрочная развёртка, и потом использовал XviD4PSP 5 для устранения шума и дрожания кадра.
Конечно, скорость XviD4PSP 5 на FullHD невысока, но итог того стоил.


  У меня сразу несколько вопросов.(не примите за стеб, но просто интересно)
  Для чего использовать dtd-4, если XviD4PSP 5 имеет больше чем нужно возможностей и инструментов для устранения чересстрочной развёртки?
  С шумом все понятно, но каким фильтром из набора XviD4PSP 5 Вы пользовались, чтобы устранить дрожание кадра? Я пользуюсь программой более 15 лет, но таких не знаю. Для стабилизации изображения (не просто короткого ролика а полноценного фильма) пришлось достаточно серьезно заняться VirtualDub-ом и его плагином Deshaker, лучшим на сегодняшний день стабилизатором.
  
2022/03/05 12:18:32
MACTEPCTBO
tim6676не примите за стеб
Для чего использовать dtd-4, если XviD4PSP 5 имеет больше чем нужно возможностей и инструментов для устранения чересстрочной развёртки?
каким фильтром из набора XviD4PSP 5 Вы пользовались, чтобы устранить дрожание кадра?

 
Стёб это когда "зачем XviD4PSP 5, когда есть уже v8".
Как говорили в анекдоте "можно так, а можно и так". XviD4PSP 5 очень хорош со своими фильтрами. Но всё же VEAI - главный инструмент во всей затее. И в некоторых случаях XviD4PSP -> VEAI даёт картинку чуть хуже нежели VEAI -> XviD4PSP. Ведь модели VEAI "тренируют" на "нетронутом" видео. Иногда шум и мусор надёжней выявляются post VEAI. Для конкретного видео это можно узнать только попробовав.
Как всегда, я возможно фривольно пользуюсь терминами. В Холмсе я боролся с мелкими подергиваниями кадра, вероятно появившимися из-за плохого вертикального позиционирования плёнки при оцифровке. Необъяснимы значительные сдвиги кадра при смене сцены и с ними я ничего сделать не смог. Я даже попробовал новую штучку Топаза prototype for video stabilization. Слишком большие куски надо достраивать.
Использовались DePanEstimate и DePanStabilize. В VEAI видео увеличивалось до 1104 строк, чтобы было что отрезать при стабилизации.
скрипт

dmx = 32
mdata = DePanEstimate(dxmax=dmx,dymax=dmx)
DePanStabilize(data=mdata,method=1,dxmax=dmx,dymax=dmx,rotmax=0,blur=33,zoommax=1.00)
 
Если в DePanStabilize добавить ",info=true", то можно посмотреть циферки как он двигал.
Спрятать

2022/03/05 13:22:35
tim6676
MACTEPCTBO 
Как говорили в анекдоте "можно так, а можно и так". XviD4PSP 5 очень хорош со своими фильтрами. Но всё же VEAI - главный инструмент во всей затее. И в некоторых случаях XviD4PSP -> VEAI даёт картинку чуть хуже нежели VEAI -> XviD4PSP. Ведь модели VEAI "тренируют" на "нетронутом" видео. Иногда шум и мусор надёжней выявляются post VEAI. 

  Ну что ж, хозяин барин. Я привык подсовывать топазу уже полностью подготовленное видео. Некоторые модели VEAIЕ, при всей их продвинутости, на местах с определенным зерном, если его не убрать, начинают раздувать пузыри. А заранее вычищать картинку Артемидой, вместе с кучей полезной информации, не хочиться.
Что касается мелкого подергивания, именно с ним, в основном, я и боролся Deshaker-ом в "Варианте Омега". Беда в том, что невозможно определить настройки стабилизации для всего фильма. К примеру в этом скрипте
скрипт

Import("C:\Program Files (x86)\XviD4PSP 5\dlls\AviSynth\functions\AudioFunctions.avs")
Import("C:\Program Files (x86)\XviD4PSP 5\dlls\AviSynth\functions\VideoFunctions.avs")
LoadPlugin("C:\Program Files (x86)\XviD4PSP 5\dlls\AviSynth\plugins\SplineResize.dll")
 
A = AVISource("E:\Temp\ПРОБЫ ОМЕГА\ТРЕТЬЯ СЕРИЯ\1.avi", audio=false)
A1 = Trim(A, 0, 2461)
B = AVISource("E:\Temp\ПРОБЫ ОМЕГА\ТРЕТЬЯ СЕРИЯ\3 серия_04.avi", audio=false)
B1 = Trim(B, 2462, 6745)
A2 = Trim(A, 6746, 10856)
C = AVISource("E:\Temp\ПРОБЫ ОМЕГА\ТРЕТЬЯ СЕРИЯ\в вмашине 3.avi", audio=false)
C1 = Trim(C, 57, 300)
D = AVISource("E:\Temp\ПРОБЫ ОМЕГА\ТРЕТЬЯ СЕРИЯ\основной.avi", audio=false)
D1 = Trim(D, 11101, 11393)
E = AVISource("E:\Temp\ПРОБЫ ОМЕГА\ТРЕТЬЯ СЕРИЯ\в машине 3.avi", audio=false)
E1 = Trim(E, 323, 2093)
A3 = Trim(A, 13165, 13782)
F = AVISource("E:\Temp\ПРОБЫ ОМЕГА\ТРЕТЬЯ СЕРИЯ\в машине22.avi", audio=false)
F1 = Trim(F, 106, 1060)
A4 = Trim(A, 14738, 22760)
L = AVISource("E:\Temp\ПРОБЫ ОМЕГА\ТРЕТЬЯ СЕРИЯ\gjbcr.avi", audio=false)
L1 = Trim(L, 35, 2702)
H = AVISource("E:\Temp\ПРОБЫ ОМЕГА\ТРЕТЬЯ СЕРИЯ\РАЦИЯ.avi", audio=false)
H1 = Trim(H, 21, 5377)
D2 = Trim(D, 30786, 33355)
K = AVISource("E:\Temp\ПРОБЫ ОМЕГА\ТРЕТЬЯ СЕРИЯ\МАГЕЛЬ.avi", audio=false)
K1 = Trim(K, 26, 2333)
D3 = Trim(D, 35664, 37356)
A5 = Trim(A, 37357, 56188)
M = AVISource("E:\Temp\ПРОБЫ ОМЕГА\ТРЕТЬЯ СЕРИЯ\мерцание.avi", audio=false)
M1 = Trim(M, 39, 1997)
X = AVISource("E:\Temp\ПРОБЫ ОМЕГА\ТРЕТЬЯ СЕРИЯ\eeeeeeeeeeeeeeeeeee.avi", audio=false)
X1 = Trim(X, 5, 519)
M2 = Trim(M, 2513, 4923)
A6 = Trim(A, 61074, 64325)
N = AVISource("E:\Temp\ПРОБЫ ОМЕГА\ТРЕТЬЯ СЕРИЯ\допрос.avi", audio=false)
N1 = Trim(N, 1, 1946)
O = AVISource("E:\Temp\ПРОБЫ ОМЕГА\ТРЕТЬЯ СЕРИЯ\1проба.avi", audio=false)
O1 = Trim(O, 44, 1022)
N2 = Trim(N, 2926, 9667)
A7 = Trim(A, 73993, 77667)
D4 = Trim(D, 77668, 93960)
P = AVISource("E:\Temp\ПРОБЫ ОМЕГА\ТРЕТЬЯ СЕРИЯ\ХРОНИКА.avi", audio=false)
P1 = Trim(P, 46, 1460)
D5 = Trim(D, 95376, 96373)
Q = AVISource("E:\Temp\ПРОБЫ ОМЕГА\ТРЕТЬЯ СЕРИЯ\РАБОТА.avi", audio=false)
Q1 = Trim(Q, 1004, 4993)
A8 = Trim(A, 100364, 107925)
 
A1 ++ B1 ++ A2 ++ C1 ++ D1 + E1 ++ A3 ++ F1 ++ A4 ++ L1 ++ H1 ++ D2 ++ K1 ++ D3 ++ A5 ++ M1 ++ X1 ++ M2 ++ A6 ++ N1 ++ O1 ++ N2 ++ A7 ++ D4 ++ P1 ++ D5 ++ Q1 ++ A8
 
ConvertToYV12()
Tweak(hue=0, sat=0.0, bright=0, cont=1.00, coring=true, dither=false)
Спрятать

, как можно увидеть, 28 кусочков из 16 вариантов кодирования/параметров стабилизации (на самом деле вариантов кодирования больше). И это все одна серия фильма. Я это к тому, что этот вопрос серьезно разбирал, даже хотел ролик записать по использованию плагина, но передумал. Слишком длинный ролик получится, если вдаваться во все подробности настроек.
 
2022/03/05 14:52:59
MACTEPCTBO
tim6676заранее вычищать картинку Артемидой

Не понял про "заранее". Уверен всякие двойные/тройные проходы VEAI - чистое ламерство.
2022/03/05 15:29:03
Lisa_alisa
разобью ваш увлекательный спор.
 
Сначала надо снимать гребенку в сторонних програмах, потом скормить можно Топазу и будет лучше чем пытаться сразу в Топазе 3 раза проходить. Мои работы с АББА и Милен Фреймер тому доказательство.
Кстати Милен почти готова, размер с PCM (звук) - 10 ГБ, сам звук 5.5 ГБ весит (буду во флак переводить). Качество неплохое (вродьбы), кодировала в CRF 20.0
2022/03/05 15:42:09
MACTEPCTBO
Lisa_alisaспор
Сначала надо

Спора не было.
НЕ надо. Возможно.
© 2025 APG vNext Commercial Version 5.5

Use My Existing Forum Account

Use My Social Media Account