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

Матеріал з testwiki
Перейти до навігації Перейти до пошуку

Шаблон:Виявляння ознак (комп'ютерний зір)

Опера́тор Прюі́тт (Шаблон:Lang-en) використовують в обробці зображень, зокрема в алгоритмах виявляння контурів. З технічного погляду це Шаблон:Li, який обчислює наближення Шаблон:Нп функції яскравості зображення. У кожній точці зображення результат оператора Прюітт — або відповідний вектор градієнта, або норма цього вектора. Оператор Прюітт ґрунтується на згортанні зображення з невеликим роздільним цілочисловим фільтром в горизонтальному та вертикальному напрямках, і відтак відносно невитратний з погляду обчислень, як оператори Собеля та Каялі.[1] З іншого боку, наближення градієнтна, яке він створює, відносно грубе, зокрема для високочастотних мінливостей зображення. Оператор Прюітт розробила Шаблон:Нпні.[2]

Спрощений опис

По-простому, цей оператор обчислює Шаблон:Нп яскравості зображення в кожній точці, вказуючи напрямок найбільшого можливого збільшення від світлого до темного та швидкість зміни в цьому напрямку. Таким чином, результат показує, наскільки «різко» чи «плавно» змінюється зображення в цій точці, а отже, наскільки правдоподібно, що частина зображення це контур (Шаблон:Lang-en), а також те, який правдоподібний напрямок цього контуру. На практиці інтерпретувати обчислення величини (правдоподібності контуру) надійніше та легше, ніж обчислення напрямку.

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

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

З математичної точки зору цей оператор використовує два ядра 3×3, які згортають із первинним зображенням, щоб обчислити наближення похідних — одне для горизонтальних змін, інше — для вертикальних. Якщо ми визначимо 𝐀 як первинне зображення, а 𝐆𝐱 та 𝐆𝐲 — два зображення, які в кожній точці містять наближення горизонтальної та вертикальної похідних, то їх обчислюють так:

𝐆𝐱=[+101+101+101]*𝐀,𝐆𝐲=[+1+1+1000111]*𝐀

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

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

[+101+101+101]=[111][+101]

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

𝐆=𝐆x2+𝐆y2

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

Θ=atan2(𝐆y,𝐆x)

де, наприклад, Θ дорівнює 0 для вертикального контуру, темнішого праворуч.

Приклад

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

Див. також

Примітки

Шаблон:Примітки