ELEC 486/586: Multiresolution Signal and Geometry Processing (With C++)

NOTE: Please be sure to use the "refresh" button in your web browser to ensure that you are viewing the most recent version of this web document.


Table of Contents


What is the Course About?

The course consists of four main components:

  1. multirate signal processing and applications (signal processing involving multiple sampling rates)
  2. subdivision surfaces, subdivision wavelets, and applications (multirate signal processing generalized to geometric objects)
  3. wavelet systems and applications (another perspective on multirate systems)
  4. C++ programming (classes, templates, generic programming), including industry-standard libraries such as the Open Graphics Library (OpenGL) and Computational Geometry Algorithms Library (CGAL)

The material covered in this course has applications in many diverse areas, including (but not limited to):

Subdivision surfaces are essentially multirate signal processing concepts generalized to geometric objects. If you want some basic idea of what subdivision surfaces are and how they can be used, the videos below might prove enlightening.


Demonstrations

Are you wondering what application programs you will be able to write after having taken the course? This section shows some demonstrations of programs that students need to write for assignments in the course.

The following video gives a brief demonstration of the triMeshView application program:

The following video gives a brief demonstration of the simple3 application program:

Accessing Course Materials

Some of the downloadable course materials associated with this web page may be stored in a private (i.e., secure/protected) area. Two levels of security are imposed on this area:

  1. First, this area is password protected.
  2. Second, this area is only accessible from machines on the university campus network.

In order to access the private area, you will need to know the appropriate username and password to use (for the web server). If you are taking this course, you should know the correct username and password (which were announced during the first lecture). Note that this username and password are not the ones for your Netlink/faculty/departmental account. If you would like to access the private area from outside the university campus network, this can be accomplished by using a proxy server.

Instructor

Michael Adams
E-Mail: mdadams (append "@ece.uvic.ca" for the complete address)
Office: EOW 311

For more sordid details about the instructor look here.

Course Outline

The course outline is distributed in hardcopy form during the first lecture. The course outline is also available via the following link:

Office Hours

My office hours will be posted here as determined sometime during the first few lectures.

Since I also teach ELEC 260 this term, I can often be found in my office either just after or just before my ELEC 260 office hours if you would like to try to meet with me then. My current office hours for ELEC 260 can be found here.

Important Dates (Submission Deadlines)

The following submission deadlines have been announced for (regular and programming) assignments and the project:

Coursepack

The coursepack is a required reference for the course and consists of two documents:

  1. the textbook for the course (referred to as the "coursepack textbook")
  2. the lecture slides for the course
The coursepack is available from the University Bookstore.

The following documents relate to the coursepack:

Signal Processing Library (SPL)

The following documents relate to the Signal Processing Library (SPL):

Datasets

Several images, audio signals, and polygon meshes are provided below for use in the course. Some of these are needed for assignments, while others are not used in any assignments, but may be useful for the course project.

The following images are available:

The following audio signals are available:

The following polygon meshes are available:

Exercises

The exercises in this section are simply for extra practice. They are not to be submitted for marking.

The following programming exercises are available:

Assignments

Note: The "R" series of assignments (e.g., R1, R2, R3, and so on) are regular (i.e., non-programming) assignments, while the "P" series of assignments (e.g., P1, P2, P3, and so on) are programming assignments.

Regular Assignments (i.e., "R" Series Assignments)

The following downloads are available for regular assignments:

The following solutions are available for regular assignments:

Programming Assignments (i.e., "P" Series Assignments)

The following downloads are available for programming assignments:

Since there is no one correct solution to the programming assignment problems, solutions to the programming assignments are not posted.

Course Feedback Questionnaire

The following download is available for the course feedback questionnaire:

Project

The project is a component of the course only for students who are registered in ELEC 586. Students who are registered in ELEC 486 do not do a project!

The following handouts are available for the project:

Final Exam

Information about the final exam will be made available here later in the term. Stay tuned.

Feedback on Course: Concerns, Complaints, and Compliments

Feedback on the course and teaching is always most welcome! The instructor will never hold any of your comments against you, but please be constructive in your criticism.

Several options are available for providing feedback. You can provide feedback through:

Additional References

C++ Programming Language

  1. P. Deitel and H. Deitel, C++ How to Program, Eighth Edition, Prentice Hall, 2011. Link to e-book accessible from UVic Network only. Link to e-book accessible via UVic Library.
  2. M. Gregoire, N. A. Solter, S. J. Kleper, Professional C++, Second Edition, Wrox, 2011. Link to e-book accessible from UVic Network only. Link to e-book accessible via UVic Library.
  3. S. Prata. C++ Primer Plus, Sixth Edition, Addison-Wesley Professional, 2011. Link to e-book accessible from UVic Network only. Link to e-book accessible from UVic Library.
  4. The cplusplus.com website.
  5. C. Morano. An Introduction to the Standard Template Library (STL), Part 1.
  6. C. Morano. An Introduction to the Standard Template Library (STL), Part 2.

Computational Geometry Algorithms Library (CGAL)

  1. CGAL Home Page
  2. CGAL User and Reference Manual: All Parts, Release 3.6.1, 2010-06-29. This document is for the reading assignment on CGAL.
  3. CGAL User and Reference Manual: All Parts, Release 3.7, 2010-10-14.
  4. A Tutorial on CGAL Polyhedron for Subdivision Algorithms.

Open Graphics Library (OpenGL)

  1. OpenGL Home Page
  2. The OpenGL Graphics System, A Specification, Version 4.1
  3. The OpenGL Utility Toolkit (GLUT) Programming Interface, Version 3
  4. OpenGL 4.1 API Quick Reference Card.
  5. D. Shreiner, E. Angel, and V. Shreiner. An Interactive Introduction To OpenGL Programming, SIGGRAPH, 2004.
  6. OpenGL Transformation Demonstrations (from here). matrixModelView.zip, matrixModelView.exe, matrixProjection.zip, and matrixProjection.exe

Boost Library

  1. Boost Home Page

Wavelets

Some good books related to wavelets include:

  1. M. Vetterli and J. Kovacevic, Wavelets and Subband Coding, Prentice Hall, Upper Saddle River, NJ, USA, 1995
  2. S. Mallat, A Wavelet Tour of Signal Processing, Academic Press, San Diego, CA, USA, 1999.
  3. G. Strang and T. Nguyen, Wavelets and Filter Banks, Wellesley-Cambridge Press, Wellesley, MA, USA, 1996.
  4. C. S. Burrus, R. A. Gopinath, and H. Guo, Introduction to Wavelets and Wavelet Transforms: A Primer, Prentice Hall, Upper Saddle River, NJ, USA, 1998.
  5. P. P. Vaidyanathan, Multirate Systems and Filter Banks, Prentice Hall, Upper Saddle River, NJ, USA, 1993.
  6. I. Daubechies, Ten Lectures on Wavelets, SIAM, Philadelphia, PA, USA, 1992.
  7. E. J. Stollnitz, T. D. DeRose, and D. H. Salesin, Wavelets for Computer Graphics, Morgan Kaufmann, San Francisco, CA, USA, 1996.
Some web site related to wavelets include:

Some other potentially useful web sites include:

Other Fun Stuff