Опера́тор Со́беля (), який іноді називають опера́тором Со́беля — Фе́льдмана () та фі́льтром Со́беля (), використовують в обробці зображень та комп'ютернім баченні, зокрема в алгоритмах виявляння контурів, де він створює зображення, яке виділяє контури. Його названо на честь та , колег зі (). Собель та Фельдман запропонували ідею «ізотропного оператора градієнта зображення 3 × 3» на виступі в SAIL у 1968 році.Irwin Sobel, 2014, History and Definition of the Sobel Operator Технічно це , який обчислює наближення функції яскравості зображення. У кожній точці зображення результат оператора Собеля — Фельдмана — або відповідний вектор градієнта, або норма цього вектора. Оператор Собеля — Фельдмана ґрунтується на згортанні зображення з невеликим роздільним цілочисловим фільтром в горизонтальному та вертикальному напрямках, і тому відносно невитратний з погляду обчислень. З іншого боку, наближення градієнтна, яке він створює, відносно грубе, зокрема для високочастотних мінливостей на зображенні.

Формулювання

Цей оператор використовує два ядра 3×3, які згортають з первинним зображенням, щоб обчислювати наближення похідних — однієї для горизонтальних змін, та однієї для вертикальних. Якщо ми визначимо A як первинне зображення, а Gx та Gy — два зображення, що в кожній точці містять наближення горизонтальної та вертикальної похідних відповідно, то ці обчислення такі:Feature Detectors – Sobel Edge Detector

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

Оскільки ядра Собеля можливо розкласти як добутки усереднювального та диференціювального ядер, вони обчислюють градієнт зі згладжуванням. Наприклад, можливо записати як

Координату x тут визначено як зростальну «праворуч», а координату y — як зростальну «донизу». У кожній точці зображення отримані наближення градієнта можливо об'єднувати, щоб отримувати величину градієнта, використовуючи

Використовуючи цю інформацію, ми також можемо обчислювати напрямок градієнта:

де, наприклад, дорівнює 0 для вертикального контуру, світлішого з правого боку (щодо див. ).

Формальніше

Оскільки функція яскравості цифрового зображення відома лише в дискретних точках, похідні цієї функції неможливо визначити, якщо ми не припустимо, що в основі лежить диференційовна функція яскравості, з якої було зроблено вибірку в точках зображення. За деяких додаткових припущень похідну неперервної функції яскравості можливо обчислювати як функцію вибіркової функції яскравості, тобто цифрового зображення. Виявляється, що похідні в будь-якій конкретній точці є функціями значень яскравості практично в усіх точках зображення. Проте наближення цих похідних функцій можливо визначити з меншим або більшим ступенем точності.

Оператор Собеля — Фельдмана пропонує доволі неточне наближення градієнта зображення, але все ще має достатню якість для практичного використання в багатьох застосуваннях. Точніше, він використовує значення яскравості лише в області 3×3 навколо кожної точки зображення, щоби наблизити відповідний градієнт зображення, й використовує лише цілі значення для коефіцієнтів, які зважують яскравості зображення, щоб отримати наближення градієнта.

Розширення на інші виміри

Оператор Собеля — Фельдмана складається з двох роздільних дій:

Згладжування перпендикулярно напрямку похідної за допомогою трикутного фільтра: Простої центральної різниці в напрямку похідної:

Фільтри Собеля — Фельдмана для похідних зображення в різних вимірностях, де :

1 вимір:

2 виміри:

2 виміри:

3 виміри:

3 виміри:

4 виміри:

Тож, як приклад, тривимірне ядро Собеля — Фельдмана в напрямку z:

Технічні деталі

Як наслідок його визначення, оператор Собеля можливо втілювати простими засобами як в апаратному, так і в програмному забезпеченні: для обчислення відповідного результату потрібні лише вісім точок зображення навколо точки, а для обчислення наближення вектора градієнта потрібна лише цілочислова арифметика. Крім того, обидва описані вище дискретні фільтри роздільні:

й тому дві похідні Gx та Gy можливо обчислювати як

У деяких втіленнях це роздільне обчислення може бути вигідним, оскільки передбачає менше арифметичних обчислень для кожної точки зображення.

Застосування згортки K до групи пікселів P можливо подати псевдокодом як

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

N(x,y) подає нову матрицю, отримувану після застосування згортки K до P, де P — піксельна матриця.

Приклад

Результат оператора Собеля — Фельдмана — це двовимірна мапа градієнта в кожній точці. Її можливо обробляти та розглядати так, ніби вона й сама є зображенням, із областями високого градієнта (імовірними контурами), видимими як білі лінії. Наступні зображення ілюструють це, показуючи обчислення оператора Собеля — Фельдмана на простому зображенні.

Наведені нижче зображення ілюструють зміну напрямку градієнта на крузі у відтінках сірого. Коли знаки та однакові, кут градієнта додатний, а коли різні, від'ємний. У наведеному нижче прикладі червоний і жовтий кольори на контурі кола позначують додатні кути, а синій та блакитний — від'ємні. Вертикальні контури ліворуч і праворуч кола мають кут 0, оскільки немає локальної зміни в . Горизонтальні ребра вгорі та внизу кола мають кути − та відповідно, оскільки немає локальних змін у . Від'ємний кут для верхнього контуру означає перехід від світлої області до темної, а додатний кут для нижнього контуру означає перехід від темної області до світлої. Усі інші пікселі позначено чорним через відсутність локальних змін та , і тому кут невизначений. Оскільки кут є функцією співвідношення до , пікселі з малими темпами зміни все ще можуть викликати велику реакцію кута. В результаті шум може викликати велику реакцію кута, що зазвичай є небажаним. Використовуючи інформацію про кут градієнта для застосувань обробки зображень, слід докладати зусиль, щоб усунути шум зображення задля зменшення цієї помилкової реакції.

