Арапов А. С. Основні принципи побудови програмного забезпечення для розпізнавання автомобільних номерів // Міжнародний науковий журнал "Інтернаука". — 2017. — №10.
Технічні науки
УДК 004.896
Арапов Андрей Сергеевич
бакалавр, студент
НТУУ “КПИ им. Игоря Сикорского”
Арапов Андрій Сергійович
бакалавр, студент
НТУУ “КПІ ім. Ігоря Сікорського”
Arapov Andrey Sergeevich
a bachelor, a student
NTUU "KPI them Igor Sikorsky"
ОСНОВНІ ПРИНЦИПИ ПОБУДОВИ ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ ДЛЯ РОЗПІЗНАВАННЯ АВТОМОБІЛЬНИХ НОМЕРІВ
ОСНОВНЫЕ ПРИНЦИПЫ ПОСТРОЕНИЯ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ ДЛЯ РАСПОЗНАВАНИЯ АВТОМОБИЛЬНЫХ НОМЕРОВ
BASIC PRINCIPLES OF SOFTWARE DEVELOPMENT FOR RECOGNITION OF AUTOMOBILE NUMBERS
Анотація: Виконано огляд основних принципів побудови, а також порівняння алгоритмів обробки зображення для подальшого розпізнавання автомобільних номерів.
Ключові слова: алгоритми розпізнавання, відеоспостереження, інтелектуальні системи.
Аннотация: Выполнен обзор основных принципов построения, а также сравнение алгоритмов обработки изображения для дальнейшего распознавания автомобильных номеров.
Ключевые слова: алгоритмы распознавания, видеонаблюдения, интеллектуальные системы.
Summary: An overview of the basic principles of construction, as well as comparison of image processing algorithms for further recognition of automobile numbers.
Keywords: recognition algorithms, video surveillance, intelligent systems.
Сьогодні майже всі сучасні системи відеоспостереження містять спеціалізовані модулі відеоаналітики, які забезпечують інтелектуальну обробку і аналіз об'єктів реального світу. Таких об'єктів безліч це і автомобілі, і будинки, і люди, будь-які перешкоди тощо. Спеціалізовані системи направлені на визначення певного класу таких об'єктів. Одним з найважливіших завдань систем відеоспостереження є визначення та розпізнавання автомобільних номерів. Це забезпечує зменшення витрат автотранспортних підприємств, підприємств, сфера діяльності яких пов'язана з охороною і безпекою, і, крім того, їх розпізнавання дозволяє автоматично виявляти дорожньо-транспортних порушників. Тому розпізнавання номерів представляє великий практично інтерес.
Для побудови системи відеоспостереження з можливістю розпізнавання автомобільних номерів необхідні якісне обладнання. Чим краще система освітлення, чим краще камера - тим краще будуть працювати алгоритми розпізнавання. Інфрачервоний прожектор може просвічувати навіть пил і бруд, які дуже часто заважають правильному розпізнаванню номера. Навіть найкращий алгоритм без гарної зйомки здебільшого буде на виході видавати дані з великою погрішністю, що не є достатнім для прийняття будь-якого рішення. Тому в такому випадку, дана система не зможе бути використана.
Загальна структура алгоритму розпізнавання номера в реальних умовах складається з трьох етапів [1]:
Кожен з цих кроків може бути реалізований за допомогою різних алгоритмів.
Алгоритми попереднього пошуку (детектування).
Одним з таких алгоритмів є контурний аналіз. За допомогою цього аналізу проводиться пошук прямокутного контуру. Контур з відповідними пропорціями може вважатися номером. Існує кілька ефективних методів виділення кордонів:
Цей принцип пошуку номера працює тільки в тому випадку, коли контур нічим не перекривається, вхідне зображення має велику роздільну здатність, а сам контур має рівні межі. Іноді замість аналізу всього контуру аналізується тільки його частина. Наприклад, аналізуються тільки вертикальні прямі. Відповідно до співвідношенням розміру цих прямих і відстані між ними, робиться висновок про вдалий пошук контуру з номером. Іноді, щоб знайти номер застосовується гістограма зображення. Виділення номеру по гістограмі зображення побудоване на припущенні, що частотна характеристика регіону з номером відмінна від частотної характеристики інших об'єктів на зображенні. Якщо це не так, тобто якщо на зображенні є текст або будь-які інші об'єкти зі схожими частотними характеристиками, то цей метод працювати не буде[2].
Наведені методи мають істотний недолік. Реальні автомобільних номерів можуть бути забруднені і тому результат визначення меж буде помилковий. У таких ситуаціях алгоритми дають недостовірну інформацію. Кращі методи для детектування номерів засновані на різних класифікаторах. Наприклад, для визначення номеру може використовуватися метод Віоли-Джонса. Цей алгоритм добре працює на об'єктах реального світу і має досить високу швидкість детектування. Єдиний недолік цього методу - тривалість навчання відповідних класифікаторів. Основні принципи цього алгоритму наступні. Замість звичайного зображення використовується інтегральне зображення - зображення, кожен піксель якого представляє собою суму всіх пікселів які лежать лівіше і вище даного пікселя, включаючи сам піксель[3]. В якості ознак класифікації використовуються примітиви Хаара, які в найпростішому випадку є прямокутниками, розташованими у вертикальному, горизонтальному або діагональному положенні. Вони містять світлу і темну частини. Значення такого примітиву Хаара складається з різниці суми світлою і суми темної частини. Якраз для обчислення цієї різниці і використовується інтегральне зображення, яке дозволяє за сталий час обчислити різницю таких сум. Саме через це детектування працює досить швидко. Для визначення номеру використовується безліч таких примітивів, об'єднаних у ланцюг. Такий ланцюг називається каскадом Хаара. Оскільки кожна окрема ознака Хаара не дозволяє досить достовірно виявити номер, то використовується алгоритм посилення (boosting), який з таких «слабких» ознак будує «сильний» каскад. Прикладом такого алгоритму посилення є AdaBoost. Побудова каскаду класифікаторів відбувається в процесі «навчання». На сьогоднішній день метод Віоли-Джонса реалізований в бібліотеці комп'ютерного зору OpenCV. Для його навчання необхідна вибірка фотографій з номерами в реальних умовах і вибірка фотографій реальних умов, але без номерів. Після цього можна проводити навчання засобами OpenCV. При роботі алгоритму використовується так зване «ковзне вікно», яке представляє собою прямокутник, що рухається по зображенню, що відокремлює його частину для пропускання через каскад. Розміри цього прямокутнику також можуть змінюватися. Це дозволяє розпізнавати номери різного розміру[4].
Алгоритми нормалізації.
Алгоритми детектування визначають номери з похибкою і тому необхідно нормалізація номеру, який вдалося детектувати. Спочатку відбувається вирівнювання номеру в горизонтальне положення. Для цього слід проводити виділення меж. Знайдені «довгі» прямі з більшою часткою ймовірності будуть межами номеру. Одним з кращих способів знаходження таких прямих є перетворення Хафа. Після вирівнювання кордонів необхідно поліпшити контраст зображення. Це проводиться стандартними засобами перетворення зображення. Іноді замість зміни контрасту проводять бінаризацію зображення - розділяючи всі пікселі на білі і чорні. Однак, в разі забруднення номера бінаризація призведе до негативного ефекту, так як вона не дозволить розпізнати символи, частково перекриті брудом. Після нормалізації необхідно відокремити символи з метою їх подальшого розпізнавання. У найпростішому випадку необхідно точно виділити ліву і праву межі номеру і з використанням точних розрахунків розташування кожної букви виділити ті місця, де вони повинні знаходитися. У більш складному випадку слід застосувати гістограму зображення, на якій максимуми означатимуть проміжок між буквами.
Алгоритми розпізнавання символів.
Ці алгоритми поділяються на дві категорії:
Для розпізнавання символів можна використовувати Tesseract OCR. Це відкрите програмне забезпечення, яке в змозі виконувати розпізнавання, як окремої букви, так і всього тексту. Але дане програмне забезпечення не надає достовірні результати у випадку, коли символи на вхідному зображенні перекриті, наприклад, брудом. Метод k найближчих сусідів (k-nearest). Принцип роботи алгоритму наступний. Спочатку записується велика кількість зображень реальних символів коректно розбитих на класи. Далі, вводиться міра відстані між символами. Для бінарного зображення це може бути операція xor. При спробі розпізнавання символу розраховується відстань між поточним символом і всіма існуючими символами. Далі береться певна кількість k найближчих по відстані класифікованих символів і вибирається клас, число символів якого серед цього k є максимальним[5]. Кореляційний метод. Він заснований на обчисленні коефіцієнту кореляції між двома зображеннями. Для кожного класу вибирається деяке зображення-еталон, з яким буде порівнюватися вхідне зображення символу. Для порівняння вираховується коефіцієнт кореляції або, в найпростішому випадку - «відстань» між зображеннями. Це «відстань» представляє собою суму різниць кожного пікселя еталона та пікселю вхідного зображення. Символ зараховується до того класу, «відстань» між якими мінімальна[6]. Нейронні мережі. Розпізнавання за допомогою нейронних мереж передбачає побудову відповідної нейронної мережі, вибір архітектури і її навчання. З розпізнаванням зображень добре справляються так звані згорткові нейронні мережі [7].
Таким чином, вище були показані основні алгоритми і принципи, які можуть бути використані при вирішенні практичного завдання розпізнавання автомобільних номерів. На даний момент існують готові комерційні рішення для виконання цього завдання, такі як iANPR (бібліотека, розпізнає російські номери), номерок (програмне забезпечення, розпізнає українські номери), програмно-апаратний комплекс «Автоінспектор» (українські номери), система CarGo Enterprise (українські та іноземні номери) та інші системи. Однак, дані системи мають досить велику вартість.
Література