Проекти комп'ютерного зору

Репозиторій GitHub проєкту

Про

Цей репозиторій демонструє всі кодувальні проєкти (лаби), над якими працювали Mehmet та Jean, будучи зарахованими на курс CSCI437 під час осіннього семестру 2020 року в Колорадській школі гірничої справи, охоплюючи період з 28 серпня 2020 року по 14 грудня 2020 року. Ці лабораторні роботи забезпечили всебічну платформу для вивчення Python, OpenCV та базових концепцій комп’ютерного зору.

Про курс

Я відвідував Вступ до комп’ютерного зору (CSCI437) під час осіннього семестру 2020 року. У цей час курс викладали д-р Вільям Хофф та д-р Том Вільямс. CSCI437. Ось офіційний опис курсу CSCI437:

(I) Computer vision is the process of using computers to acquire images, transform images, and extract symbolic descriptions from images. This course provides an introduction to this field, covering topics in image formation, feature extraction, location estimation, and object recognition. Design ability and hands-on projects will be emphasized, using popular software tools. The course will be of interest both to those who want to learn more about the subject and to those who just want to use computer imaging techniques. Must be Senior level standing. 3 hours lecture; 3 semester hours. Prerequisite: (MATH201 or MATH334 or EENG311),and,MATH332,and,(CSCI200 or CSCI261).

Подяки

Є Python-скрипти та/або фрагменти коду, які були надані під час лекцій CSCI437, у слайдах або через Canvas. Курс CSCI437 проводиться в Колорадській школі гірничої справи. Ці лабораторні роботи виконувалися з такими партнерами:

  • Jean Duong
  • Mehmet Yilmaz

Опис лабораторних робіт

Лабораторна робота 1

Лабораторна робота 1 зосереджена на основах використання OpenCV з Python. Від учасників очікується написати програму на Python, яка читає відеофайл, проектує чотири точки, що утворюють квадрат, на кожний кадр відео, і імітує віддалення квадрата в простір шляхом поетапного регулювання координати Z кожної точки. Додатково номер кадру має відображатися на кожному кадрі, а фінальне відео з графічними накладеннями потрібно завантажити для оцінювання.

Лабораторна робота 2

Лабораторна робота 2 присвячена перетворенням зображень, зокрема обертанням навколо осей X, Y і Z з використанням конвенції “XYZ фіксовані кути”. Студенти мають обчислити матриці обертання, обчислити однорідні матриці перетворення для поз камер, створити матрицю калібрування і проектувати точки на зображення для формування знайомого об’єкта з використанням функції line з OpenCV. Лабораторна робота підкреслює розуміння геометрії камери та матриць перетворення в комп’ютерному зорі.

Лабораторна робота 3

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

Лабораторна робота 4

Лабораторна робота 4 зосереджена на сегментації кольору з використанням простору кольорів HSV, техніки, що обговорювалася на лекціях за її ефективністю при роботі з кольоровими зображеннями. Студенти повинні виконати операції порогової обробки, щоб сегментувати пікселі знаку стоп з наданих зображень за допомогою програми на Python/OpenCV. Завдання вимагає знайти порогові значення, які найкраще виявляють пікселі знаку стоп, виконати морфологічні операції для очищення результату та подати сегментовані зображення разом з програмою на Python і параметрами порогової та морфологічної обробки, що використовувалися.

Лабораторна робота 5

Лабораторна робота 5 передбачає задачу вставлення нової текстури зображення в конкретну область існуючого зображення так, щоб проєкція виглядала правильно. Цей процес, відомий як заміна площини, вимагає від студентів використовувати проективні перетворення (гомографію) для мапування нового зображення на планарну ділянку існуючого зображення. Лабораторна робота підкреслює практичне застосування гомографії для модифікації вмісту зображення з підтримкою правильної перспективи. Від студентів очікується подати оригінальне зображення, зображення з заміненим текстурою, комбіноване зображення та свою програму на Python як частину звіту.

Лабораторна робота 6

Лабораторна робота 6 інструктує студентів виявляти і обчислювати позу об’єкта, що складається з п’яти контрастних концентричних кіл (CCC) на зображенні. Завдання включає використання OpenCV для виявлення мішеней CCC, правильне впорядкування їх, обчислення пози за допомогою функції solvePnP(), а також накладення координатних осей і пози на зображення. Лабораторна робота підкреслює застосування концепцій, таких як виявлення мішені, оцінка пози та форматування візуального виводу в комп’ютерному зорі.

Лабораторна робота 7

Лабораторна робота 7 зосереджена навколо виявлення та зіставлення ознак SIFT між зображеннями. Мета — ідентифікувати правильні співпадіння ознак SIFT з одного зображення до іншого та проаналізувати точність цих співпадінь. Лабораторна робота включає використання наданого коду на Python і зображень із набору даних, регулювання параметрів алгоритму для оптимізації виявлення співпадінь та обчислення метрик точності та повноти, щоб оцінити продуктивність процесу зіставляння ознак. Студенти повинні подати свою програму на Python та обчислені значення точності і повноти для різних налаштувань параметрів.

Лабораторна робота 8

Лабораторна робота 8 зосереджена на виявленні об’єктів з використанням зіставлення ознак та підгонки афінного перетворення для виявлення й накладення об’єктів з навчального зображення на зображення-запит. Лабораторна робота включає виявлення об’єкта в різних сценаріях, регулювання порогу кількості inlier-співпадінь для зменшення хибних спрацьовувань та обчислення метрик точності, повноти і коректності для оцінки продуктивності системи виявлення об’єктів. Студенти мають модифікувати та запускати наданий код на Python, аналізувати продуктивність системи в різних умовах і подати свої висновки та змінений код.

Лабораторна робота 9

Лабораторна робота 9 полягає в розміщенні точок анотації на об’єкті в навчальному зображенні та автоматичному коректному відображенні цих точок на об’єкті у наступних зображеннях-запитах. Ця лабораторна робота підкреслює вилучення ознак, зіставлення з використанням тесту відношення для усунення неоднозначних співпадінь, підгонку 2D афінного перетворення за допомогою RANSAC для усунення викидів та застосування перетворення для мапування точок анотації з навчального на зображення-запит. Критично важливим завданням є регулювання порогу числа inlier-співпадінь, щоб збалансувати хибні спрацьовування і пропуски, прагнучи до максимальної точності класифікації зображень.

Лабораторна робота 10

Лабораторна робота 10 присвячена використанню перетворення Хафа для знаходження сегментів прямих і виявлення наборів паралельних прямих на зображенні. Вона використовує ймовірнісне перетворення Хафа через функцію cv2.HoughLinesP() OpenCV для виявлення сегментів прямих, представлених кінцевими точками. Лабораторна робота також передбачає ідентифікацію точок сходження (vanishing points) шляхом аналізу векторів напрямку цих сегментів прямих, метою є розуміння орієнтації паралельних ліній у 3D-просторі, як вони з’являються на 2D-площині зображення. Студенти мають обробити тестові зображення для пошуку паралельних сегментів прямих, експериментувати з параметрами для оптимізації виявлення та подати свої результати разом із програмою на Python.

Примітки

  • Для запуску цих скриптів/лабораторних робіт вам знадобляться такі сторонні пакети Python: cv2 & numpy.
  • Деякі з цих лабораторних робіт можуть вимагати використання конкретної версії cv2. На жаль, вимоги не були задокументовані, тож вам доведеться з’ясувати це самостійно. Якщо вам вдасться це з’ясувати або ви застрягли, будь ласка, повідомте про це у формі повідомлень про помилки.