Смотрим черезстрочную развёртку на компе без потерь

Страницы:  1
Ответить
 

knt11

Стаж: 15 лет 1 месяц

Сообщений: 38

knt11 · 15-Апр-11 00:57 (14 лет назад, ред. 18-Апр-11 23:50)

Итак смысл топика вытекает из названия: как и чем (декодеры, фильтры) смотреть кино на мониторе компьютера без потерь в первую очередь разрешения по времени (информация о движении)
В топике предлагается выкладывать названия тех фильтров и кодеков, которые умеют это делать, а также обсуждать качество их работы
Ну, то что я знаю:
FFdshow, а именно Yet Another DeInterlacing Filter
MoonLight MPEG2 Decoder Для декодирования видео в MPG2
Видеотест, предназначенный для тестирования алгоритмов деинтерлейса, хотя содержит таблицы и для других целей:
Формат сжатия: DivX: http://moydisk.com/file/22559/ Mpeg: http://moydisk.com/file/22560/ Xvid: http://moydisk.com/file/22561/
На основе его и буду тестировать известные мне алгоритмы
[Профиль]  [ЛС] 

Tim68

Стаж: 15 лет 2 месяца

Сообщений: 712


Tim68 · 15-Апр-11 18:04 (спустя 17 часов)

knt11 писал(а):
как и чем (декодеры, фильтры) смотреть кино на мониторе компьютера без потерь в первую очередь разрешения по времени (информация о движении)
Если Вы думаете, что это проблемма только мониторов и проигрывания с PC-юка, то заблуждаетесь, все это присутствует как минимум во всех недорогих устройствах отображения, думаю, что и видеокарты не исключение.
Примером может являться моя лыжа LF2510, которая банально делает bob-деинтерсейс TV трансляции растягивая полукадры половинчатого SD разрешения по вертикали аж до 1080 пикселей, особенно заметно на шумном видео снятом при низкой освещенности. Создается впечатление, что изображение состоит из вертикальных палочек, жуть.
Впрочем любой голый алгоритм bob-деинтерлейса страдает выше приведенной проблеммой, точнее он не сохраняет полного разрешения кадра во времени. Безусловно если обвешать bob-ер улучшайзерами, типа как Шварца гранатами, вполне можно получить достойный результат. Одной из наилучших реализаций этого считается скрипт-функция QTGMC под Avisynth, но все это далеко от работы в условиях реального времени.
Получить полное разрешение кадра в любой фазе времени возможно разве, что путем векторного анализа движения в кадре по предыдущим и последующим кадрам и достраивания недостающих строк с деталями в каждой фазе движения. Даже в голом виде такой алгоритм дает максимально-возможную детальность в кадре. Врочем, чем удачно воспользовались МГУ-шники, впарив сырой алгоритм, построенный на принципе увеличения частоты кадров, фирме Самсунг вначале этого века. Самсунгу лишь оставалось решить вопрос увеличения частоты кадров на основе векторного анализа движения в железе.
Тогда массового интереса данный метод деинтерлейса не вызвал из за отсутствия открытой аналитики (математики) и банальной ресурсоемкости процесса, куда оказалось проще и понятней растянуть поля по вертикали. Есть еще одна особенность использования этого алгоритма сыгравшая, на мой взгляд, роль стоп крана в популяризации данной технологии - очень небольшая остаточная гребенка (неровность контуров) при значительных перемещениях в кадре, что абсолютно не играет никакой роли в динамике.
Поэтому ставшее привычным сегодня сравнение скриншотов выводит всегда на первое место bob-еры на которых остаточной гребенки в принципе быть не может.
Очень жаль, что векторный принцип деинтерлейса не получил достойного развития в софте, хотя и не умер.
P.S. При кодировании видео для себя использую только решения на векторной основе с уменьшением размера кадра. При уменьшении размера кадра, в случае значительных движений, остаточная гребенка превращается в мягкие приятные контура, напоминающие результат работы затвора пленочной кинокамеры, сохраняя максимально возможную детализацию в остальных случаях.
[Профиль]  [ЛС] 

Гость


Гость · 16-Апр-11 11:20 (спустя 17 часов)

Мне больше всего нравится работа декодера от Cyberlink и векторно-адаптивный деинтерлесинг, который применяется в дровах от AMD(ATI) Catalyst. Видеокарта тоже должна быть AMD (ATI). Этот метод даёт такую же плавность, как и ВОВ-деинтерлейсинг, плюс в дополнение устраняет дрожание тонких (сопоставимых с размером пикселя) горизонтальных линий. Это преимущество хорошо заметно при просмотре спортивных HD-трансляций. Для максимальной плавности неплохо бы ещё выставить частоту вертикальной развёртки монитора в 50 Гц, если в спеках на монитор такой режим возможен. А лучше 100 герц, но это уже относится к моникам с поддержкой 3D.
 

