Как убрать шумы из захваченного видео?
На основе материалов форума doom9.org и личного опыта.
Данный текст не претендует на полный охват данной темы, ни тем более
на некую "каноничность". Это просто несколько наиболее простых
и излюбленных мною рецептов. Значения параметров фильтров могут сильно
отличатся в зависимости от качества захваченного материала
Фильтрация шумов в VirtualDub.
Обозначения
так - только для interlaced видео преобразумого(deinterlace) в обычное
так -interlaced (если при движении в видео изображение разделяется на горизонтальные полоски) - чтобы оставить видео interlaced - нужно для SVCD/DVD
так - только для не-черезсрочного/деинтерлейснутого видео
Вариант 1- дёшево и сердито. Вариант товарища Koepi.
Нам потребуются:
VirtualDub
фильтры:
Dynamic Noise Correction 2
DeinterlaceMAP
Цепь фильтров выглядит так
levels - там мы настраиваем правильную яркость/контрастность изображения.
dynamic noise reduction 2 (dnr2) - там ставим значение 20
DeinterlaceMAP -если необходимо убрать черезстрочность (кодируем не в MPEG2)
(Вообще фильтры деинтерлейсинга в VDub имхо не лучшие - но этот вроде ничего)
deinterlace(unfold fields side by side) - разделяем поля
smoother - там ставим значение 7 и НЕ включаем noise prefilter
deinterlace (fold side-by-side fields together) - соединяем поля в кадр
resize - изменяем в наиболее подходящий нам размер(на interlaced - даже и не думайте)
Работает быстро, но качество, скажем так, не идеальное. Хотя вполне
подходит, если потом сжимать в MPEG или DivX(не RM).
Вариант 2 - push it to the limit
Этот вариант много медленнее и даёт лучшее качество.
Потребуются:
фильтр SmartSmootherHiQ.(версии:
для Athlon
для Pentium)
Цепь выглядит так
temporalsmoother - я обычно использую значения 3-4.
deinterlaceMAP
deinterlace(unfold)
SmootherHiQ - задаём диаметр 5-7, и регулируем силу по вкусу.
deinterlace(fold)
resize
Это выглядит много лучше, но сильно медленней.
Для ещё лучшего качества может понадобится SmartSmootherIQ - фильтр
для фильтрации исключительно цветовой (а не яркостной) информации.
Ставьте его последним. Очччень медленный.
Вариант 3 - с претензией, но на бюджете.
Потребуется дополнительно
фильтр 2D Cleaner (версии :
обычный
оптимизированный:
для Athlon
для Pentiun III)
temporal Smoother
deinterlaceMAP
2dcleaner - значения подбираются экспериментально, для черестрочного видео включите interlaced
resize
Несколько быстрее предыдущего, но и с меньшим качеством.
Фильтрация шумов в AviSynth.
Обозначения
# - комментарий
Способ главный :)
Потребуются плагины:
mpeg2dec
decomb
tweak
smoothhiq
Скрипт для нечерезстрочного/преобразуемого в черезстрочное видео выглядит так
loadplugin("c:\avs\mpeg2dec.dll")
loadplugin("c:\avs\decomb.dll")
loadplugin("c:\avs\smoothhiq.dll")
loadplugin("c:\avs\tweak.dll")
#задаём источник видео
segmentedavisource("clips.avi")
#корректируем изображение
converttoyuy2()
#яркость, насыщенность, контраст, сдвиг цвета
tweak(cont=1,sat=1.2,bright=0,hue=4)
#уровни яркости
levels(14,1.079,244,0,255)
#удаляем черестрочность
telecide(firstlast=TRUE,blend=false)
#Фильтруем
#для удаления темпоральных шумов
temporalsmoother(last,4,1)
#двумерная фильтрация
smoothhiq(7,12,16,256,12)
#обрезаем лишние края - например при записи с видака
crop(6,8,708,560)
#изменяем размер
bicubicresize(384,288)
Для черезстрочного видео (коментарии только на отличающихся частях):
loadplugin("c:\avs\mpeg2dec.dll")
loadplugin("c:\avs\decomb.dll")
loadplugin("c:\avs\smoothhiq.dll")
loadplugin("c:\avs\tweak.dll")
avisource("dh.avi")
converttoyuy2()
tweak(cont=1,sat=1.2,bright=0,hue=4)
levels(14,1.079,244,0,255)
temporalsmoother(last,4,1)
#задаём что первым идёт верхнее поле
assumetff()
#делаем из полей последовательные кадры
separatefields()
smoothhiq(5,12,20,256,12)
#снова складываем поля
weave()
Случай особый - или скрестим ежа с ужом...получим Зёрга :)
Если видео очень сильно зашумлено, то нам может потребоваться
фильтр (для VirtualDub)Wavelet Noise Reduction
Т.к. имхо темпоральная фильтрация (и деинтерлэйсинг) лучше всё же в AviSynth,
то мы используем в нём следующий скрипт, который и загружаем в VirtualDub:
loadplugin("c:\avs\mpeg2dec.dll")
loadplugin("c:\avs\decomb.dll")
avisource("dh.avi")
converttoyuy2()
levels(14,1.079,244,0,255)
temporalsmoother(last,4,1)
А в VirtualDub'е мы ставим фильтр
WaveletNoiseReduction...к сожалению из-за отсутствия
у меня какой-бы то ни было документации к нему, все настройки делаем на глаз, имея в виду, что
Y - это настройки операций на ч/б(яркостной) части изображения
Cb,Cr - для цветовых компонент.
Назад