мне надо upscale видеопоток снятый в одном и том же помещении, при одинаковом освещении
как вы считаете насколько хороший вариант
считать vmaf and PSNR для входного и выходного потоков и по их значениям примать решение какой поток показывать оригинальный или upscale
Здравствуйте, sergey2b, Вы писали:
S>как вы считаете насколько хороший вариант S>считать vmaf and PSNR для входного и выходного потоков и по их значениям примать решение какой поток показывать оригинальный или upscale
Попробуй, потом расскажешь . Мне кажется PSNR это лишнее. PSNR, грубо говоря, оценивает сколько информации пропало в результате сжатия, но то как это влияет на восприятия картинки он не отражает.
V>Попробуй, потом расскажешь . Мне кажется PSNR это лишнее. PSNR, грубо говоря, оценивает сколько информации пропало в результате сжатия, но то как это влияет на восприятия картинки он не отражает.
я взял HD видео, передал его используя NDI и записал в файл
после этого используя оригинальное видео как референсное посчитал vmaf и в результате получилось примерно 0.3 (1 это максимум если посчитать vmaf для оригинального видео то получаеться 0.98-0.99 что логично)
в качестве енкодера и декодеоа что бы считать видеофайл и передать в NDI, и что бы записать принятый фрейм, я использую ffmpeg встроенный в opencv
настройки NDI я делаю такие же как в оригинальном видео
Здравствуйте, sergey2b, Вы писали:
S>помоему vmaf должен быть лучше, как вы считаете
Его никогда не использовал, интересно. В качестве оценки качества можно и другие метрики использовать, но это при желании, ни одной абсолютно хорошей нет.
А что вообще ты хочешь проверить? Декодировать — закодировать и посмотреть результат? upscale — что подразумевается под этим?
N>Его никогда не использовал, интересно. В качестве оценки качества можно и другие метрики использовать, но это при желании, ни одной абсолютно хорошей нет. N>А что вообще ты хочешь проверить? Декодировать — закодировать и посмотреть результат? upscale — что подразумевается под этим?
upscale это увеленечение размера фрейма
у меня есть N каммер (например 100), и мне надо записывать видео со всех них на диск
и по запросу проигрывать нужное видео
камеры дают изображение в качестве HD
люди использую 4k мониторы и для них важны все мелкие детали на видео
камеры NDI и я использую NDI SDK написал сервис который получает видеопотоки и сохраняет их на диск
тк когда я писал пришлось проводить эксперементы и сделать эмулятор NDI камеры то у меня сложилоcь впечатление что качество видео заметно ухудшилось и многие мелкие детали исчезли
поэтому я стал читать статьи на тему оценок качества видео
подскажите пожалуйста что можно почитать как работает енкодер
я пока читал видеокодирование h264 MPEG-4 стандарты нового поколения
Здравствуйте, sergey2b, Вы писали:
S>upscale это увеленечение размера фрейма
Понятно.
S>камеры дают изображение в качестве HD S>люди использую 4k мониторы и для них важны все мелкие детали на видео
Но если просто растянуть кадр, то число деталей не увеличится. Если хочется увеличить число деталей, то производится не upscale, а superresolution. Вот он уже может увеличить число деталей, но работает не быстро: классические вообще очень медленно, нейросетевые по видео средне, а one frame уже быстро (но детали они не восстанавливают, а додумывают).
S>камеры NDI и я использую NDI SDK написал сервис который получает видеопотоки и сохраняет их на диск
Никогда про это не слышал. Но что там по сути происходит? Ты получаешь сырой видеопоток, сжимаешь его каким-то кодеком и сохраняешь? Тогда надо смотреть на параметры энкодера. Если ты получаешь сжатый видеопоток, то его в таком же виде и надо сохранять без перекодирования — потери качества не будет.
S>тк когда я писал пришлось проводить эксперементы и сделать эмулятор NDI камеры то у меня сложилоcь впечатление что качество видео заметно ухудшилось и многие мелкие детали исчезли S>поэтому я стал читать статьи на тему оценок качества видео
Я бы сначала разобрался в причине ухудшения качества, а потом стал измерять. И ещё я совсем не понял, где в описанной цепочке upscale.
— Если ты просто хочешь растянуть маленький кадр на большой монитор, то просто выбирай метод при воспроизведении — к кодекам это не имеет никакого отношения. Видео надо хранить в исходном виде.
— Если же ты хочешь сделать superresolution, то это отдельная очень большая и современная проблема, алгоритмы есть, надо проверять их на твоём контенте, подбирать параметры или переобучать нейросети. Но это тоже к кодекам не относится, сперва надо научиться superres делать, а потом уже смотреть, как его лучше сохранить.
Какая-то каша... Сложно понять, какая именно задача, и что вы делали.
S>у меня есть N каммер (например 100), и мне надо записывать видео со всех них на диск S>и по запросу проигрывать нужное видео
Качество картинки между ними смысла сравнивать нет, тк они будут в разных точках находиться, то есть картинка в каждой будет с разных ракурсов.
S>камеры дают изображение в качестве HD S>люди использую 4k мониторы и для них важны все мелкие детали на видео
Сейчас есть методы из ML, которые как раз позволяют апскейлить. Конечно, мелкие детали могут потеряться или намылиться. Если у вас видеонаблюдение или какие-то критичные к оригинальным записям области, то такое не подойдет, потому что картинка может поменяться.
S>камеры NDI и я использую NDI SDK написал сервис который получает видеопотоки и сохраняет их на диск S>тк когда я писал пришлось проводить эксперементы и сделать эмулятор NDI камеры то у меня сложилоcь впечатление что качество видео заметно ухудшилось и многие мелкие детали исчезли S>поэтому я стал читать статьи на тему оценок качества видео
Вот тут ничего не понятно. Что за эмулятор камеры NDI?
Метрики качества работают так: ты даешь референсный (исходный поток), потом кодируешь его, и результат сравниваешь с референсным (те исходным). Результат показывает, насколько ухудшилось качество при кодировании, то есть насколько эффективно ты закодировал и сколько информации потерял. Сравнивать два уже закодированных потока без референта — смысла мало. Полученные цифры покажут лишь то, что эти потоки как-то отличаются.
При измерении метрик важно брать потоки с одинаковым разрешением (и хрома сабсамплингом — это типа 4:2:0).
VMAF будет лучше, потому как учитывает особенности восприятия именно человеком на основе обучения моделей с помощью оценок качества людьми. Тогда как PSNR — чисто объективная метрика. Также важно отметить, что для разных разрешения в VMAF используются разные модели. Если используете FFmpeg для оценки качества, то он сам должен взять нужную, если что-то другое — обратите внимание.
Еще момент, который нужно учесть — количество фреймов должно быть одинаковое. Для FFmpeg есть параметр shortest (писать так psnr=shortest=1) — он будет использовать количество фреймов из самого короткого из двух потоков.
Здравствуйте, DiPaolo, Вы писали:
DP>В последнее время также стали появляться методы оценки двух изображений без референса на основе ML/AI. Но о конкретных рабочих решениях не знаю.
BRISQUE, например. Тоже не идеал, но для некоторых методов, когда референса нет, вообще нет другого выбора.
S>Здравствуйте, Videoman, Вы писали:
S>помоему vmaf должен быть лучше, как вы считаете
Не думаю что должно быть лучше. Насколько я правильно понимаю, NDI тоже выполняет компрессию/декомпрессию и вы еще раз это тоже самое делаете. Почему должно быть лучше.
Вообще хотелось бы больше конкретики: какой изначальный сигнал, формат, разрешение? В какой битрейт вы жмете?
Здравствуйте, sergey2b, Вы писали:
S>камеры дают изображение в качестве HD S>люди использую 4k мониторы и для них важны все мелкие детали на видео
Да, но upscale не может дать никаких деталей. Какой-нибудть интеллектуальный алгоритм может лишь попытаться сделать изображение более резким для человеческого восприятия. Метрики оценки качества при это конечно же сильно поплывут.
Ну давайте так средний уровень качества оценим: у вас исходник: 3840х1650, после capture: 1920х1080. (1920х1080)/(3840х1650)=0,3272727272727273. Если пренебречь битрейтом и сжатием, то точек становится меньше в 3 раза.
S>это пример подсчета VMAF S>я отвечу на остальные вопросы чуть позже
5 в ВМАФе означает, что у вас разные потоки Скорее всего отдаете не тот кусок данных. Иными словами, в референте у вас фреймы с 0 по 1000, а в капчуре — с 1000 по 2000. Как вы получаете выходной файл? Также нужно привести оба потока к одному резолюшену. После выполнения этих первых базовых пунктов можно переходить дальше. Пока то, что на графике — это вообще что-то левое.
DP>5 в ВМАФе означает, что у вас разные потоки Скорее всего отдаете не тот кусок данных. Иными словами, в референте у вас фреймы с 0 по 1000, а в капчуре — с 1000 по 2000. Как вы получаете выходной файл? Также нужно привести оба потока к одному резолюшену. После выполнения этих первых базовых пунктов можно переходить дальше. Пока то, что на графике — это вообще что-то левое.
вторая попытка
я могу выложить сами видео, но не знаю какой хостинг можно использовать для этого
Уже гораздо лучше! Осталось понять, что происходит в начале — почему такой провал. Могу предположить, что там ничего не записывается (может идет инициализация капчурки/камеры или что вы там используете на выходе).
Либо посмотрите глазами два потока, чтобы понять, чем они отличаются в начале. Либо используйте одну из утилит, о которых я писал выше: там можно глазами ткнуть нужный кадр и сравнить два фрейма (референсный и таргет).
S>я могу выложить сами видео, но не знаю какой хостинг можно использовать для этого
Да хоть тут на рсдне, хоть Яндекс диск, что угодно еще...