2D двусторонняя фильтрация
Vision HDL Toolbox / Фильтрация
Блок Bilateral Filter фильтрует изображения при сохранении ребер. Некоторые приложения двусторонней фильтрации являются шумоподавлением при сохранении ребер, разделении структуры от освещения и cartooning, чтобы улучшить ребра. Фильтр заменяет каждый пиксель в центре окружения средним значением, которое вычисляется с помощью пространственного и интенсивность Гауссовы фильтры. Блок определяет коэффициенты фильтра от:
Пространственное местоположение в окружении (подобный Гауссову фильтру размытия)
Различие в интенсивности от окружения сосредотачивает значение
Блок обеспечивает два параметра стандартного отклонения для независимого управления пространственных коэффициентов и коэффициентов интенсивности.
Этот блок использует пиксельный интерфейс потоковой передачи с шиной для сигналов управления кадром. Этот интерфейс позволяет блоку действовать независимо от размера изображения и формата. Все блоки Vision HDL Toolbox™ используют тот же интерфейс потоковой передачи. Блок принимает и возвращает и скалярное пиксельное значение и шину, содержащую пять управляющих сигналов. Управляющие сигналы указывают на валидность каждого пикселя и его местоположения в кадре. Чтобы преобразовать кадр (пиксельная матрица) в последовательный пиксельный поток и управляющие сигналы, используйте блок Frame To Pixels. Для полного описания интерфейса смотрите Пиксельный Интерфейс Потоковой передачи.
Двусторонний фильтр может быть описан как Гауссов фильтр в пространственной размерности, которая изменяет коэффициенты второго Гауссова фильтра, который работает с интенсивностью.
Алгоритм хранит N-1 строка так, чтобы это могло сформировать N-by-N матрица пикселей, совпадающих с Neighborhood size. Затем это применяет два Гауссовых фильтра на каждое окружение. Коэффициенты фильтра вычисляются от пространственных стандартных отклонений и стандартных отклонений интенсивности.
Операция Subtract Center производит пиксельное значение нуля в центре окружения. Для аппаратной реализации, и для симуляции типов данных с фиксированной точкой или целочисленных типов данных, вычисление в пунктирной области реализовано с интерполяционной таблицей предварительно вычисленных значений для каждого пикселя. Поскольку центральное значение всегда является нулем, u2, и eu всегда один и не вычисляются. Для входа с плавающей точкой симуляция вычисляет u2 и eu как показано. Вывод пунктирной области использует содействующий тип данных, который вы задали. Блоки Q в схеме показывают точки квантования.
Алгоритм реализует итоговый шаг нормализации со взаимной интерполяционной таблицей в аппаратной реализации. Интерполяционная таблица имеет 2 048 мест, таким образом, содействующая сумма квантуется к старшим значащим 11 битам. Обратные величины используют тип выходных данных, который вы задали плюс минимум двух целочисленных битов, если тип данных уже не включает их. Взаимное справочное значение для балансовой суммы является максимальным представимым значением в содействующем типе данных. Для нормализации с плавающей точкой симуляция обнаруживает балансовую сумму и вместо этого делится на eps
() дивиденда.
Значение выходного пикселя затем брошено к типу выходных данных, который вы задали. Фильтр использует целую область значений типа данных, поэтому если ваше цветовое пространство использует меньше, чем полный спектр, вы, возможно, должны повторно масштабировать пиксельные значения.
При фильтрации многокомпонентных (цветных) пикселей могут произойти фиктивные цвета, если операция не сделана в цветовом пространстве на основе человеческого восприятия, такого как CIELab. Двусторонняя фильтрация R'G'B' цветовое пространство не рекомендуется.