knt11

Стаж: 15 лет 1 месяц

Сообщений: 38

knt11 · 16-Апр-11 18:53 (спустя 7 часов, ред. 18-Апр-11 23:38)

Tim68
За ссылки на "Алгоритм", "Фильтр" буду очень признателен (прокатят и просто названия для успешного Гугления).
Большое спасибо за "Статейку"
aliandwa
У меня тоже видеокарта ATI и врод как-бы тоже с поддержкой аппаратного деинтерлейса, но у меня он почему-то не включается. винда: WindowsXP 2600 sp3, проигрыватель: KMPlayer
А как у тебя граф строится????
[Профиль]  [ЛС] 

Tim68

Стаж: 15 лет 2 месяца

Сообщений: 712


Tim68 · 16-Апр-11 23:53 (спустя 4 часа, ред. 25-Апр-11 04:49)

knt11 писал(а):
За ссылки на "Алгоритм", "Фильтр" буду очень признателен
Ссылок у меня нет. Каждый раз в зависимости от ресурса пишу себе тот или иной скриптик под Avisynth. Например из последней работы с черезстрочным концертом, преобразование 1920х1080х59,94i в 1280х720х29,97р сделанное на базе чего-то такого:
скрытый текст
#============================ЗАГРУЖАЕМ НЕОБХОДИМЫЕ ПЛУГИНЫ=====================================
LoadPlugin("X:\...\mvtools2.dll")
#============================КОНФИГУРИРУЕМ РАБОЧУЮ СТАНЦИЮ=====================================
setmemorymax(768) #ограничиваем выделяемый объем ОЗУ
#=========================ПРЕДВАРИТЕЛЬНАЯ ПОДГОТОВКА ИЗОБРАЖЕНИЯ=================================
DGSource("X:\...\XXXX.dgi") #индекс-проект (AVCSource, MPEG2Source)
AssumeTFF() #задаем верхнее поле первым
SeparateFields() #разбираем на поля
BF = SelectEvery(2,1) #делаем выборку из нижних (1,3,5..) полей
SelectEvery(2,0) #делаем выборку из верхних (0,2,4..) полей
#============СТРОИМ ПРОМЕЖУТОЧНЫЕ ВЕРХНИЕ ПОЛЯ, СООТВЕТСТВУЮЩИЕ ПО ФАЗЕ НИЖНИМ ПОЛЯМ===============
source = Last
super = source.MSuper()
backward_vectors = super.MAnalyse(isb = true,blksize=32,blksizeV=32)
forward_vectors = super.MAnalyse(isb = false,blksize=32,blksizeV=32)
MFlowInter(super, backward_vectors, forward_vectors, blend=false, time=50, ml=100)
TF = DeleteFrame(FrameCount())++Trim(BF,FrameCount(BF)-1,0)
#===================собираем прогрессивное видео оригинального разрешения==============================
Interleave(TF,BF) #чередование верхних и нижних полей
Weave() #собираем попарно поля в кадр
AssumeFPS("ntsc_video") #задаемся 30000/1001=29.97 fps
#===============================ФИНАЛЬНАЯ ПОДГОТОВКА ИЗОБРАЖЕНИЯ===============================
#crop (0,0,-0,-0) #получение необходимого соотнощения сторон
spline36resize(1280,720) #ресайз до заданного размера
AssumeFrameBased() #основан на кадрах и доминирует нижнее поле
ComplementParity() #меняем доминирующее нижнее поле на верхнее
#============================================================================================
#Скрипт устраняет черезстрочность посредством достроения верхних полей, соответствующих по фазе
#оригинальным нижним полям. Снижение разрешения кадра не происходит. Происходит сдвиг видеоряда
#вперед на 1/60 секунды. Присутствует эффект "Фильма"(иммитация времени открытия затвора камеры).
[Профиль]  [ЛС] 

knt11

Стаж: 15 лет 1 месяц

Сообщений: 38

knt11 · 18-Апр-11 23:57 (спустя 2 дня)

Ну постинг топика в инете таки заставляет поднапрячься в реальной жиздни....
Сделал я таки нормальный тест, способный обломать любой алгоритм деинтерлейса, однако, если я чего в нём упустил - буду только рад указанию на ошибку.
Описания работы фильтров "со стороны зрителя" буду выкладывать по ходу, скажем так, возможности тестить их, ну типа банального наличия времени на это.
[Профиль]  [ЛС] 
 
Ответить
Loading...
Error