Особливості застосування евристичних алгоритмів для детекції контурів

  • Сергій Петрович Саяпін
  • 14.06.25

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

Детектор контурів Кенні це метод виявлення контурів, який використовує багатоступінчастий алгоритм для виявлення широкого спектру контурів на зображеннях. Він був розроблений Джоном Ф. Кенні в 1986 році. Кенні також створив обчислювальну теорію виявлення контурів, яка пояснює, чому ця техніка працює.

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

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

    Застосування Гаусівського фільтра для згладжування зображення з метою видалення шуму.

    Визначення градієнтів інтенсивності зображення.

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

    Застосування подвійного порогу для визначення потенційних контурів.

    Відстеження контурів за допомогою гістерезису: фіналізація виявлення контурів шляхом подавлення всіх інших слабких контурів, які не з'єднані з сильними контурами.

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

Вибір розміру Гаусівського ядра впливає на ефективність згладжування. Чим більший розмір, тим вища спроможність фільтра прибирати шуми. З помітним збільшенням розміру Гаусівського фільтра збільшується і локалізаційна помилка при виявленні контурів. Типовим значенням, яке використовується для більшості випадків є розмір фільтра 5×5, проте це також може змінюватись залежно від конкретних ситуацій.

Кортур на зображенні може бути орієнтований в різні напрямки, тому алгоритм Кенні використовує чотири фільтри для виявлення горизонтальних, вертикальних та діагональних контурів на розмитому зображенні. Оператор виявлення контурів (в реалізації opencv – оператор Собеля) повертає значення для першої похідної в горизонтальному напрямку (Gx) та у вертикальному напрямку (Gy). На базі цих даних можна визначається градієнт та його напрямок.

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

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

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

Цей алгоритм використовує ідею, що слабкі пікселі контурів, пов'язані з істинними краями, зазвичай будуть з'єднані з сильним пікселем контурів, тоді як реакції шуму залишаться незв'язаними. Для відстеження з'єднання контурів застосовують аналіз об'єктів, перевіряючи слабкий піксель контуру та його сусіднє середовище. Якщо в блоці є хоча б один сильний піксель контуру, цей слабкий піксель можна вважати таким, що підлягає збереженню. Ці слабкі пікселі контурів стають сильними, що, у свою чергу, може призвести до збереження сусідніх слабких пікселів.

В бібліотеці OpenCV для ідентифікації контурів використовується функція cv2.Canny(). Основними аргументами цієї функції є значення фільтрів для відстеження контурів за допомогою гістерезису, а саме minVal і maxVal відповідно. Також додатково можна змінювати розмір ядра Собеля, яке використовується для знаходження градієнтів зображення. Ще одним додатковим параметром є L2 gradient, який визначає порядок норми для для знаходження величини градієнта. Підтримуються або перший або другий порядок. За результатами проведених експериментів перші два параметри показали найбільшу чутливість алгоритма до виділення контурів, тому для зменшення розміру простору пошуку оптимальних параметрів для двох останніх використовувались типові значення.

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

Рис. 8 Результати детекції контурів.
Наступним кроком запропонованого підходу є аналіз виявлених контурів та ідентифікація кіл. Для цього використовували перетворення Хафа для кіл. Це перетворення зображення, яке дозволяє виділяти круглі об'єкти із зображення,  навіть якщо вони частково приховані або неповні. Це як правило, ігнорує видовжені еліпси та ефективно шукає об'єкти з високим ступенем радіальної симетрії, причому кожен ступінь симетрії отримує один «голос» у пошуковому просторі. Під час пошуку перетворення може вимірювати центр і радіус кожного кругового об'єкта на зображенні.

Головна ідея полягає в тому, що кожне коло може бути описане трьома параметрами: координатами центру (x, y) та радіусом (r). Алгоритм спрямований на пошук у тривимірному параметричному просторі (x, y, r) всіх можливих кіл, які присутні в зображенні.

Зазвичай його використовують для зображення у відтінках сірого, а реалізація перетворення у бібліотеці OpenCV передбачає підбір наступних параметрів:

method - метод детекції, за замовчуванням cv2.HOUGH_GRADIENT. Це єдиний метод, підтримуваний в OpenCV, і заснований на градієнтних змінах у зображенні.
dp - відношення роздільної здатності об’ємного простору до зображення. Наприклад, якщо dp = 1, роздільна здатність об’ємного простору така ж, як у зображення. Якщо dp = 2, роздільна здатність зменшується вдвічі.

MinDist - мінімальна відстань між центрами виявлених кіл. Цей параметр допомагає уникнути накладення кіл, які можуть бути виявлені ближчими одне до одного, ніж значення minDist.

param1: Перший параметр використовується для контролю над методом cv2.Canny(). Зазвичай це порогове значення для вирізання слабо виражених країв.

param2: Поріг центрування. Менше значення означає, що буде обрано більше хибних кіл, і навпаки.

minRadius: Мінімальний радіус кола, що потрібно виявити.

maxRadius: Максимальний радіус кола, що потрібно виявити.

Приклад детекції вирв із використанням трансформації Хафа наведено на рис. 9

Рис. 9 Приклад детекції вирв із використанням трансформації Хафа.

Як можна побачити із рис. 9, навіть незначна зміна параметрів суттєво вприває на результати детекцій вирв, що вимагає постановки та розв’язання задачі підбору гіперпараметрів.

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

Складні моделі машинного навчання такі як мережі глибокої віри (DBN) [2], стеки денойзингових автоенкодерів [3], згорткові мережі [4], а також класифікатори, які ґрунтуються на складних технологіях витягання ознак, можуть мати від десяти до, можливо, п’ятдесяти гіперпараметрів, залежно від того, як експериментатор вирішує параметризувати модель і скільки гіперпараметрів експериментатор вирішує зафіксувати на розумному за замовчуванням рівні. Таким чином, оптимізацію гіперпараметрів слід вважати формальним зовнішнім циклом у процесі навчання. Навчальний алгоритм, як функція від даних до класифікатора (візьмемо класифікаційні задачі як приклад), включає вибір бюджету щодо того, скільки циклів ЦП має бути витрачено на дослідження гіперпараметрів, і скільки циклів ЦП має бути витрачено на оцінку кожного вибору гіперпараметра (тобто шляхом налаштування звичайних параметрів).

Попередній розділ (Методика навчання моделей комп’ютерного зору на базі зібраних та розмічених даних)

Наступний розділ (Програмна реалізація процедури оптимізації гіперпараметрів)

До змісту