EE123: Digital Signal Processing


Spring, 2018

Congratulations to the winners of the 2018 competition!

First place

With a PSNR of 26.16 dB, we have team AHH with members Aviral Pandey, Hersh Sanghvi, and Harrison Zheng. They were able to losslessly transmit the EE123 Rocks! image in only 8 seconds! They boosted the data capacity of their system to over 20 kB by increasing the modulation frequencies to 1.8 kHz and 3 kHz using a baud rate of 2.4 kHz. Here is their transmitted image. Compression was done by applying quantization and thresholding, as needed, to the DWT coefficients, then compressing with LZMA. Here is their natural image result:

Second place

With a natural image PSNR of 26.06 dB, is Nikhil Shinde, Olivia Hsu, and Kevin Chen. They increased the baud rate to 1.6 kHz, and removed unneeded information from their packets and increased the info field size to 315 bytes. Their compression was done using quantization and thresholding of DWT coefficients combined with LZMA.

Third place

Team Zesty Alsa, with members Celine Veys, Rafael Calleja, and Sukrit Arora. They achieved a natural image PSNR of 22.14 dB. They modified the AFSK frequencies to be 1.2 kHz and 2.4 kHz, then upped the baud to 1.6 kHz and used the default packet structure. Their compression approach was to downsample by 2, then convert to YCbCr space and threshold the low energy DWT coefficients. They even implemented their own DWT!

Fourth place

Chufan Liang and Sheng Ding with a natural image PSNR of 21.5 dB. This team used the standard afsk1200 and ax.25 method combined with quantization and thresholding of DWT coefficients to transmit their images.

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 Gradescope by Friday 04/13/2018. 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.

  • There will be weekly 5-10min project progress meetings, Week of the 16th, Week of the 23rd. You will have to sign up for slots with either the TA's or with me.

  • Project presentations will be May 4th.


  • Software (Python) implementation of the system.

  • Demo during the project presentation.

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

  • A 3min video summary of the project and demo.

If you wold like to do a project that is different than the image communication, you will have to talk to me or the TA's and get approval.

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 Lab5 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 lab5 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.tiff and im2.tiff . Your code should be able to read them once 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:

( mathrm{PSNR}=10log_{10}left(frac{mathrm{MAX}^2}{MSE}right) )

, 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