Открыть сервис

Фильтр Превитта

Фильтр Превитта — это дискретный дифференциальный оператор, используемый в обработке изображений и компьютерном зрении для обнаружения границ. Он вычисляет приближение градиента яркости изображения, выделяя области резкого изменения интенсивности, которые, как правило, соответствуют контурам объектов. Фильтр назван в честь Джудит Превитт (Judith Prewitt), американского учёного в области информатики и биоинженерии, которая предложила его в 1970 году в контексте анализа микроскопических изображений клеток крови. Фильтр Превитта является одним из простейших и наиболее ранних алгоритмов выделения границ, наряду с оператором Собела и оператором Робертса.

История

Фильтр Превитта был впервые описан в 1970 году в статье Джудит Превитт «Объектное выделение и анализ изображений» (Object Enhancement and Extraction), опубликованной в сборнике «Picture Processing and Psychopictorics» под редакцией Б. С. Липкина и А. Розенфельда. Работа была выполнена в рамках исследований по автоматизации анализа цитологических препаратов. Превитт предложила набор из четырёх масок (ядер свёртки), ориентированных по направлениям: север, юг, восток, запад, а также их комбинации для выделения диагональных границ. В отличие от более позднего оператора Собела (1973), фильтр Превитта не использует взвешивание центральных пикселей, что делает его более чувствительным к шуму, но более простым в вычислительном отношении.

Математическое описание

Фильтр Превитта основан на вычислении дискретного градиента функции яркости изображения \( I(x, y) \). Для этого используются два ядра свёртки размером 3×3: одно для оценки горизонтальной составляющей градиента (\( G_x \)), другое — для вертикальной (\( G_y \)).

Ядра фильтра

Горизонтальное ядро (реагирует на вертикальные границы): \[ G_x = \begin{bmatrix} -1 & 0 & +1 \\ -1 & 0 & +1 \\ -1 & 0 & +1 \end{bmatrix} \]

Вертикальное ядро (реагирует на горизонтальные границы): \[ G_y = \begin{bmatrix} -1 & -1 & -1 \\ 0 & 0 & 0 \\ +1 & +1 & +1 \end{bmatrix} \]

Эти ядра представляют собой разностные операторы, аппроксимирующие частные производные \( \frac{\partial I}{\partial x} \) и \( \frac{\partial I}{\partial y} \). Значения в ядрах — целые числа, что упрощает вычисления, особенно на ранних компьютерах с ограниченной арифметикой.

Вычисление градиента

Для каждого пикселя изображения (за исключением крайних) вычисляются свёртки с обоими ядрами: \[ G_x = \sum_{i=-1}^{1} \sum_{j=-1}^{1} I(x+i, y+j) \cdot K_x(i, j) \] \[ G_y = \sum_{i=-1}^{1} \sum_{j=-1}^{1} I(x+i, y+j) \cdot K_y(i, j) \]

где \( K_x \) и \( K_y \) — соответствующие ядра.

Амплитуда и направление градиента

Амплитуда (магнитуда) градиента в точке вычисляется как: \[ G = \sqrt{G_x^2 + G_y^2} \]

Для упрощения вычислений часто используют приближение: \[ G = |G_x| + |G_y| \]

Направление градиента (угол, перпендикулярный границе) определяется как: \[ \theta = \arctan\left(\frac{G_y}{G_x}\right) \]

Пиксели, для которых амплитуда градиента превышает заданный порог, считаются граничными.

Свойства и особенности

Простота и скорость

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

Чувствительность к шуму

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

Ориентационная чувствительность

Стандартные ядра Превитта реагируют на границы, ориентированные строго по горизонтали или вертикали. Для выделения диагональных границ используются дополнительные ядра:

Диагональное ядро (45°): \[ \begin{bmatrix} 0 & +1 & +1 \\ -1 & 0 & +1 \\ -1 & -1 & 0 \end{bmatrix} \]

Диагональное ядро (135°): \[ \begin{bmatrix} +1 & +1 & 0 \\ +1 & 0 & -1 \\ 0 & -1 & -1 \end{bmatrix} \]

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

Сравнение с другими операторами

ОператорЯдраВзвешиваниеЧувствительность к шумуВычислительная сложность
Превитта3×3РавномерноеВысокаяНизкая
Собела3×3Центральные пиксели имеют вес 2СредняяСредняя
Робертса2×2РавномерноеОчень высокаяОчень низкая
КэнниМногостадийныйГауссово сглаживаниеНизкаяВысокая

Применение

Ранние системы компьютерного зрения

В 1970-е и 1980-е годы фильтр Превитта широко применялся в системах автоматического анализа изображений, особенно в медицине и биологии. Джудит Превитт использовала его для выделения контуров клеток крови на микрофотографиях, что позволяло автоматизировать подсчёт форменных элементов.

Обработка изображений в реальном времени

Благодаря низкой вычислительной сложности, фильтр Превитта до сих пор используется в системах, где критична скорость обработки, например:

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

Образовательные цели

Фильтр Превитта является классическим примером для изучения основ обработки изображений и свёрточных операций. Он часто используется в учебных курсах по компьютерному зрению для демонстрации принципов выделения границ.

Предобработка для более сложных алгоритмов

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

Интересные факты

  • Джудит Превитт была одной из первых женщин-учёных, получивших докторскую степень в области компьютерных наук (1970, Университет Пенсильвании). Её работа по фильтрации изображений стала частью её диссертации.
  • Фильтр Превитта часто путают с оператором Собела, однако разница в весовых коэффициентах приводит к различной реакции на шум и наклонные границы.
  • В некоторых реализациях фильтр Превитта называют «оператором Превитт» (Prewitt operator) или «детектором границ Превитт».
  • Несмотря на появление более совершенных алгоритмов (например, детектора Кэнни), фильтр Превитта остаётся востребованным в задачах, где важна простота реализации и минимальная задержка обработки.

Источники

  • Prewitt, J. M. S. (1970). «Object Enhancement and Extraction». In: Picture Processing and Psychopictorics, ed. B. S. Lipkin and A. Rosenfeld. Academic Press.
  • Gonzalez, R. C., Woods, R. E. (2008). «Digital Image Processing». 3rd ed. Pearson Prentice Hall.
  • Pratt, W. K. (2007). «Digital Image Processing: PIKS Scientific Inside». 4th ed. Wiley-Interscience.
  • Jain, A. K. (1989). «Fundamentals of Digital Image Processing». Prentice Hall.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →