Prerequisites
Math 1900, Math 2450, Cmp Sci 2750, and Cmp Sci 3130, or
Graduate standing and consent of instructor.
Textbook
Richard Szeliski. Computer Vision: Algorithms and Applications (2nd ed)
Gonzalez and Woods. Digital Image Processing (4th Ed). Pearson. 2018. (Optional)
You can learn about OpenCV from the web site (there are some tutorials available) or from one of the OpenCV books.
\item The O'Reilly books on OpenCV are available as an electronic resource through the library (requires UM system login).

Welcome

This is a course about computer vision and image processing. You will learn the fundamentals of image processing to understand the algorithms for computer vision. Computer vision is gaining in importance as a technology of choice in a variety of fields ranging from industrial manufacturing to geospatial intelligence and surveillance to self-driving cars. I am excited by endowing the computers with an ability to \emph{see} and make a decision based on what is viewed. I'll like for you to learn about the library \href{https://opencv.org/}{OpenCV} and use it to solve some of the problems in computer vision. I have used OpenCV extensively and can help you with making use of it in both Windows and Linux environments.

Teaching Philosophy

I believe in learning by doing things. Thus, I’ll be assigning a number of projects to solve problems in Computer Vision. I’ll be happy to help any student who gets stuck while working on the project. I am comfortable in working with major platforms such as Windows, Linux, and Mac. However, I have mostly worked in C++. I allow the students to work in a language of their choice (Java/Python/C++) but due to my limited experience, I'll be able to provide low-level help only in C++. You are welcome to stop by my office at any time, or send me a message to meet over zoom to discuss any issue related to class, or even related to your career.

Course Description

This course focuses on image analysis and visual perception. Students will learn data structures and algorithms for image processing, region and texture analysis, image filtering, edge detection, contour following, and image enhancement in both spatial and frequency domain. Other topics may include color processing, coding for storage, retrieval, transmission, and image restoration.

Goals of the course

This is your first course in image processing and computer vision. You will apply calculus, linear algebra, and basic programming skills and data structures to build applications that will enhance (or in some cases smear) an image or video. The overall goals of the course are:

Outcomes

At the end of the course, you are expected to know how to get an image into computer memory and process it using some basic image processing algorithms. You are expected to know the theory behind those algorithms and develop enough skills to program those algorithms from scratch. You are also expected to learn the software library OpenCV to be able to use it for coding and implementation. The course will prepare you to apply your knowledge to manipulate the images to meet a given goal.

Topics

Blended Learning

This is a blended course. It is designed to integrate in-person and online modes of learning to fully engage you with me, course content, and other students to accomplish our course goals supported through in-person and online content and activities and assessments best suited for in-person and online. Each online and in-person component of our course will enrich your learning experience to provide you with opportunities for variation and practice, active learning and interaction with your fellow students.

Time Requirements for Our Blended Course

This is an active, blended class with 1 in-person weekly class meeting complemented by online learning experiences in Canvas in between class meetings. We’ll meet in-person on Monday and I’ll post the lecture for Wednesday online. Our course is a 3-credit hour course and requires 3 hours of your time each week in addition to the time it takes you to read the required materials, watch the videos, and complete the assignments. That means that you need to plan to spend a minimum of 6 hours every week (up to 9-10 hours a week) on activities related to this course. If you would like to explore how the online Canvas activities work, please consult the Online Canvas Overview course in Canvas where you can practice posting to a discussion board, take a practice quiz and more.

Technology Requirements

As a computer science major and a student in a blended course, you are expected to have reliable internet access almost every day. Please reach out to your academic advisor or student success network if you need hardware or access to the Internet. If you have computing problems, it is your responsibility to address these through the ITS Helpdesk or to use campus computing labs. Problems with your computer or other technology issues are not an excuse for delays in meeting expectations and missed deadlines for the course. If you have a problem, get help in solving it immediately from http://www.umsl.edu/technology/support/. At a minimum, you will need the following software/hardware to participate in this course:
  1. Computer with an updated operating system (e.g. Windows, Mac, Linux)
  2. Updated Internet browsers (Google Chrome (required) or Mozilla Firefox)
  3. Ability to navigate Canvas (Learning Management System)
  4. Minimum Processor Speed of 1 GHz or higher recommended.
  5. OpenCV library. If you do not have enough resources to install OpenCV, you will be able to use the installation on a campus machine (possibly, hoare).
  6. Reliable and stable internet connection.
  7. Adobe Reader or alternative PDF reader (free)
  8. A webcam and/or microphone is highly recommended.

