Знаймо

Додати знання

приховати рекламу

Цей текст може містити помилки.

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



План:


Введення

Парова машина в кольорі.
Застосування оператора Собеля до зображення

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


1. Спрощене опис

Якщо простіше, то оператор обчислює градієнт яскравості зображення в кожній точці. Так знаходиться напрям найбільшого збільшення яскравості і величина її зміни в цьому напрямку. Результат показує, наскільки "різко" або "плавно" змінюється яскравість зображення в кожній точці, а значить, вірогідність знаходження точки на межі, а також орієнтацію кордону. На практиці, обчислення величини зміни яскравості (імовірності належності до грані) надійніше і простіше в інтерпретації, ніж розрахунок напряму.

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


2. Формалізація

Строго кажучи, оператор використовує ядра 3 3, з якими згортають вихідне зображення для обчислення наближених значень похідних по горизонталі і по вертикалі. Нехай A вихідне зображення, а G x і G y - два зображення, де кожна точка містить наближені похідні по x та по y. Вони обчислюються наступним чином:

\ Mathbf {G} _y = \ begin {bmatrix} -1 & -2 & -1 \ \ 0 & 0 & 0 \ \ +1 & +2 & +1 \ end {bmatrix} * \ mathbf {A} \ quad \ mbox {and} \ quad \ mathbf {G} _x = \ begin {bmatrix} -1 & 0 & +1 \ \ -2 & 0 & +2 \ \ -1 & 0 & +1 \ end {bmatrix} * \ mathbf {A}

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

Координата x тут зростає "направо", а y - "вниз". У кожній точці зображення наближене значення величини градієнта можна обчислити, використовуючи отримані наближені значення похідних:

\ Mathbf {G} = \ sqrt {{\ mathbf {G} _x} ^ 2 + {\ mathbf {G} _y} ^ 2}

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

\ Mathbf {\ Theta} = \ operatorname {arctan} \ left ({\ mathbf {G} _y \ over \ mathbf {G} _x} \ right)

де, приміром, кут Θ дорівнює нулю для вертикальної кордону, у якої темна сторона зліва.


3. Строго кажучи ..

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

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


4. Розширення на іншу кількість вимірювань

Оператор Собеля складається з двох окремих операцій [1] :

  • Згладжування трикутним фільтром в перпендикулярному до похідної напрямку: h (- 1) = 1, h (0) = 2, h (1) = 1
  • Знаходження простого центрального зміни в напрямку похідної: h '(- 1) = 1, h' (0) = 0, h '(1) = - 1

Фільтри Собеля для похідних зображення в різних просторах для x, y, z, t \ in (0, -1,1) :

1D: h x '(x) = h' (x);

2D: h x '(x, y) = h' (x) h (y)

3D: h x '(x, y, z) = h' (x) h (y) h (z)

4D: h x '(x, y, z, t) = h' (x) h (y) h (z) h (t)

Ось приклад тривимірного ядра Собеля для осі z:

h_z '(:,:, -1) = \ begin {bmatrix} +1 & +2 & +1 \ \ +2 & +4 & +2 \ \ +1 & +2 & +1 \ end {bmatrix} \ quad h_z '(:,:, 0) = \ begin {bmatrix} 0 & 0 & 0 \ \ 0 & 0 & 0 \ \ 0 & 0 & 0 \ end {bmatrix} \ quad h_z' (:,:, 1 ) = \ begin {bmatrix} -1 & -2 & -1 \ \ -2 & -4 & -2 \ \ -1 & -2 & -1 \ end {bmatrix}

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

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


\ Begin {bmatrix} +1 & 0 & -1 \ \ +2 & 0 & -2 \ \ +1 & 0 & -1 \ end {bmatrix} = \ begin {bmatrix} 1 \ \ 2 \ \ 1 \ end {bmatrix} \ begin {bmatrix} +1 & 0 & -1 \ end {bmatrix} \ quad \ quad \ begin {bmatrix} +1 & +2 & +1 \ \ 0 & 0 & 0 \ \ -1 & - 2 & -1 \ end {bmatrix} = \ begin {bmatrix} +1 \ \ 0 \ \ -1 \ end {bmatrix} \ begin {bmatrix} 1 & 2 & 1 \ end {bmatrix}