Альтернативні оператори

Оператор Собеля — Фельдмана, хоч і зменшує артефакти, пов'язані з чистим оператором центральних різниць, не демонструє доброї обертової симетрії (приблизно 1° похибки). Шарр шукав можливість оптимізувати цю властивість, створивши ядра, оптимізовані для конкретної заданої числової точності (цілі числа, числа з рухомою комою…) та розмірності (1 вимір, 2 виміри, 3).Scharr, Hanno, 2000, Dissertation (in German), Optimal Operators in Digital Image Processing . B. Jähne, H. Scharr, and S. Körkel. Principles of filter design. In Handbook of Computer Vision and Applications. Academic Press, 1999. Там було запропоновано оптимізовані ядра тривимірних фільтрів розміром до 5×5×5, але найчастіше використовуваними ядрами з похибкою близько 0,2° є

Це розкладається аналогічно:

Опера́тори Ша́рра () — це результат оптимізації, яка мінімізує зважену середньоквадратичну кутову похибку в області Фур'є. Ця оптимізація виконується за умови, що отримані фільтри чисельно узгоджені. Тому вони дійсно є ядрами похідних, а не просто дотримуються обмежень симетрії. Оптимальним 8-бітним цілочисловим фільтром 3x3, що випливає з теорії Шарра, є

Подібну стратегію оптимізації та отримані фільтри також запропонували Фарид і Сімончеллі.H. Farid and E. P. Simoncelli, Optimally Rotation-Equivariant Directional Derivative Kernels, Int'l Conf Computer Analysis of Images and Patterns, pp. 207–214, Sep 1997. H. Farid and E. P. Simoncelli, Differentiation of discrete multi-dimensional signals , IEEE Trans Image Processing, vol.13(4), pp. 496–508, Apr 2004. Вони також досліджують схеми похідних вищого порядку. На відміну від роботи Шарра, ці фільтри не повинні бути чисельно узгодженими.

Задачу проєктування фільтрів похідних було переглянуто, наприклад, Круном.D. Kroon, 2009, Short Paper University Twente, Numerical Optimization of Kernel-Based Image Derivatives .

Фільтри похідних на основі довільних кубічних сплайнів запропонував Гаст.A. Hast., "Simple filter design for first and second order derivatives by a double filtering approach", Pattern Recognition Letters, Vol. 42, no.1 June, pp. 65–71. 2014. Він показав, як можливо правильно обчислювати похідні першого та другого порядку за допомогою кубічних чи тригонометричних сплайнів за допомогою підходу подвійного фільтрування, який дає фільтри довжини 7.

Іншим подібним оператором, який спочатку було породжено з оператора Собеля, є оператор Каялі, згортковий фільтр 3x3 на основі ідеальної обертової симетрії.

Напрямково оптимальні ядра похідних значно знижують систематичні похибки в оцінюванні оптичного потоку. Більші схеми з іще більшою точністю та сімействами оптимізованих фільтрів для розширеного оцінювання оптичного потоку було запропоновано в подальшій роботі Шарра. Було досліджено набори фільтрів похідних другого порядку для прозорого оцінювання руху.Scharr, Hanno, OPTIMAL SECOND ORDER DERIVATIVE FILTER FAMILIES FOR TRANSPARENT MOTION ESTIMATION 15th European Signal Processing Conference (EUSIPCO 2007), Poznan, Poland, September 3–7, 2007. Було помічено, що чим більші отримані ядра, тим краще вони наближують фільтри похідних гауссіана.

Приклад порівняння

Тут використовують чотири різні оператори градієнта для оцінювання величини градієнта перевірного зображення.

Втілення в MATLAB

clc clear all close all

test_img = imread('gantrycrane.png'); gray_img = rgb2gray(test_img); sobel_img = sobel(gray_img);

figure imshow(test_img)

figure imshow(gray_img)

figure imshow(sobel_img)

function output_image = sobel(A) Gx = [-1 0 1; -2 0 2; -1 0 1] Gy = [-1 -2 -1; 0 0 0; 1 2 1]

rows = size(A, 1) columns = size(A, 2) mag = zeros(size(A));

A = double(A);

for i=1:rows-2 for j=1:columns-2 S1 = sum(sum(Gx.*A(i:i+2, j:j+2))); S2 = sum(sum(Gy.*A(i:i+2, j:j+2)));

mag(i + 1, j + 1) = sqrt(S1.^2 + S2.^2); end end

threshold = 70 % залежить віл застосування [0–255] output_image = max(mag, threshold); output_image(output_image == round(threshold)) = 0; end

Наведений вище код MATLAB для демонстрування фільтра Собеля використовуватиме зображення, що йде в пакеті з самою MATLAB ('gantrycrane.png'). На виході будуть первинне зображення, версія первинного зображення у відтінках сірого, та результат фільтра Собеля.

Див. також

Цифрова обробка зображень Виявляння ознак (комп'ютерне бачення) Виділяння ознак

Оператор Прюітт

Примітки

Посилання

Виявляння контурів Собеля в OpenCV Фільтр Собеля в бібліотеці Python SciPy Бібліографічні посилання на Ірвіна Собеля в DBLP Приклад виявляння контурів Собеля за допомогою комп'ютерних алгоритмів