A single Parasite pixel is mapped to 8 Host pixel with a single bit for R, G, and B stored in each Host pixel. The extract method reverses this and combines the last bit of each pixel's R, G, and B, values together to rebuild the Parasite pixel.
4/13/2019 My algorithm to encode images is complete and includes a couple options to increase or decrease the security by spreading out the bits more or less. I worked on this for a few days and the code is relatively short but there were a lot of places to slip up.
This picture shows the results of the top line (the parasite) being encoded into 8 pixels of the host. The second line is the first host pixel before modification and the third is the first host pixel after modification and so on until each of the 8 bit numbers of the parasite are encoded into host pixels.
This picture shows the results of the top line (the parasite) being encoded into 8 pixels of the host. The second line is the first host pixel before modification and the third is the first host pixel after modification and so on until each of the 8 bit numbers of the parasite are encoded into host pixels.
3/25/2019: The base algorithm works like this:
Create a new bitmap with dimensions of the host image
2 nested loops on the parasite image's columns and rows
get the pixel at the pixelarray's coordinates from the loop variables
combine each individual bit of each color (RGB) with the color byte of the host image.
save new byte with 7 bits of the host and 1 bit of the parasite for each color of each pixel
I know how to handle saving the pixels in an image that has height or width at least 8 times the parasite but I am struggling to modify my algorithm to include images that are 8 times larger. The reason why I'm not sure how to do this yet is it isn't as easy to keep track of where I am in the host image pixels when I am on different rows but in the first case it's simple multiplication by 8.
Create a new bitmap with dimensions of the host image
2 nested loops on the parasite image's columns and rows
get the pixel at the pixelarray's coordinates from the loop variables
combine each individual bit of each color (RGB) with the color byte of the host image.
save new byte with 7 bits of the host and 1 bit of the parasite for each color of each pixel
I know how to handle saving the pixels in an image that has height or width at least 8 times the parasite but I am struggling to modify my algorithm to include images that are 8 times larger. The reason why I'm not sure how to do this yet is it isn't as easy to keep track of where I am in the host image pixels when I am on different rows but in the first case it's simple multiplication by 8.
3/4/2019: This time I've been working the algorithm to hide the images while considering how I'm going to about setting up so that the hidden image can easily be extracted. For instance assuming I wanted to hide 1 bit per color of each pixel I would need 2 pixels and 2/3s of a 3rd pixel to store the red, green, and blue values. So because of that the original image will need to be (over) 8 times as large as the image to hide. With that in mind I needed to consider how to write the algorithm. So obviously I would need to loop through the pixel array of the original image and start storing bits in each of the least significant bits of the original image. I thought through a lot how I needed to write this as I needed to go through each array at different speeds. With the hidden image I needed to move 8 times slower than the original. This stumped me a lot how to go about writing this. My best idea so far is starting with a loop through the original image and grabbing a full pixel of the image to hide at a time.
2/25/2019: I've been working on the app and I have the application choosing the correct files and loading them into their positions and I'm currently debugging the zoom feature that I've recently added. Once I have the zoom solved for the first image I plan to link the zooming of the second image to the zooming of the first, hopefully so that the user can look at the same spot on each picture easily. I can see my zoom refreshing the image when I change zoom levels but I'm hung up somewhere.
Speaking of zooming, I'm also trying to get my control tools to resize when I resize the window. I've figured out how to dynamically move them when the user resizes the window but I haven't figured out how to actually change the size of the tools at the same time. The key might be having everything anchored on all four sides instead of just top/left but we'll see..
Speaking of zooming, I'm also trying to get my control tools to resize when I resize the window. I've figured out how to dynamically move them when the user resizes the window but I haven't figured out how to actually change the size of the tools at the same time. The key might be having everything anchored on all four sides instead of just top/left but we'll see..
2/14/2019: I'm not really sure what to write for blogs but I've done research some research into how steganography is done and the concept seems straightforward at least. I've looked into the language that will fit images into other images, and it's probably C#. I've also looked at some general C# and several examples of steganography in C# as I am rusty. I have a good idea of the tools my app should have and will post a sketch picture shortly.
Timeline chart
|