A collection of Python applications and algorithms for multimedia signal processing, covering image manipulation, probability, Huffman coding, and JPEG compression.
Explore the Documentation »
Report Bug
·
Request Feature
Table of Contents
This repository contains Python Multimedia Signals, an academic project developed from scratch for the Codificação de Sinais Multimédia course at ISEL - Instituto Superior de Engenharia de Lisboa.
The primary goal of this project is to implement and analyze multimedia coding algorithms. The repository is divided into four main practical assignments that explore the fundamentals of digital signal processing, from raw image manipulation and probability analysis to advanced source coding techniques like Huffman and JPEG compression.
- Image Processing & Error Correction: Implementation of grayscaling, colormaps, histogram generation, and transmission simulations across a Binary Symmetric Channel with Hamming (7,4) error correction.
- Statistical Signal Analysis: Practical application of Probability concepts, Bayes Theorem, and Joint/Conditional Probabilities on visual data.
- Huffman Coding: Lossless data compression using entropy concepts and Huffman trees, achieving optimal source coding for varying data formats.
- JPEG Compression Pipeline: Full implementation of a lossy compression pipeline, including 8x8 block Discrete Cosine Transform (DCT), quantization matrices, and zigzag scanning.
Note
The images below represent only a small fraction of the outputs generated by this project. The notebooks contain extensive additional tests, theoretical explanations, and varied input examples for each algorithm.
Here are some visual results and outputs generated by the algorithms implemented in the practical assignments:
Example of an image corrupted by transmission noise across a Binary Symmetric Channel (left) and its successful recovery using Hamming Codes (right).
Comparison of JPEG compression with different quality factors.
- Signal Processing Fundamentals: Deepened the understanding of the mathematical foundations behind multimedia signals and their digital representations.
- Data Compression Algorithms: Gained hands-on experience in effective data compression, balancing lossless (Huffman) guarantees and lossy (JPEG) efficiency.
- Statistical Modeling: Consolidated theoretical knowledge on probability and statistical tools applied to practical signal analysis and prediction.
- Algorithm Implementation: Improved programming skills by writing robust and efficient signal processing algorithms using Python and Jupyter Notebooks.
Follow these instructions to set up a local copy of the project on your machine.
- Python 3.8+
- Jupyter Notebook or JupyterLab
- Git
- Clone the repository:
git clone https://github.com/GuilhermeGraca/python-multimedia-signals.git
- Navigate to the project directory:
cd python-multimedia-signals - Start Jupyter Notebook:
jupyter notebook
- Open the desired assignment:
Navigate through the folders and open the corresponding
.ipynbfile to run the code.
You can use the notebooks in this repository to study and test various multimedia coding algorithms. Each folder contains a standalone Jupyter Notebook detailing the theoretical background and the Python implementation for its specific topic.
tp1-image-processing-hamming: Explore colormaps, image statistics, Hamming distance, and error correction.tp2-probability-bayes: Run statistical analysis and conditional probability tests on image signals.tp3-huffman-coding: Test source coding and optimal data compression algorithms with Huffman trees.tp4-jpeg-compression: Compress and decompress images using the DCT and quantization steps of the JPEG standard.
Guilherme Graça - LinkedIn - GitHub
Project Link: https://github.com/GuilhermeGraca/python-multimedia-signals
- ISEL - Instituto Superior de Engenharia de Lisboa for providing the academic context and resources.
- The professors and staff of the Codificação de Sinais Multimédia course for their guidance and support.