How to Succeed in This Course

I truly believe in your success as a student and adapting my instruction to ensure your success. Below you will find several different instructional methods to help me accomplish my goal:

If this is your first blended or online course, it is recommended that you log into Canvas and complete the Online Course Overview listed in your Canvas course list. If you’ve already completed the orientation, you do not have to retake it but you can refer to it for helpful videos and tutorials about the technologies used in this course.

Course Plan for the Unexpected

Please stay informed about university policies, instructions and resources as they relate to the COVID-19 pandemic. It is important to me that you stay on track toward your degree completion. This section presents our course continuity plans for how we will handle situations to avoid disruption to your learning.

Email equirements

All correspondence should be made through your UMSL-provided email. Any unsigned email will go unanswered by me. Please do not send me any attachments without talking to me first.

Attendance

For the in-person lectures, please arrive on time. Also, turn your cell phones to silent during class. I will not be taking attendance but you will be responsible for the material covered in class in case you miss it.

Present in class for the online component of our course is determined by participation in an “academically related activity,” i.e. submission of an assignment, assessment or discussion forum posting. The last day of attendance is the last day a student is academically participating in the blended course whether in-person or online as defined here.

Documentation that a student has logged into the Canvas course site alone is not sufficient by itself to demonstrate academic attendance.

Lack of attendance in-person or submission of work in Canvas may result in an automatic course drop.

Projects

You will be given programming assignments, typically a set of programs every two weeks. Assignments will be due at 11:59pm on the due date. Assignments should be submitted on hoare and must execute properly on hoare for proper credit. You should start working on the project as soon as it gets assigned as some of them may get tricky. If you do not know how to work on a project, see me as soon as possible for help. You can also show me the code working on your machine for full credit but after you have submitted it on hoare prior to deadline.

Grading

The grade will be based on programming assignments and two tests. All tests will be given online and will be open book and open notes. Tests will not be proctored but you will have to take them online during the class period (you can do it from home). Each assignment must be meticulously documented and clearly identify its purpose, author, and date. I will like to read your submitted code; I should not have to figure it out. It will do you good if you peruse the Gnu Coding Standards. When you come to me for help with the code, or when you submit the code, make sure that you follow good indentation practices. If you miss any test or assignment without making prior arrangements, you will have a zero. I will not give any make up tests. The distribution of grades will be as follows:

Participation 10%
Projects 50%
Two tests 20% each

Anyone desiring an EXC grade after October 31 must be passing the course at that point to get EXC.

Failure to hand in any assignment will result in an automatic zero for that assignment. If some student is unable to hand in an assignment by the deadline, he/she must discuss it with me before the deadline. I’ll encourage you to talk to other students regarding homework but you should not collaborate to the extent that two submissions are copies of each other. If you are found copying an assignment (from another student or internet), or if your submission has unreasonable similarity to another submission, you get a zero for that assignment automatically. A second offense will be reported to the university officials and students involved will face serious consequences. I may ask you to come to my office and explain your code to me; in case you are not able to explain the code to my satisfaction, I’ll assign you a zero in that project. I’ll allow you to submit up to two projects over the semester that are seven days beyond the deadline for no penalty. However, you must let me know before the deadline that you are going to be late with submission.

The projects in this class may take up a lot of your time. So, you should start working on those as soon as they are assigned. In the past, students who ask a lot of questions have scored better grades. Do not hesitate to ask a question in class, in my office, or over email, especially if you do not have an idea on how to start working on the project.

Feedback and Grading Timeline

I expect that you will have feedback and grade on your submitted projects within two weeks of submission. I’ll try my best to return the graded tests to you within a week after the test. Under normal circumstances, I’ll update your participation grade within 48 hours of the due date. You can find grade in the Grades button on Canvas. If there is a rubric attached to the assignment, you can click your score to see my personal feedback on the rubric.

Miscellaneous

If you have any disability that requires an accommodation (as per UMSL policy), you must notify me in advance. If you cannot attend the class due to a religious holiday or a university-sanctioned event, please let me know in advance as well. In case you are down with the flu, please stay absent from the class till you recover, and contact me via phone or email. I’ll try my best to make accommodation for you in that case.

We’ll be using the open source software OpenCV for the class. You can use it on hoare or download and install it on your computer.

Exam Dates

Test 1 Oct 14, 2020
Test 2 Dec 09, 2020

There is no final exam.

Other important dates

August 30, 2020 Last day to enroll in the course
September 21, 2020 Last day to drop without receiving a grade
November 16, 2020 Last day to drop the course with instructor approval

Class-related links