5062CEM

Programming and Algorithms 2

Image Steganography

Image Steganography

For this activity, you will need to be using an Integrated Development Environment (IDE). The recommended IDE for this module is JetBrains IntelliJ IDEA for Python and JetBrains CLion for C++. You can follow instructions at the following page to set up your development environment:

Setting up your Development Environment

Before you begin to attempt this task, you will need to build the OpenCV libraries to work on your machine. A tutorial has been provided to guide you through the process of building the libraries from source, and can be accessed at the following page:

Compiling the OpenCV Libraries in WSL

The guide assumes you have the Windows Subsystem for Linux (WSL) installed on your Windows device. If you do not, then another tutorial has been provided to guide you through the process of setting up WSL on your machine. You can access the tutorial at the following page. Alternatively, if you have Linux installed on your machine through either a virtual machine or natively, then you can follow the first tutorial and ignore any references to WSL etc.

The tasks for this module are part of the first coursework for this module. As such, the module team are unable to provide support directly with your code solutions. However, we can assist you with theory.

For this task, you will want to be converting a string into it's binary form. You may want to begin by using a static string such as Hello 5062CEM! and then build upon your solution to convert text that has been inserted by the end user.

You will want to consider using functions to implement your solution and the function should return the binary equivalent of the string that has been passed into it.

For this task, you will want to convert an RGB value, i.e. (255, 245, 0), into its binary equivalent. You may want to begin this task by using a static RGB value, such as the one provided earlier. You can then build upon the task by using the OpenCV library to load an image, and convert the first few pixels RGB/BGR values into it's binary form.

You will want to consider using functions to implement your solution, and the function should return the binary form for an individual pixel.

For this task, you will want to take your solutions for task one and task two and provide a function that can convert the least significant bit of the RGB binary strings, to store the binary-form of the string.

For example, consider we have the string Hello and it's binary form is 01001000 01100101 01101100 01101100 01101111. Each individual bit of our binary string, must be insert into the image. To achieve this, we want to use the Least Significant Bit methodology that has been taught in my lectures.

If you are struggling with this lab activity, you may want to get some additional support. You can speak to the module leader/team in the room of when the lab week is active, or you can visit the Additional Support page for more information on how you can get extra support.