Interested Article - Оператор Собеля

Паровая машина в цвете.
Применение оператора Собеля к изображению

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

Описание

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

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

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

Формализация

Строго говоря, оператор использует ядра , с которыми сворачивают исходное изображение для вычисления приближённых значений производных по горизонтали и по вертикали. Пусть — это исходное изображение, а и — два изображения, на которых каждая точка содержит приближённые производные по и по . Они вычисляются следующим образом:

где обозначает двумерную операцию свертки.

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

(имеется в виду поэлементно).

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

,

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

Уточнение

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

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

Расширение на другое количество измерений

Оператор Собеля состоит из двух отдельных операций :

  • Сглаживание треугольным фильтром в перпендикулярном к производной направлении:
  • Нахождение простого центрального изменения в направлении производной:

Формулы фильтра Собеля для производных изображения в разных пространствах для :

Вот пример трёхмерного ядра Собеля для оси :

.

Технические детали

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

и две производные, и , теперь можно вычислить как

Раздельность этих вычислений может привести к уменьшению арифметических действий с каждым пикселем.

Применение свёртки к группе пикселей можно представить псевдокодом :

N(x, y) = Сумма { K(i, j).P(x-i, y-j)}, для i, j от −1 до 1.

N(x, y) представляет собой результат применения матрицы свёртки K к P.

Программная реализация оператора Собеля может эффективно использовать SIMD -расширения системы команд современных процессоров (т. н. векторизация кода), при этом выигрыш в скорости вычисления оператора может составлять до пяти раз по сравнению с высокоуровневой реализацией . Ручное кодирование на языке ассемблера позволяет обогнать по скорости такие компиляторы, как Microsoft Visual C++ и Intel C++ Compiler .

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

Примеры

Результатом применения оператора Собеля является двумерная карта градиента для каждой точки. Её можно обработать и показать как картинку, на которой участки с большой величиной градиента (в основном, грани) будут видны как белые линии. Нижеприведённые изображения иллюстрируют это на примере простого изображения:

Полутоновое изображение кирпичной стены и стойки для велосипеда
Нормализованный Собелев градиент изображения кирпичной стены и стойки велосипеда
Нормализованный Собелев градиент изображения по x
Нормализованный Собелев градиент изображения по y

Оператор Щарра

Оператор Собеля сглаживает паразитные эффекты на изображении, вызываемые чисто центрально-дифференциальным оператором , но не обладает полной вращательной симметрией . Щарр исследовал улучшение этого свойства и пришёл к выводу, что лучшие результаты даёт следующее ядро :

См. также

Примечания

  1. K. Engel (2006), Real-time volume graphics , pp. 112–114
  2. Ватутин Э.И., Мирошниченко С.Ю., Титов В.С. . Телекоммуникации. 2006. № 6. С. 12—16. (2006). Дата обращения: 9 марта 2010. 13 апреля 2012 года.
  3. Scharr, Hanno, 2000, диссертация (в Германии), .
  4. B. Jähne, H. Scharr, and S. Körkel. Principles of filter design. In Handbook of Computer Vision and Applications. Academic Press, 1999.

Литература

  • Sobel I., Feldman G. «A 3x3 Isotropic Gradient Operator for Image Processing», 1968 (неопубл.).
  • Duda R., Hart P. Pattern Classification and Scene Analysis. — John Wiley and Sons, 1973. — P. 271—272. (Дуда Р., Харт П. Распознавание образов и анализ сцен. Пер. с англ. Вайнштейна Г.Г. и Васильковского А.М. — М.: Мир, 1976.)

Ссылки

Источник —

Same as Оператор Собеля