В этом разделе описываются функции, выполняющие фильтрацию в частотной области. Сведения о проектировании фильтров в пространственной области см. в разделе Что такое фильтрация изображений в пространственной области?.
Программное обеспечение Toolbox™ обработки изображений поддерживает один класс линейного фильтра: двумерный фильтр конечной импульсной характеристики (FIR). КИХ-фильтры имеют конечную протяженность до одной точки, или импульса. Все функции проектирования фильтров панели инструментов обработки изображений возвращают фильтры FIR.
Фильтры FIR имеют несколько характеристик, которые делают их идеальными для обработки изображений в среде MATLAB ®:
КИХ-фильтры легко представить в виде матриц коэффициентов.
Двумерные КИХ-фильтры являются естественными расширениями одномерных КИХ-фильтров.
Существует несколько известных, надежных способов конструирования КИХ-фильтров.
Фильтры FIR просты в реализации.
Фильтры FIR могут быть сконструированы с линейной фазой, что помогает предотвратить искажения.
Другой класс фильтра, фильтр с бесконечной импульсной характеристикой (БИХ), не так подходит для приложений обработки изображения. В нем отсутствует присущая ему стабильность и простота проектирования и реализации фильтра FIR. Поэтому эта панель инструментов не поддерживает фильтр IIR.
Примечание
Большинство методов проектирования, описанных в этом разделе, работают путем создания двумерного фильтра из одномерного фильтра или окна, созданного с помощью функций панели инструментов обработки сигналов. Несмотря на то, что эта панель инструментов не требуется, при отсутствии программного обеспечения Signal Processing Toolbox может возникнуть проблема с проектированием фильтров.
В этом примере показано, как преобразовать одномерный КИХ-фильтр в двумерный КИХ-фильтр с помощью ftrans2 функция. Эта функция может быть полезна, поскольку проще сконструировать одномерный фильтр с определенными характеристиками, чем соответствующий двумерный фильтр. Способ преобразования частоты сохраняет большинство характеристик одномерного фильтра, в частности пропускную способность перехода и характеристики пульсации. Форма одномерной частотной характеристики четко прослеживается в двумерной характеристике.
Эта функция использует матрицу преобразования, набор элементов, который определяет преобразование частоты. Матрица преобразования этой функции по умолчанию создает фильтры с почти круговой симметрией. Определив собственную матрицу преобразования, можно получить различные симметрии. (Подробнее см. Jae S. Lim, двумерная обработка сигналов и изображений, 1990.)
Создайте 1-D фильтр ЕЛИ, используя firpm из Toolbox™ обработки сигналов.
b = firpm(10,[0 0.4 0.6 1],[1 1 0 0])
b =
Columns 1 through 9
0.0537 -0.0000 -0.0916 -0.0001 0.3131 0.4999 0.3131 -0.0001 -0.0916
Columns 10 through 11
-0.0000 0.0537Преобразование фильтра 1-D в фильтр 2-D.
h = ftrans2(b);
h =
Columns 1 through 9
0.0001 0.0005 0.0024 0.0063 0.0110 0.0132 0.0110 0.0063 0.0024
0.0005 0.0031 0.0068 0.0042 -0.0074 -0.0147 -0.0074 0.0042 0.0068
0.0024 0.0068 -0.0001 -0.0191 -0.0251 -0.0213 -0.0251 -0.0191 -0.0001
0.0063 0.0042 -0.0191 -0.0172 0.0128 0.0259 0.0128 -0.0172 -0.0191
0.0110 -0.0074 -0.0251 0.0128 0.0924 0.1457 0.0924 0.0128 -0.0251
0.0132 -0.0147 -0.0213 0.0259 0.1457 0.2021 0.1457 0.0259 -0.0213
0.0110 -0.0074 -0.0251 0.0128 0.0924 0.1457 0.0924 0.0128 -0.0251
0.0063 0.0042 -0.0191 -0.0172 0.0128 0.0259 0.0128 -0.0172 -0.0191
0.0024 0.0068 -0.0001 -0.0191 -0.0251 -0.0213 -0.0251 -0.0191 -0.0001
0.0005 0.0031 0.0068 0.0042 -0.0074 -0.0147 -0.0074 0.0042 0.0068
0.0001 0.0005 0.0024 0.0063 0.0110 0.0132 0.0110 0.0063 0.0024
Columns 10 through 11
0.0005 0.0001
0.0031 0.0005
0.0068 0.0024
0.0042 0.0063
-0.0074 0.0110
-0.0147 0.0132
-0.0074 0.0110
0.0042 0.0063
0.0068 0.0024
0.0031 0.0005
0.0005 0.0001Просмотрите частотную характеристику фильтров.
[H,w] = freqz(b,1,64,'whole');
colormap(jet(64))
plot(w/pi-1,fftshift(abs(H)))
figure, freqz2(h,[32 32])
Одномерная частотная характеристика

Соответствующая двухмерная частотная характеристика

