Как убрать шумы из захваченного видео?
На основе материалов форума 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 - для цветовых компонент.


Назад
Hosted by uCoz