Skip to content

BishoySedra/Image_Encryption_Compression

Repository files navigation

Image_Encryption_Compression

Image_Encryption_Compression is a project developed as part of an algorithms academic course.

Project Overview

This project focuses on implementing image encryption and compression algorithms using LFSR for encryption and Huffman coding for compression. It provides a platform for experimenting with these techniques to enhance image security and reduce file size.

Problem Definition

Image Encryption

Image encryption is the process of encoding an image in such a way that only authorized persons can access it. This is usually done by using a key (i.e., password). Anyone knowing this password can get the original image back, but another password won't work. For example, you could post an encrypted image on the web, but only friends who have the password (and your program) can see the original. Here, a simple algorithm called Linear Feedback Shift Register (LFSR) is used for this purpose.

Image Compression

Image compression is a type of data compression applied to digital images to reduce their cost for storage or transmission. One of the common data compression methods is Huffman Coding. Its basic idea is that instead of storing each colour channel as an 8-bit value, it stores the more frequently occurring colour values using fewer bits and less frequently occurring colour values using more bits.

For a detailed description of the project, you can refer to the Project Description Document.

Launch Instructions

To successfully launch the project, follow these steps:

  1. Open the .sln file in your preferred IDE or text editor.

  2. Navigate to the ImageOperations.cs file and update all string variables with valid paths to ensure the project runs correctly without problems.

  3. Press CTRL + F5 to run the project. This will compile and execute the application.

Test Cases

For testing the image encryption and compression algorithms, you can download sample test cases and complete test cases from the following links:

Image Comparison Application

To test the identicality of the two images, you can use the following application:

Open-Source Priority Queue Code

For an open-source implementation of a priority queue, you can refer to the following link:

Priority Queue Open-Source Code