Способ частотной выборки создает фильтр на основе требуемой частотной характеристики. Учитывая матрицу точек, которые определяют форму частотной характеристики, этот метод создает фильтр, частотная характеристика которого проходит через эти точки. Частотная выборка не накладывает ограничений на поведение частотной характеристики между заданными точками; обычно реакция пульсирует в этих областях. (Рябь - это колебания вокруг постоянной величины. Частотная характеристика практического фильтра часто имеет пульсации, где частотная характеристика идеального фильтра является плоской.)
Функция панели инструментов fsamp2 реализует схему частотной выборки для двумерных КИХ-фильтров. fsamp2 возвращает фильтр h с частотной характеристикой, которая проходит через точки входной матрицы Hd. В приведенном ниже примере создается фильтр 11 на 11 с использованием fsamp2 и строят график частотной характеристики результирующего фильтра. ( freqz2 функция в этом примере вычисляет двумерную частотную характеристику фильтра. Дополнительные сведения см. в разделе Вычисление частотной характеристики фильтра.)
Hd = zeros(11,11); Hd(4:8,4:8) = 1; [f1,f2] = freqspace(11,'meshgrid'); mesh(f1,f2,Hd), axis([-1 1 -1 1 0 1.2]), colormap(jet(64)) h = fsamp2(Hd); figure, freqz2(h,[32 32]), axis([-1 1 -1 1 0 1.2])
Желательная двумерная частотная характеристика (слева) и фактическая двумерная частотная характеристика (справа)

Обратите внимание на пульсации в фактической частотной характеристике по сравнению с требуемой частотной характеристикой. Эти пульсации являются фундаментальной проблемой при проектировании частотной выборки. Они происходят там, где есть резкие переходы в нужной реакции.
Пространственную протяженность пульсаций можно уменьшить с помощью фильтра большего размера. Однако фильтр большего размера не уменьшает высоту пульсаций и требует большего времени вычисления для фильтрации. Чтобы получить более гладкую аппроксимацию желаемой частотной характеристики, рассмотрим использование способа преобразования частоты или способа оконной обработки.
Способ оконной обработки включает умножение идеальной импульсной характеристики на оконную функцию для генерации соответствующего фильтра, который сужает идеальную импульсную характеристику. Подобно способу частотной выборки, способ оконной обработки создает фильтр, частотная характеристика которого аппроксимирует требуемую частотную характеристику. Однако метод оконной выборки имеет тенденцию давать лучшие результаты, чем метод частотной выборки.
Панель инструментов предоставляет две функции для проектирования фильтров на основе окон, fwind1 и fwind2. fwind1 создает двумерный фильтр, используя двумерное окно, созданное из одного или двух указанных одномерных окон. fwind2 создает двумерный фильтр, используя непосредственно указанное двумерное окно.
fwind1 поддерживает два различных метода создания двумерных окон:
Преобразование одного одномерного окна для создания двумерного окна, которое является почти кругово симметричным, с использованием процесса, аналогичного вращению
Создание прямоугольного, отделяемого окна из двух одномерных окон путем вычисления их внешнего продукта
В приведенном ниже примере используется fwind1 создать фильтр 11 на 11 из желаемой частотной характеристики Hd. В примере используется панель инструментов обработки сигналов hamming для создания одномерного окна, которое fwind1 затем расширяется до двумерного окна.
Hd = zeros(11,11); Hd(4:8,4:8) = 1; [f1,f2] = freqspace(11,'meshgrid'); mesh(f1,f2,Hd), axis([-1 1 -1 1 0 1.2]), colormap(jet(64)) h = fwind1(Hd,hamming(11)); figure, freqz2(h,[32 32]), axis([-1 1 -1 1 0 1.2])
Желательная двумерная частотная характеристика (слева) и фактическая двумерная частотная характеристика (справа)

Функции проектирования фильтра fsamp2, fwind1, и fwind2 все создают фильтры на основе матрицы желаемой величины частотной характеристики. Частотная характеристика - математическая функция, описывающая усиление фильтра в ответ на различные входные частоты.
Можно создать необходимую матрицу частотных характеристик с помощью freqspace функция. freqspace возвращает правильные, равномерно разнесенные значения частоты для любого отклика размера. Если создается требуемая матрица частотных характеристик с использованием частотных точек, отличных от возвращаемых freqspace, вы можете получить неожиданные результаты, такие как нелинейная фаза.
Например, чтобы создать круговую идеальную низкочастотную характеристику с отсечкой 0,5, используйте
[f1,f2] = freqspace(25,'meshgrid'); Hd = zeros(25,25); d = sqrt(f1.^2 + f2.^2) < 0.5; Hd(d) = 1; mesh(f1,f2,Hd)
Идеальная круговая низкочастотная характеристика

Обратите внимание, что для этой частотной характеристики фильтры, созданные fsamp2, fwind1, и fwind2 реальны. Этот результат является желательным для большинства приложений обработки изображений. Для достижения этого в целом желаемая частотная характеристика должна быть симметричной относительно начала координат частоты (f1
=
0, f2
=
0).
freqz2 функция вычисляет частотный отклик для двумерного фильтра. Без выходных аргументов, freqz2 создает сетчатый график частотной характеристики. Например, рассмотрим этот фильтр FIR,
h =[0.1667 0.6667 0.1667
0.6667 -3.3333 0.6667
0.1667 0.6667 0.1667];Эта команда вычисляет и отображает частотную характеристику 64 на 64 точек h.
freqz2(h)
Частотная характеристика двумерного фильтра

Получение матрицы частотной характеристики H и векторы частотных точек f1 и f2, используйте выходные аргументы
[H,f1,f2] = freqz2(h);
freqz2 нормализует частоты f1 и f2 так, что значение 1,0 соответствует половине частоты дискретизации, или δ радиан.
Для простого mоколо-n ответ, как показано выше, freqz2 использует двумерную функцию быстрого преобразования Фурье fft2. Можно также задать векторы произвольных частотных точек, но в этом случае freqz2 использует более медленный алгоритм.
Дополнительные сведения о быстром преобразовании Фурье и его применении к линейной фильтрации и конструкции фильтра см. в разделе Преобразование Фурье.