Проекты компьютерного зрения
О проекте
Этот репозиторий демонстрирует все кодовые проекты (лаборатории), над которыми работали Мехмет и Жан во время обучения в CSCI437 в семестре осень 2020 года в Школе горного дела Колорадо, охватывающем период с 28 августа 2020 года по 14 декабря 2020 года. Эти лаборатории предоставили всестороннюю платформу для изучения Python, OpenCV и основных концепций компьютерного зрения.
О классе
Я проходил курс Введение в компьютерное зрение (CSCI437) в семестре осень 2020 года. В это время курс преподавали доктор Уильям Хофф и доктор Том Уильямс. CSCI437. Вот официальное описание курса для CSCI437:
(I) Компьютерное зрение — это процесс использования компьютеров для получения изображений, преобразования изображений и извлечения символических описаний из изображений. Этот курс предоставляет введение в эту область, охватывая темы формирования изображений, извлечения признаков, оценки местоположения и распознавания объектов. Будет сделан акцент на проектировании и практических проектах с использованием популярных программных инструментов. Курс будет интересен как тем, кто хочет узнать больше о предмете, так и тем, кто просто хочет использовать техники компьютерной визуализации. Необходимо быть на уровне старшего курса. 3 часа лекций; 3 семестровых часа. Предварительное условие: (MATH201 или MATH334 или EENG311), и, MATH332, и, (CSCI200 или CSCI261).
Благодарности
Существуют Python-скрипты и/или фрагменты кода, предоставленные на занятиях CSCI437, в слайдах или через Canvas. Класс CSCI437 предоставляется в Школе горного дела Колорадо. Эти лаборатории были выполнены с следующими партнерами:
- Жан Дуонг
- Мехмет Йылмаз
Описания лабораторий
Лаборатория 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 инструктирует студентов обнаруживать и вычислять позу цели, состоящей из пяти контрастных концентрических кругов (CCC) на изображении. Задача включает использование 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. К сожалению, требования не были задокументированы, поэтому вам придется выяснить это самостоятельно. Если вы это выясните или застрянете, пожалуйста, сообщите об этом в форму для проблем.