2016-09-29 2 views
0

Я использую ffmpeg для коррекции фона для видео, и я хотел бы улучшить масштабирование интенсивности вывода.Настройка гистограммы интенсивности ffmpeg

Мое видео с серой шкалой имеет темные движущиеся объекты на светлом фоне. В 8-битных интенсивностях пикселей светлый фон имеет значения пикселей около 240, темные объекты имеют интенсивность около 120.

За пределами ffmpeg, я генерирую фоновое изображение, беря медианную рамку над некоторым количеством кадров. Затем я использую ffmpeg для смешивания/разделения каждого кадра на фоновое изображение. (Я хочу использовать деление, а не вычитание фона). [есть также некоторые кадрирование в моей команде FFmpeg, но это не имеет никакого отношения к моему вопросу]

'ffmpeg.exe', '-i', u'inputVideo.avi', '-i', u'bgMed.tif', '-y', '-r', '160', '-filter_complex', "[1:0] setsar=sar=1 [1sared]; [0:0][1sared] blend=all_mode='divide':repeatlast=1,format=gray,split=1 [int1];[int1]crop=1097:1097:12:11:[out1]", '-map', '[out1]', '-c:v', 'libxvid', '-q:v', '5', '-g', '10', u'outputVideo'

Эта процедура в основном работает, но в результате видеокадры выглядят слишком размыты. Это, вероятно, ожидается? Я предполагаю, что ffmpeg выполняет разделение и создает результат внутреннего поплавка, который затем отображает обратно на 8-битный вывод. Я хотел бы растянуть гистограмму результата из деления. Было бы предпочтительнее растянуть перед отображением до 8 бит для более тонкого динамического диапазона.

В моем примере я предполагаю, что деление фона создает рамку результата, которая имеет значение, близкое к 1 для фона, и значения, близкие к 0,5 для темных объектов. Затем ffmpeg, кажется, отображает полный диапазон 0-1 в 8 бит 0-255. Я бы хотел, чтобы он отображал диапазон 0,5-1 результата разделения в 8-битный диапазон вывода. возможно ли это как-то? Или как еще я могу достичь аналогичного результата?

ответ

0

фильтр lutyuv может сделать это: он может быть использован, чтобы применить функцию преобразования на как раз ркостность

lutyuv=y=(val-min_intensity)*(maxval/(maxval-min_intensity))

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

Смежные вопросы