数字图像处理
Digital Image Processing
(本硕贯通课程,MATH6420P)
(Autumn-Winter 2021)
Graphics&Geometric Computing Laboratory
University of Science and Technology of China
Announcements General Description Course Goals Topics Texts Grading
Syllabus Assignments Requirements on Assignments Professional Conduct Resources
Time | 每周二晚19:00-- |
Venue | 东区5407 |
Instructor | |
Credit | 4 |
Prerequisite | 编程(C++或Matlab),微积分,线性代数 |
Webpage | http://staff.ustc.edu.cn/~lgliu/Courses/DIP_2021_autumn-winter/default.htm |
Image processing is a method to convert an image into digital form and perform some operations on it, in order to get an enhanced image or to extract some useful information from it. It is a type of signal dispensation in which input is image, like video frame or photograph and output may be image or characteristics associated with that image. Usually Image Processing system includes treating images as two dimensional signals while applying already set signal processing methods to them. It is among rapidly growing technologies today, with its applications in various aspects of a business. Image Processing forms core research area within engineering and computer science disciplines too. Prerequisite: C++/Matlab, Calculus, Linear Algebra
|
This course is to teach students to learn image processing including image sampling and quantization, color, point operations, segmentation, morphological image processing, linear image filtering and correlation, image transforms, eigenimages, multiresolution image processing, noise reduction and restoration, feature extraction and recognition tasks, image registration. Emphasis is on the general principles of image processing. Students learn to apply material by implementing and investigating image processing algorithms in Matlab and optionally on Android mobile devices.
This course provides a
comprehensive introduction to image processing, including their
design, analysis, and implementation. Topics include:
·Image
data structure
·Edge
detection
·Image
restoration
·Fourier
analysis
·Image
compression
·Multiresolution
analysis
·Image
warping and morphing
·Image
segmentation
·Image
understanding
·Sparse
representation and low rank
·Data-driven
methods
References:
Other researchers' courses
Readings:
Various
journal papers, conference papers, or WWW materials as appropriate.
Credit toward the semester grade will be allocated to each of the components as indicated in the following table.
Homework | 70% |
Final Project | 30% |
Note: No final examination will be held in the end of this course. Programming projects and literature survey report are both required. More information will be provided in the class.
课程PPT可在睿客网下载:课程相关资料下载
Low level image processing
01
Introduction
02
Image as points
Statistics based processing
03
Manifold learning
04
Image as function
Fitting and warping
05
Gradient based processing
06
Partial differential equations (PDE)
07
Meshes and barycentric coordinates
08
Vectorization
09
Content aware image retargeting
10
Fourier analysis and processing
11
Convolution
12
Filtering
13
Image pyramids
14
Image denoising
15
High dynamic range images
16
Transposed convolution
17
Image deblurring
18
Image restoration
19
Image morphing
20
Image as matrix
Low rank optimization
21
Matrix factorization
22
Image as graph
Graph cut
23
Image as MRF
Texture synthesis
High level image processing
24
Features
Feature descriptors
25
Photography
Camera
26
Depth and defocus
27
Multi-view geometry
28
Panoramas
29
Light field
30
Image based lighting
31
Analysis and understanding
Introduction
32
Image formation
33
Edge detection
34
Segmentation
35
Matting
36
Object recognition
37
Deep learning
38
Deep neural networks
39
Convolution neural networks
40
Semantic segmentation
41
View morphing
42
Image synthesis
43
Fundamentals
Mathematical theory of deep learning
44
Mathematical models of AI
45
Optimization algorithms
46
Internet Imaging
Introduction
47
Super resolution
48
Scene completion
49
Image2GPS
50
Others
51
Video processing
Optical flow
52
Motion magnification
53
Colorization
54
Video texture
55
Video stabilization
56
Photo quality
Assessment
57
Photo composition optimization
58
Aesthetic evaluation
59
Image quality assessment
60
Summary
All students are expected to study the relevant portions of the course to see if some open problems can be solved after each class.
All programming for this course will be done in C++ according to the coding styles. We will compile and test programs on MS Visual Studio C++ 2012+ under Windows. It is the responsibility of the student to submit a program that will successfully compile and execute on the specified platform.
A document about your programming assignment is also required according to the Computer Program Documentation Standards.
The final literature survey should be written professionally by summarizing a series of related papers about some topic you like, not only several papers.
Assignment Submission
What constitutes Creativity ?
Creativity is any substantial improvement beyond the basic solution - it can be
applied to any part of the project. For example, the following are relevant in
most cases :
User Interaction
̶
It would be nice to present the user
with options to either test the program using internal tests or an
interactive interface
̶
Work around limitations in the
program. For example, if the program asks for lines of input and quits when
it sees "X", invent a special syntax (called an escape sequence) to allow
the user to type in "X" without the program exiting. Hypothetically, if the
user enters $X the program interprets it as X, if the user enters $$ the
program interprets it as $ and if the user enters X the program exits.
Visualization
̶
A representation of how data is
actually being stored in the data structure, by specific position and value
(this would even help greatly with debugging) - this could be accomplished
with specialized data access routines for output formatting
Testing
̶
Simulating real-world conditions for
input by making some assumptions about the distribution of operations
performed and the rate of operations, then simulating using random number
generators
̶
Intensively testing creation, usage
and destruction of the data structure to prove there are no memory leaks
̶
Exhaustive automatic testing - go
through many (or every) possible scenarios for the data structure (up to
some time limit). For example, assign "add" and "remove" to a binary
variable - then generate all possible strings of operations - test the
structure for each case, and test the results automatically in your main
program to make sure they are what was expected.
̶
Develop a syntax for file-based
testing and use this as an option - eg. "enter X" and "retrieve"
Efficiency
̶
Minimize the number of allocations of
memory blocks by reusing deleted blocks
Ask yourself these questions ...
̶
How can I make the interface more
natural ?
̶
How can I make the program run faster
?
̶
How can I use less memory/disk space ?
̶
Have I thoroughly tested my program ?
Will my program survive real-world tests ? Will my program survive
worst-case scenario tests ?
As a
student in our class, you are expected to conduct yourself in a professional
manner.
Limited Collaboration Policy.
Unless otherwise indicated, any homework assignment given in this class will be an individual assignment. The work you submit is to
reflect the knowledge, understanding, and skill that you have attained as an
individual. However, the instructor does want to encourage the development of a
community of scholars who are actively engaged in discussion of the ideas
related to this course. With this in mind, you are allowed to discuss solutions
of the homework and programming problems with other students if done so
according to the following guidelines:
You may discuss ideas for homework and programming assignments with your classmates. However, you cannot collaborate on writing the solution or the program code. That is, you can talk about the problems and ideas for solving them, but you cannot write things down with anyone else. You are, of course, prohibited from copying or seeing another student's written solution, and you are not allowed to show your work to anyone else.
You should accept help with care. If you work too closely with another student, you might mislead yourself into believing that you understand the concepts and techniques better than you actually do. Don't forget that the instructor has office hours and can probably give you hints or suggestions to get you started.
You should give help with care. Do not help anyone too much. When you have solved a problem, it is tempting to just tell other students how you solved it. Instead, try to allow them to come to the solution on their own. Maybe give them a hint to help them get "over a hump." Remember that helping someone too much will hurt them in the long term if they can't work through problems on the exams by themselves. So avoid the temptation to do so. If you can't help other students without giving away the whole solution, direct them to see the instructor (who may or may not have a way to "edge" them toward the solution).
You are not obligated to help anyone. If you feel uncomfortable helping another student for any reason, please direct them to see the instructor.
Computer Program Documentation Standards
Image processing:
Advices on Researches:
Useful coding related sites on the internet:
Send any comments or
suggestions to Prof. Ligang Liu (lgliu@ustc.edu.cn)
Copyright © 2021, Ligang Liu