Skip to content

About

This was the course project for Digital Image Processing (CS663), in the Autumn Semester of 2024-25, at IIT Bombay

Topics

Resources

Stars

1 star

Watchers

1 watching

Forks

Repository files navigation

Image Compression and Restoration

This repository contains two projects related to image compression techniques:

  1. JPEG Compression Engine: A custom implementation inspired by the JPEG compression algorithm.
  2. Edge-Based Image Compression: An implementation of a research paper that employs edge detection and homogeneous diffusion for image compression.

Click here for the detailed project report summarizing the methods, experiments, and results.


Repository Contents

  • JPEG_compression_engine.ipynb: Implements a JPEG-like compression algorithm.
  • Research_Paper_Implementation.ipynb: Implements edge-based image compression from a research paper (link to paper).
  • CS663_Project_Report.pdf: Comprehensive report detailing methodologies, experiments, and results of both projects.

Features

1. JPEG Compression Engine

Workflow Diagram

  • Techniques Used:
    • Discrete Cosine Transform (DCT): Converts image data from spatial to frequency domain.

$$ C(u, v) = \frac{1}{\sqrt{2N}} \sum_{x=0}^{N-1} \sum_{y=0}^{N-1} I(x, y) \cos \left( \frac{\pi(2x+1)u}{2N} \right) \cos \left( \frac{\pi(2y+1)v}{2N} \right) $$

where:

  • $I(x, y)$ represents the intensity value of the pixel at position $(x, y)$ in the image block.

  • $C(u, v)$ is the DCT coefficient at position $(u, v)$ in the frequency domain.

  • $N$ is the size of the block ($N=8$ in JPEG compression).

  • The $u$ and $v$ indices correspond to frequencies in the horizontal and vertical directions, respectively.

    • Quantization: Reduces precision for compression.

$$ Q(u, v) = \text{round}\left(\frac{C(u, v)}{Q_{\text{table}}(u, v)}\right) $$

where:

  • $C(u, v)$ represents the DCT coefficient at position $(u, v)$,

  • $Q_{\text{table}}(u, v)$ is the corresponding value in the quantization matrix,

  • $Q(u, v)$ is the quantized coefficient.

    • Huffman Encoding: Entropy coding for efficient data representation. Workflow Diagram
  • Objectives:

    • Implement core JPEG compression steps for grayscale images.
    • Evaluate compression with metrics such as Bits Per Pixel (BPP) and Root Mean Squared Error (RMSE).
    • Simulate varying quality factors and plot RMSE vs. BPP curves.
  • Sample Results: RMSE vs BPP Curve Sample Compression

Quality Factor File Size (bytes) Compression Rate Compression Ratio
Original 186368 - -
10 3116.50 59.80 0.017
40 3932.88 47.39 0.021
80 4967.62 37.52 0.027

Table 1: File Size, Compression Rate, and Compression Ratio at different Quality Factors

2. Edge-Based Image Compression

  • Stages:
    • Edge Detection and Mask Generation: Identifies edges for efficient compression.
    • Subsampling: Reduces redundant data storage near edges.
    • Supersampling: Improves reconstruction near edges.
    • Reconstruction: Uses homogeneous diffusion to fill missing data.
  • Sample Results:
    Edge-Based Compression
    Divergence vs Diffusion Time Plot

Installation and Usage

Prerequisites

  • Python 3.8 or above
  • Required libraries:
    • numpy
    • opencv-python
    • scipy
    • matplotlib
    • jupyterlab

Install dependencies using:

pip install numpy opencv-python scipy matplotlib jupyterlab

Execution

Clone the repository:

git clone https://github.com/SRAVAN-IITB/Image-Compression-Algorithms.git
cd Image-Compression-Algorithms

Run the notebooks:

  1. Open JPEG_compression_engine.ipynb or Research_Paper_Implementation.ipynb in Jupyter Lab/Notebook.
  2. Execute cells sequentially to see results and visualizations.

Results and Analysis

JPEG Compression

  • Significant compression achieved with minimal loss in visual quality.
  • Observed inverse exponential decay of RMSE with increasing BPP.

Edge-Based Compression

  • Moderate compression rates with limitations in Peak Signal-to-Noise Ratio (PSNR) for detailed images.
  • For detailed analysis, refer to CS663_Project_Report.pdf.

Contributions

Feel free to contribute by opening issues or submitting pull requests. Feedback is highly appreciated!

Acknowledgments

  • Prof. Ajit Rajwade, Indian Institute of Technology Bombay.
  • Research paper authors for their innovative methods in image compression.
  • Libraries: NumPy, OpenCV, SciPy, and Matplotlib.

License

This project is licensed under the MIT License. See the LICENSE file for details.


About

This was the course project for Digital Image Processing (CS663), in the Autumn Semester of 2024-25, at IIT Bombay

Topics

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages