Applied Computer Vision
|CARNEGIE MELLON UNIVERSITY AFRICA|
04-800
Applied Computer Vision
Elective
Units: 12
Lecture/Lab/Rep hours/week: 4 hours lectures/week
Semester: Spring
Pre-requisites: programming skills
Students are expected to be familiar with programming in at least one programming language, ideally C/C++.
Course description
This course provides students with a solid foundation in the key elements of computer vision, emphasizing the practical application of the underlying theory. It focusses mainly on the techniques required to build robot vision applications but the algorithms can also be applied in other domains such as industrial inspection and video surveillance. A key focus of the course is on effective implementation of solutions to practical computer vision problems in a variety of environments using both bespoke software authored by the students and standard computer vision libraries.
Learning objectives
The course covers optics, sensors, image formation, image acquisition & image representation before proceeding to the essentials of image processing and image filtering. This provides the basis for a treatment of image segmentation, including edge detection, region growing, and boundary detection, the Hough transform, and colour-based segmentation.
Building on this, the course then proceeds to deal with object detection and recognition in 2D, addressing template matching, interest point operators, gradient orientation histograms, the SIFT descriptor, and colour histogram intersection and back-projection.
The problem of recovery of 3D information is then addressed, introducing homogeneous coordinates and transformations, the perspective transformation, camera model, inverse perspective transformation, stereo vision, and epipolar geometry.
The interpretation of visual information in unstructured environments poses many problems. To deal with these, the course then addresses visual attention, clustering, grouping, and segmentation, building on Gestalt principles, before proceeding to deal with object detection, object recognition, and object categorization in both 2D and 3D.
Outcomes
After completing this course, students should be able to:
- Apply their knowledge of image acquisition, image processing, and image analysis to extract the required information from visual images.
- Design, implement, and document appropriate, effective, and efficient software solutions for a variety of real-world computer vision problems.
- Exploit standard computer vision software libraries in the development of these solutions.
Content details
Refer to the Lecture Schedule for information on course delivery, including lectures, labs, assignments, and exercises.
The course will cover the following topics:
- Optics, sensors, image formation
- Image acquisition & image representation
- Image processing and image filtering.
- Point & neighbourhood operations, convolution, Fourier transform
- Geometric operations, morphological operations, blob detection and analysis
- Segmentation: edge detection, region growing, and boundary detection
- Hough transform: line, circle, and generalized transform; extension to codeword features.
- Colour-based segmentation.
- Object detection and recognition in 2D; Template matching.
- Interest point operators: Harris and Difference of Gaussian. Gradient orientation histogram - SIFT descriptor.
- Colour histogram intersection and back-projection.
- 3D vision: Homogeneous coordinates and transformations. Perspective transformation. Camera model and inverse perspective transformation.
- Stereo vision. Epipolar geometry.
- Structured light & RGB-D cameras.
- Optical flow.
- Visual attention. Saliency. Bottom-up and top-down attention.
- Clustering, grouping, and segmentation. Gestalt principles. Clustering algorithms.
- Object recognition in 2D and 3D. Object detection, object recognition, object categorisation. Affordances.
- Haar features. HOG.
- Point cloud methods.
The detailed content for each of these topics follows.
Introduction: The Software Development Life Cycle
- xyz
Formalisms for Representing Algorithms
- xyz
Analysis of Complexity
- xyz
Searching and Sorting Algorithms
- xyz
Abstract Data Types (ADT)
- xyz
Containers, Dictionaries, and Lists
- xyz
Stacks
- xyz
Queues
- xyz
Trees
- xyz
Heaps
- xyz
Graphs
- xyz
Complex Networks
- xyz
Hashing
- xyz
Algorithmic Strategies
- xyz
Analysis of Correctness
- xyz
Computability Theory
- xyz
Lecture Schedule
Refer to the Lecture Schedule for information on course delivery, including lectures, labs, assignments, and exercises.
Faculty
Delivery
Face-to-face.
Student assessment
This course includes several hands-on programming and analysis assignments. Students will program mainly in C/C++. The programming assignments include individual assignments and a team capstone project in teams of 2-3 people. In addition to programming assignments, students will be assigned readings to support the lecture material.
Marks will be awarded as follows.
Seven individual assignments 70%. Final examination 30%.
Software tools
We will use Microsoft Visual C++ Express compiler, version 10.0 (also known as Visual C++ 2010) and CMake running on Windows 7 (64 bit).
Please follow the instructions provided in the Software Development Environment installation guide.
Course texts
David Harel and Yishai Feldman, Algorithmics: The Spirit of Computing, Third Edition.
Alfred V. Aho, Jeffrey D. Ullman, and John E. Hopcroft, Data Structures and Algorithms.
A selection of examples will be taken from Steven Skiena, "The Algorithm Design Manual", Second Edition.
A selection of papers and readings will be provided to complement these required textbooks.
Acknowledgments
This syllabus is based mainly on Course 04-630 Computer Science Principles for Practicing Engineers given by Mel Rosso-Llopart and Anthony J. Lattanze at Carnegie Mellon University, USA, Course CS-CO-412 Algorithms and Data Structures given by David Vernon at Innopolis University, Russia, and Course IT706A Scientific Theory in Informatics given by David Vernon and others at the University of Skövde, Sweden.