Я применяю фильтр Гаусса к видео, используя gblur-фильтр ffmpeg. Фильтр принимает опцию sigma, но не позволяет выбрать размер ядра. Чтобы правильно сообщить о моем использовании размытия по Гауссу, я хотел бы знать, какой размер ядра используется в ffmpeg. (К вашему сведению, я использовал сигму = 0,5 и сигму = 0,8.)
Теперь этот вопрос StackExchange теоретически обсуждает связь между сигмой, радиусом и размером ядра. Если я правильно интерпретирую ответы, то радиус = 2 * сигма. А радиус - это количество пикселей в каждом направлении, которое использует фильтр Гаусса. Таким образом, kernel_size = ceil(радиус * 2 + 1). Например, если sigma = 0.5, то это ядро 3x3, а если sigma = 0.8, то ядро 5x5.
С другой стороны, Википедия говорит: «Как правило, программе обработки изображений нужно только вычислить матрицу с размерами ceil(6 * sigma) x ceil(6 * sigma), чтобы обеспечить результат, достаточно близкий к результату, полученному по всему распределению Гаусса. " Таким образом, опять же, если sigma = 0.5, то это ядро 3x3, а если sigma = 0.8, то это ядро 5x5.
Тем не менее, я нашел научную статью под названием « Видеомаркировка видео низкой сложности в сжатой области H.264 », которая противоречит предыдущим утверждениям. Авторы утверждают, что использовали фильтр Гаусса 5x5 с сигмой = 0,3 и сигмой = 0,4 (в таблице III и таблице IV). Но для этих сигм я бы ожидал размер ядра 3х3?
Короче говоря, я запутался в том, как вычесть размер ядра, используемый в ffmpeg, хотя я могу изменить только сигму. Я также не стал мудрее, прочитав исходный код ffmpeg gblur. Есть ли кто-то, кто может дать мне ясность по этому вопросу? Заранее спасибо!