Фильтр Превитта
Фильтр Превитта — это дискретный дифференциальный оператор, используемый в обработке изображений и компьютерном зрении для обнаружения границ. Он вычисляет приближение градиента яркости изображения, выделяя области резкого изменения интенсивности, которые, как правило, соответствуют контурам объектов. Фильтр назван в честь Джудит Превитт (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 →