Навколишній світ ми сприймаємо переважно через зір. Людський мозок здатний розпізнавати предмети, оцінювати відстань та навіть відчувати текстуру, спираючись лише на візуальні образи.
Хоча процес бачення здається нам простим і природним, його відтворення у комп’ютерах є досить складним завданням. Проте, завдяки багаторічній роботі, було розроблено різноманітні алгоритми, які допомагають комп’ютерам аналізувати та обробляти зображення. Ці алгоритми втілені у програмних бібліотеках, які ми розглянемо в цій статті.
Що таке обробка зображень?
Обробка зображень є важливою частиною комп’ютерного зору. Вона охоплює різноманітні операції, які виконуються з зображеннями для підготовки їх до використання в машинному навчанні та інших сферах штучного інтелекту.
Завдяки обробці зображень стає можливим виявлення та ідентифікація об’єктів, що знаходить застосування у створенні безпілотних транспортних засобів, роботів, а також у класифікації зображень для виявлення небажаного контенту.
Сфери застосування обробки зображень
Обробка зображень використовується в багатьох галузях. Ось декілька найпоширеніших та корисних прикладів:
- Медична візуалізація та діагностика: штучний інтелект використовується для аналізу медичних сканів та постановки діагнозів.
- Системи безпеки: впровадження біометричних систем і створення систем відеоспостереження.
- Робототехніка: розробка роботів, здатних орієнтуватися в навколишньому середовищі, зокрема безпілотних автомобілів.
- Доповнена реальність: застосування фільтрів та інших ефектів на зображеннях, шляхом ідентифікації об’єктів.
- Аналіз дорожнього руху: розпізнавання номерних знаків для фіксації порушень, таких як проїзд на червоне світло.
Для обробки зображень існує велика кількість алгоритмів, зокрема морфологічна дилатація та ерозія, Гауссівське розмиття, перетворення Фур’є, виявлення країв та вейвлет-аналіз.
Без готових програмних бібліотек, реалізація цих алгоритмів з нуля була б вкрай складною. На щастя, існують готові бібліотеки, що значно спрощують цей процес. Далі розглянемо декілька найпопулярніших з них.
OpenCV
OpenCV є однією з провідних бібліотек для обробки зображень. Її використовують для реалізації алгоритмів комп’ютерного зору, машинного навчання та аналізу зображень.
Вона є безкоштовною, з відкритим вихідним кодом, та сумісна з різними мовами програмування, такими як Python, C++ та Java.
Бібліотека надає широкий спектр функцій та алгоритмів, необхідних для обробки зображень, включаючи виявлення країв, виділення ознак, трансформації, обертання, зміну розміру та покращення якості.
Scikit-image
Scikit-image пропонує зручний та ефективний набір інструментів для обробки зображень. Він забезпечує можливість вводу/виводу зображень, трансформації, фільтрації, сегментації, виділення ознак, відновлення зображень та геометричні перетворення.
Ця бібліотека інтегрована з іншими науковими обчислювальними бібліотеками, що дозволяє користувачам легко маніпулювати зображеннями та покращувати їх для різних задач, починаючи від простих операцій, таких як зміна розміру, і закінчуючи складними завданнями, наприклад розпізнавання об’єктів або відновлення зображень.
SimpleITK
SimpleITK є спрощеною версією бібліотеки ITK (Insight Toolkit), яка є кросплатформеною бібліотекою з відкритим вихідним кодом для аналізу зображень. SimpleITK підтримує читання та запис зображень у понад 20 різних форматах.
Він сумісний з різними мовами програмування, включаючи R, Java, Ruby, Lua, C++ та C#, окрім Python. Бібліотека надає широкий спектр функцій для обробки зображень.
SimpleITK має потужну підтримку 2D, 3D, 4D та 5D зображень, а також паралельну обробку для прискорення виконання операцій.
SciPy
SciPy є аналогом популярної бібліотеки числового аналізу NumPy. SciPy використовується для наукових обчислень, тоді як NumPy – для числових обчислень. Оскільки SciPy використовує NumPy під капотом, вона є дуже швидкою та ефективною.
Бібліотека також підтримує роботу з багатовимірними зображеннями та реалізує функції для фільтрації, морфології, вимірювання об’єктів та інтерполяції B-сплайнів.
Pillow
Pillow є продовженням бібліотеки Python Imaging Library (PIL). PIL була стандартною бібліотекою для обробки зображень на Python, але вона підтримувала лише Python2 і була занедбана в 2011 році.
Pillow є відгалуженням цього проекту. Вона підтримує читання зображень різних форматів у своє внутрішнє представлення. Внутрішнє представлення Pillow дозволяє ефективно обробляти зображення та забезпечує досить потужні функції обробки. Бібліотека підтримує швидкий доступ до даних та виконання таких операцій, як обертання та зміна розміру.
pgmagick
pgmagick – це бібліотека Python з відкритим вихідним кодом, розроблена Хідео Хатторі. Вона є оболонкою для GraphicsMagick, набору інструментів і бібліотек, які використовуються для читання, запису та обробки зображень.
Бібліотека підтримує понад 88 різних форматів зображень і надає можливість виконувати різноманітні функції, такі як зміна розміру, підвищення різкості, розмиття, виявлення країв, обертання, соляризація, порівняння зображень та запис на диск.
pgmagick може бути використана для створення GIF, малювання тексту та конвертації зображень між різними форматами файлів.
Заключні слова
Хоча цей список не є вичерпним, перераховані вище бібліотеки є одними з найпопулярніших для обробки зображень. Вони використовуються багатьма людьми та організаціями для створення систем, здатних розпізнавати, сегментувати та аналізувати об’єкти.
Це є надзвичайно корисним у сферах штучного інтелекту та робототехніки. Крім бібліотек, ви також можете скористатися API для аналізу зображень.