Проекти комп'ютерного зору
Про
Цей репозиторій демонструє всі кодувальні проекти (лабораторні роботи), над якими працювали Mehmet та Jean під час навчання на CSCI437 в осінньому семестрі 2020 року в Colorado School of Mines, охоплюючи період з 28 серпня 2020 року по 14 грудня 2020 року. Ці лабораторні роботи надали всебічну платформу для вивчення Python, OpenCV та основних концепцій комп’ютерного зору.
Про клас
Я відвідував Вступ до комп’ютерного зору (CSCI437) під час осіннього семестру 2020 року. У цей час клас викладали доктор Вільям Хофф та доктор Том Вільямс. CSCI437. Ось офіційний опис курсу для CSCI437:
(I) Комп'ютерний зір - це процес використання комп'ютерів для отримання зображень, перетворення зображень та витягування символічних описів з зображень. Цей курс надає вступ до цієї галузі, охоплюючи теми формування зображень, витягування ознак, оцінки місцезнаходження та розпізнавання об'єктів. Буде підкреслено здатність до дизайну та практичні проекти, використовуючи популярні програмні інструменти. Курс буде цікавий як тим, хто хоче дізнатися більше про предмет, так і тим, хто просто хоче використовувати техніки комп'ютерного зображення. Необхідно мати статус старшокурсника. 3 години лекцій; 3 семестрові години. Попередня вимога: (MATH201 або MATH334 або EENG311), і, MATH332, і, (CSCI200 або CSCI261).
Подяки
Є Python-скрипти та/або сегменти коду, які були надані класом CSCI437 під час лекцій, у слайдах або через Canvas. Клас CSCI437 проводиться в Colorado School of Mines. Ці лабораторні роботи виконувалися з наступними партнерами:
- Jean Duong
- Mehmet Yilmaz
Опис лабораторних робіт
Лабораторна робота 1
Лабораторна робота 1 зосереджена на основах використання OpenCV з Python. Учасники повинні написати програму на Python, яка читає відеофайл, проектує чотири точки, що формують квадрат, на кожен кадр відео та імітує віддалення квадрата в глибину, поступово коригуючи координату Z кожної точки. Крім того, номер кадру має відображатися на кожному кадрі, а фінальне відео з графічними накладками має бути завантажено для оцінки.
Лабораторна робота 2
Лабораторна робота 2 стосується перетворень зображень, зокрема зосереджена на обертах навколо осей X, Y та Z, використовуючи конвенцію “фіксовані кути XYZ”. Студенти повинні розрахувати матриці обертання, обчислити однорідні матриці перетворення для поз камер, створити матрицю калібрування та проектувати точки на зображення, щоб сформувати знайомий об’єкт, використовуючи функцію лінії OpenCV. Лабораторна робота підкреслює розуміння геометрії камери та матриць перетворення в комп’ютерному зорі.
Лабораторна робота 3
Лабораторна робота 3 присвячена шаблонному співпадінню, де студенти повинні відстежувати шаблон підзображення через кожен кадр відеофайлу, використовуючи нормалізовану крос-кореляцію. Завдання полягає в тому, щоб дозволити користувачу вибрати шаблон з першого зображення фільму, відстежувати цей шаблон через наступні зображення, малювати прямокутники, щоб вказати місцезнаходження шаблону на кожному зображенні, та створити вихідний відеофайл, щоб показати ці місця. Студентам рекомендується експериментувати з різними шаблонами, щоб зрозуміти, які з них дозволяють найкраще відстеження і чому, а також обговорити оцінки кореляції, спостережувані, коли збіги правильно ідентифіковані.
Лабораторна робота 4
Лабораторна робота 4 зосереджена на сегментації кольору, використовуючи колірний простір HSV, техніку, обговорену на лекціях за її ефективність у обробці кольорових зображень. Студенти повинні застосувати операції порогового значення, щоб сегментувати пікселі знаків зупинки з наданих зображень, використовуючи програму Python/OpenCV. Завдання вимагає знаходження порогових значень, які найкраще виявляють пікселі знаків зупинки, виконання морфологічних операцій для очищення результату та подання сегментованих зображень разом з програмою Python та використаними параметрами порогового значення та морфологічних операцій.
Лабораторна робота 5
Лабораторна робота 5 передбачає завдання вставлення нової текстури зображення в певну область існуючого зображення так, щоб проекція виглядала правильно. Цей процес, відомий як заміна площини, вимагає від студентів використання технік проективного перетворення (гомографії) для відображення нового зображення на площинній області існуючого зображення. Лабораторна робота підкреслює практичне застосування гомографії для модифікації вмісту зображення, зберігаючи правильність перспективи. Студенти повинні подати оригінальне зображення, зображення з заміненою текстурою, комбіноване зображення та свою програму Python як частину подання лабораторної роботи.
Лабораторна робота 6
Лабораторна робота 6 навчає студентів виявляти та обчислювати позу цілі, що складається з п’яти контрастних концентричних кіл (CCCs) на зображенні. Завдання полягає у використанні OpenCV для виявлення цілей CCC, правильному їх упорядкуванні, обчисленні пози за допомогою функції OpenCV solvePnP() та малюванні координатних осей і пози на зображенні. Лабораторна робота підкреслює застосування концепцій, таких як виявлення цілей, оцінка пози та форматування візуального виходу в комп’ютерному зорі.
Лабораторна робота 7
Лабораторна робота 7 зосереджена на виявленні та співпадінні ознак SIFT між зображеннями. Мета полягає в тому, щоб ідентифікувати правильні збіги ознак SIFT з одного зображення на інше та проаналізувати точність цих збігів. Лабораторна робота передбачає використання наданого коду Python та зображень з набору даних, коригування параметрів алгоритму для оптимізації виявлення збігів та обчислення метрик точності та відгуку для оцінки ефективності процесу співпадіння ознак. Студенти повинні подати свою програму Python та обчислені значення точності та відгуку для різних налаштувань параметрів.
Лабораторна робота 8
Лабораторна робота 8 зосереджена на виявленні об’єктів, використовуючи співпадіння ознак та підгонку афінних перетворень для виявлення та накладення об’єктів з навчального зображення на запитуване зображення. Лабораторна робота передбачає виявлення об’єкта в різних сценаріях, коригування порогу кількості збігів для зменшення хибнопозитивних результатів та обчислення метрик точності, відгуку та точності для оцінки ефективності системи виявлення об’єктів. Студенти повинні модифікувати та виконати наданий код Python, проаналізувати ефективність системи в різних умовах та подати свої висновки та модифікований код.
Лабораторна робота 9
Лабораторна робота 9 передбачає розміщення точок анотації на об’єкті в навчальному зображенні та автоматичне правильне відображення цих точок на об’єкті в наступних запитуваних зображеннях. Ця лабораторна робота підкреслює витягування ознак, співпадіння за допомогою тесту співвідношення для усунення неоднозначних збігів, підгонку 2D афінного перетворення за допомогою RANSAC для усунення викидів та застосування перетворення для відображення точок анотації з навчальних зображень на запитувані. Критичним завданням є коригування порогового числа збігів для досягнення балансу між хибнопозитивними та хибнонегативними результатами, прагнучи досягти найвищої точності в правильній класифікації зображень.
Лабораторна робота 10
Лабораторна робота 10 присвячена використанню перетворення Хафа для знаходження сегментів ліній та ідентифікації наборів паралельних ліній в зображенні. Вона використовує ймовірнісне перетворення Хафа через функцію cv2.HoughLinesP() OpenCV для виявлення сегментів ліній, представлених їх кінцевими точками. Лабораторна робота також передбачає ідентифікацію точок зникнення, аналізуючи векторні напрямки цих сегментів ліній, прагнучи зрозуміти орієнтацію паралельних ліній у 3D-просторі, як вони з’являються на 2D-площині зображення. Студенти повинні обробити тестові зображення, щоб знайти паралельні сегменти ліній, експериментувати з параметрами для оптимізації виявлення та подати свої результати разом з програмою Python.
Примітки
- Вам знадобляться наступні сторонні пакети Python для запуску цих скриптів/лабораторних робіт: cv2 та numpy.
- Деякі з цих лабораторних робіт можуть вимагати використання конкретної версії cv2. На жаль, вимоги не були задокументовані, тому вам доведеться розібратися з цим самостійно. Якщо ви це зрозумієте або застрягнете, будь ласка, повідомте про це у формі проблем.