і дві похідні, G x і G y, тепер можна обчислити як

\ Mathbf {G} _x = \ begin {bmatrix} 1 \ \ 2 \ \ 1 \ end {bmatrix} * \ left (\ begin {bmatrix} +1 & 0 & -1 \ end {bmatrix} * \ mathbf {A } \ right) \ quad \ mbox {and} \ quad \ mathbf {G} _y = \ begin {bmatrix} +1 \ \ 0 \ \ -1 \ end {bmatrix} * \ left (\ begin {bmatrix} 1 & 2 & 1 \ end {bmatrix} * \ mathbf {A} \ right)

Роздільність цих обчислень може привести до зменшення арифметичних дій з кожним пикселом.

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

N (x, y) = Сума {K (i, j). P (xi, yj)}, для i, j від -1 до +1.

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

Програмна реалізація оператора Собела може ефективно використовувати SIMD -розширення системи команд сучасних процесорів (т. зв. векторизация коду), при цьому виграш у швидкості обчислення оператора може становити до 5 разів у порівнянні з високорівневої реалізацією [2]. Ручне кодування на мові асемблера дозволяє обігнати за швидкістю такі компілятори як Microsoft Visual C + + і Intel C + + Compiler. Обчислення оператора Собела елементарно розпаралелюється на довільне число потоків (у межі кожну точку результуючого зображення можна обчислювати незалежно від сусідніх). Наприклад, при наявності двох процесорів (ядер) верхній полукадр зображення може бути оброблений одним з них, а нижній - іншим.


6. Приклади

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


Напівтонове зображення цегляної стіни та стійки для велосипеда
Нормалізований Собелем градієнт зображення цегляної стіни і стійки велосипеда
Нормалізований Собелем градієнт зображення по x
Нормалізований Собелем градієнт зображення по y

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

Оператор Собеля згладжує паразитні ефекти на зображенні, що викликаються чисто центрально-диференціальним оператором, але не має повної обертальної симетрією. Щарр досліджував поліпшення цієї властивості і знайшов, що кращі результати дає таке ядро [3] [4] :

\ Begin {bmatrix} +3 & +10 & +3 \ \ 0 & 0 & 0 \ \ -3 & -10 & -3 \ end {bmatrix} \ begin {bmatrix} +3 & 0 & -3 \ \ + 10 & 0 & -10 \ \ +3 & 0 & -3 \ end {bmatrix}

Примітки

  1. K. Engel (2006), Real-time volume graphics,, pp. 112-114
  2. Ватутін Е.І., Мірошниченко С.Ю., Титов В.С. Програмна оптимізація оператора Собела з використанням SIMD-розширень процесорів сімейства x86 - evatutin.narod.ru/evatutin_opt_02_simdsobel.pdf. Телекомунікації. 2006. № 6. С. 12-16. (2006).
  3. Scharr, Hanno, 2000, дессертація (в Німеччині), Optimal Operators in Digital Image Processing - nbn-resolving.de/urn/resolver.pl? urn = urn: nbn: de: bsz :16-opus-9622.
  4. B. Jhne, H. Scharr, and S. Krkel. 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 р., опубліковані, але часто цитується, спирається на "Pattern Classification and Scene Analysis", Duda, R . і Hart, P., вид. John Wiley and Sons, 1973, стор 271-272


Цей текст може містити помилки.

Схожі роботи | скачати

Схожі роботи:
Оператор
Оператор (математика)
Унітарний оператор
Оператор Д'Аламбера
Оператор замикання
Ерміта оператор
Оператор Кенні
Обмежений оператор
Замкнуте оператор
© Усі права захищені
написати до нас