Cmp Sci 4420/5420 -- Digital Image Processing and Computer
Vision
Fall 2024
- 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:
- Image acquisition
- Image processing in spatial domain
- Learn OpenCV
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:
- Computer with an updated operating system (e.g. Windows, Mac, Linux)
- Updated Internet browsers (Google Chrome (required) or Mozilla
Firefox)
- Ability to navigate Canvas (Learning Management System)
- Minimum Processor Speed of 1 GHz or higher recommended.
- 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).
- Reliable and stable internet connection.
- Adobe Reader or alternative PDF reader (free)
- 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:
- I’ll like good participation in the course. Therefore, I am allowing
10% points for participation. To have objectivity, I’ll expect you
to give me a one-minute audio-visual report every week on what you
learned that week. You can also say things about what is going well
with the course and what needs improvement. The comment will come
using a tool called Voice Thread. The use of web cam will allow me
to put a face to your name. You will receive 1 point for submitting
the voice thread every week. At the end of the semester, all of the
points will be aggregated twoards 10% of your grade. Since the class
meets on Monday/Wednesday, I can reasonably expect the comment by
Sunday midnight. I will not accept any late submission on this and
so, please submit this diligently.
- The lectures will cover theoretical aspects of the course. I’ll give
you some idea on the OpenCV library but I’ll expect you to cover
most of the material related to OpenCV on your own. Of course, you
can always ask me questions, or help with debugging the code outside
of class (office hours or otherwise).
- The lecture notes will be available to you in the form of PDF
documents. You can print those and annotate on them during lectures.
You do not need to take too many notes during lectures.
- It will be nice to see some discussions on Canvas regarding the
material discussed in class, or even on new technology that you come
across.
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.
- All the lecture material will be available to you as PDF documents
on the class web page and accessible via Canvas.
- I’ll try my best to record and post all the lectures online,
including the ones that are delivered in person.
- In case of a pivot to completely online, all the material
(lectures/lecture notes) will be made available online prior to the
beginning of class time.
- All the assignments will be available online. I’ll ask you to
explain your code to me for some of the projects via zoom.
- If I am unable to come to class due to sickness or emergency, I’ll
inform you before the beginning of class; possibly with enough
notice that you do not have to make a special trip to campus just
for the class. Please keep a watch on your email and pay attention
to announcements on Canvas.
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