EE123: Digital Signal Processing


Spring, 2016

NEW: Spring 2016 Project videos page Here

Project information

The class project aim is to give the student a practical design experience in using the material covered in the class and the labs for implementing a system which which in its core uses digital signal processing to do something interesting.


It is recommended that you work in groups. Groups of up to 3 are allowed. A larger group will need special permission. Please assign yourself to a group on bcourses.


  • Find find partners and join a group. Submit 2 paragraph project proposal on bcourses by Friday 04/1/2016. The project proposal should indicate if you are doing the preferred project or another. It should have a rough outline of what you're thinking to accomplish.

  • Project presentations will be during dead week.


  • Software (Python) implementation of the system

  • Demo during the project presentation

  • Poster or a few slides describing the system, design consideration and solutions.

Project Ideas:

The project proposals should ideally be using the radios, SDR's and interfaces you got. If you would like to do something else, it should be very relevant to the class.

Preferred Project

The preferred project is to implement an image communication system. Information about the project is listed below. Even though it is the default one, it is a really cool one, which will allow you to send and receive images using your radios.

Other project ideas:

  • Gesture recognition using sound – doppler and sonar

  • Implementation / Invention of ANY useful ham protocol

  • Phased array rtl-receiver implementation of passive radar or direction detection

  • Weak signal communication using radios and SDR

It is recommended that you talk to me or the TA's if you plan to do one of these.

Image Communication

The project is an open competition in which the winning team will get to keep their radios and interfaces.


Your task in the project will be to send the best quallity image in 75 seconds.

  • There are no general limits on the technique you choose to transmit. For example it could be analog or digital. We recommend that you leverage Lab6 for your project, but you don't have to. There are a few exeptions though:

    • You can not use existing implementations of compression algorithms.

    • You can not use existing implementations of communication techniques.

    • You can not implement the Martin M1 SSTV protocol (Project for 2013 and 2012), but you can implement any other!

You can use:

    • Existing implementations of entropy coding compression: Zip, gzip, huffman coding

    • Existing implementations of error correcting codes


  • You have 75 seconds for pure data communication, if you use afsk1200 with no overhead, that's 11250 bytes total. If we assum overhead of 1/3 of the communication that leaves 7500 bytes. With 24 bits/pixel that is about 2500 color pixel you could transmit using lab6 material. This is the minimum quallity we will accept, and you can only improve on that.

  • For your demo, you will be given two images, a natural image and a cartoon image. The images could be of arbitrary size, but no bigger than 800x1200 (H/W). The images will be chosen on the day of the project and presented to the competitors only on that day on a usb key.

  • The file names will be im1.bmp and im2.bmp. Your code should be able to read them onece you copied to the appropriate directory

  • The receiver should produce an image of the exact same size as the one transmitted (not neccesarily the same quality though)

  • We will provide example images on this page for you to practice on

  • An image needs to be displayed no later than 2 minutes after data is received, any extra minute, you will lose a rank (in the ranked ordered list)

  • Data transmission must start no later than 2 minutes after the program starts, any extra minute, you will lose a rank (in the ranked ordered list)

What you could work on (partial list…)

  • Improving the rate of communication (factor of 2 is quite achievable, and faster than that is possible but difficult)

  • Image compression / data reduction image downsampling preprocessing

  • Post processing to improve quallity

  • Error mitigation and improving reliability of modulation/ detection


  • For each of the images below, you should have a result of a transmission and the resulting PSNR that you got. This should be ready at the time of the presentation. In addition, you will submit the resultoing images on bcourses.

  • At the demo, We will ask you to show us two transmissions that we will pick out of the list below. In addition, we will provide you with one or two new image (TIFF format) to demo.

The image quallity evaluation will be done by

  • Qualitative assesment 1-10 by the staff of the class.

  • Peak Signal-to-noise Ration measure (PSNR) which is defined as:


, where MAX is the maximum possible image pixel value (255 for 8bits) and MSE is the mean-square error, or mathrm{MSE}=frac{1}{mn}sum_{i=0}^{m-1}sum_{j=0}^{n-1}[I_1(i,j)-I_2(i,j)]^2 (In the case of color images, you also sum over color).

* Make sure that the radio transmit timeout setting (TOT Menu + 9) is set to at least 90 secons.


  • Here's a link to explenation how Jpeg works: Link

  • Here's how to read an image in python:

from scipy import misc
im = misc.imread('calBlue.tiff')

Example Images: Right click and save to download

Example of downsampled images

These are the same images, downsampled to 2500pixels and upsampled back - this would be the minimum accepted quallity without compression, improvement in communication and post processing

-- Miki