Site Loader

Разностные фильтры

Разностные фильтры часто используются для нахождения границ в изображениях. При этом используют дифференциальный оператор, вычисляющий приближенное значение градиент1 яркости изображения. Результатом применения такого оператора в каждой точке изображения является либо вектор градиента яркости в этой точке, либо его норма.

Результат показывает, насколько «резко» или «плавно» меняется яркость изображения в каждой точке, а значит, вероятность нахождения точки на грани, а также ориентацию границы. На практике, вычисление величины изменения яркости (вероятности принадлежности к границе) надежнее и проще в интерпретации, чем расчет направления.

Если на изображении будет присутствовать однотонная область или область с плавными переходами цветов, то в результирующем изображении подобные участки будут закрашены черным цветом. Там, где имеются перепады (резкие переходы, края), крутизна изменения яркости высока и в конечном изображении в таких местах появятся яркие светлые линии.

Математически, градиент функции двух переменных для каждой точки изображения (которой и является функция яркости) — двумерный вектор, компонентами которого являются производные яркости изображения по горизонтали и вертикали. В каждой точке изображения градиентный вектор ориентирован в направлении наибольшего увеличения яркости, а его длина соответствует величине изменения яркости.

Одним из способов нахождения границ на изображении является реализация фильтра или оператора Собеля (Sobel), который позволяет найти неточное приближение градиента яркости изображения.

Строго говоря, оператор использует ядра 3×3, с которыми сворачивают исходное изображение для вычисления приближенных значений производных по горизонтали и по вертикали. Формально оператор Собеля определяется следующим образом:

Пусть A исходное изображение, а Gx и Gy — два изображения, где каждая точка содержит приближенные производные по x и по y. Они вычисляются следующим образом:

где * обозначает двухмерную операцию свертки (операцию линейной фильтрации, рассмотренную ранее).

Координата x здесь возрастает «направо», а y — «вниз». В каждой точке изображения приближенное значение величины градиента можно вычислить, используя полученные приближенные значения производных:

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

где, к примеру, угол Θ равен нулю для вертикальной границы, у которой тёмная сторона слева.

Операции свертки Gx и Gy можно использовать отдельно для нахождения вертикальных и горизонтальных границ. На Рис. 4 .37 приведен пример применения свертки

Gx (Рис. 4 .37, б) и Gy (Рис. 4 .37, в) к исходному изображению (Рис. 4 .37, а). В случае совместного использования двух операций свертки Gx и Gy можем получить результат представленный на Рис. 4 .38.

а)

б)

в)

Рис. 4.37. Пример нахождения вертикальных и горизонтальных границ

В отличии от сглаживающих и контрастоповышающих фильтров, не меняющих среднюю интенсивность изображения (сумма элементов ядра равна единице), в результате применения разностных операторов получается, как правило, изображение со средним значением пикселя близким к нулю (сумма элементов ядра равна нулю). При этом пиксели со значениями близкими к нулю можно отображать белым цветом. Пиксели значения яркости, которых получились большего некоего порога, можно отображать черным цветом.

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

Рис. 4.38. Пример использования оператора Собеля

Кроме фильтра Собеля можно использовать оператор Прюита (Prewitt) или оператор Щарра (Scharr), подобные алгоритму оператора Собеля, за исключением использования других матриц.

У алгоритмов нахождения границ существует несколько недостатков. Главный из них — неопределенность в выборе величины порога. Для разных частей изображения приемлемый результат обычно получается при существенно разных пороговых значениях. Кроме того, разностные фильтры очень чувствительны к шумам изображения.

НОУ ИНТУИТ | Лекция | Фильтрация изображений

Аннотация: Введение. Линейные фильтры: определение, сглаживающие фильтры, контрастоповышающие фильтры, разностные фильтры. Нелинейные фильтры: примеры нелинейных фильтров, морфологические операторы

8.1. Введение

Представим себе, что, глядя на какую-нибудь сцену одним глазом, мы подносим к нему стеклянную пластину. Если эта пластина не была идеально прозрачной, то наблюдаемое изображение изменится. В зависимости от стекла, из которого сделана пластина, изменение может быть самым разнообразным. К примеру, если это стекло было цветным, то изображение приобретет соответствующий оттенок, а от мутного стекла — станет размытым.

Фильтрация изображений аналогична такому разглядыванию мира через стеклянную пластину, хотя и позволяет добиться гораздо большего разнообразия эффектов, чем эксперименты с разными пластинами. Под фильтрацией изображений понимают операцию, имеющую своим результатом изображение того же размера, полученное из исходного по некоторым правилам. Обычно интенсивность (цвет) каждого пикселя результирующего изображения обусловлена интенсивностями (цветами) пикселей, расположенных в некоторой его окрестности в исходном изображении.

Правила, задающие фильтрацию (их называют фильтрами ), могут быть самыми разнообразными. В этой лекции мы рассмотрим простейшие фильтры. Заметим, что, согласно предложенному определению, операция, заключающаяся в последовательном применении двух или более фильтраций, тоже является фильтрацией. Таким образом, можно говорить о составных фильтрах, соответствующих комбинациям простых. Изучив основные типы фильтров в данной лекции, мы будем иметь дело с применением фильтров, составленных из них, для решения разнообразных задач в последующих лекциях. Фильтрация изображений является одной из самых фундаментальных операций компьютерного зрения, распознавания образов и обработки изображений. Фактически, с той или иной фильтрации исходных изображений начинается работа подавляющего большинства методов. Рассматриваемые в этой лекции фильтры имеют, таким образом, чрезвычайную важность с точки зрения их применения в различных приложениях.

8.2. Линейные фильтры

Определение

Линейные фильтры представляют собой семейство фильтров, имеющих очень простое математическое описание.

Вместе с тем они позволяют добиться самых разнообразных эффектов. Будем считать, что задано исходное полутоновое изображение A, и обозначим интенсивности его пикселей A(x, y). Линейный фильтр определяется вещественнозначной функцией F, заданной на растре. Данная функция называется ядром фильтра, а сама фильтрация производится при помощи операции дискретной свертки (взвешенного суммирования) (см. также «Дискретизация. Антиалиасинг. Геометрические преобразования растровых изображений» ):

( 8.1)

Результатом служит изображение B. В определении (8.1) мы опустили пределы суммирования. Обычно ядро фильтра отлично от нуля только в некоторой окрестности N точки (0, 0). За пределами этой окрестности F(i, j) или в точности равно нулю, или очень близко к нему, так что можно им пренебречь. Суммирование в (8.1) производится по , и значение каждого пикселя B(x, y) определяется пикселями изображения A, которые лежат в окне N, центрированном в точке (x, y) (мы будем обозначать это множество N(x, y) ). Ядро фильтра, заданное на прямоугольной окрестности N, может рассматриваться как матрица m на n, где длины сторон являются нечетными числами. При задании ядра матрицей M

kl, ее следует центрировать:

( 8.2)

Также нуждается в дополнительном прояснении ситуация, когда пиксель (x, y) находится в окрестности краев изображения. В этом случае A(x + i, y + j) в определении (8.1) может соответствовать пикселю A, лежащему за пределами изображения A. Данную проблему можно разрешить несколькими способами.

  • Не проводить фильтрацию для таких пикселей, обрезав изображение B по краям или закрасив их, к примеру, черным цветом.
  • Не включать соответствующий пиксель в суммирование, распределив его вес F(i, j) равномерно среди других пикселей окрестности N(x, y).
  • Доопределить значения пикселей за границами изображения при помощи экстраполяции. Например, считать постоянным значение интенсивности вблизи границы (для пикселя (-2, 5) имеем A(-2, 5) = A(0, 5) ) или считать постоянным градиент интенсивности вблизи границы ( A(-2, 5) = A(0, 5) + 2(A(0, 5) — A(1, 5)) ).
  • Доопределить значения пикселей за границами изображения, при помощи зеркального отражения ( A(-2, 5) = A(2, 5) ).

Выбор конкретного способа нужно производить с учетом конкретного фильтра и особенностей конкретного приложения.

Разобрав общее определение линейных фильтров, перейдем к примерам.

Понимание и проектирование дифференциальных фильтров для систем связи