Week 12: Recalibration

Madeline Krajewski

This week, I finished up the debugging of Algorithm 1. A simple shift to the wrong direction caused the desaturation, and an incongruency between the encoding and decoding starting points caused the striation. Here is proof of this success via the decoder:

Huzzah! This success felt wonderful after the weeks of constantly thinking I had completed the process. I think, at this point, I can say the code for the encoder and decoder is done! I continued to add documentation to my currently written functions as well, and I only have the two biggest functions left. With only the ‘fun’ parts left of Algorithm 1 (tasks1 and UI clean up), it’s finally time to turn my attention to Algorithm 2. This one does not work at all how I had thought, and I’m glad to

So, how does this Algorithm work? Basically, we take one (black and white) image and break it into shares. For now, I need to make two shares; the shares will also be the same size as the host image. Both shares also need to be present to reveal the secret image. Here is what the process looks like:

A series of permutations (or “coin tosses”) generate where the data gets stored, and another one chooses which outcome gets passed to the shareholders. I’ve replicated Doug Stinson’s chart here, but I changed some of the phrasing and terms to hopefully better convey what is going on here. I struggled with determining this, and I found this rephrasing helpful for myself.

For those interested in Doug Stinson’s version, I’ve added it here.

Reference: Visual Cryptography and Threshold Schemes” by Doug Stinson

So far, I’ve been working with pixels in the singular context of it being exactly one color. However, pixels generally look similar to this:

This is something I didn’t realize when I first began approaching this project. Since pixels are so small, our eyes cannot perceive these changes. The light coalesces into one unifying color, which is why we perceive a pixel as yellow, or green, or orange. When the colors are all identical, it forms a grayscale version of the shade. Black is (0, 0, 0), and white is (255, 255, 255). I am uncertain quite how the colors come out quite right to form the black and white halves, but my professor has reassured me this is the case, and I have decided to simply trust it and hope to find understanding through doing the project as opposed to knowing up front. I suspect the knowledge of a pixel’s divisions as depicted above will aid me in the future, hence why I share it here. This week, I will complete the UI, implement the progress bar via tasks, and continue to try working out the algorithm on paper.

    1. Tasks are a computer science technique which allows processes to run without locking up the computer’s display. By adding this, I can add a progress bar which updates in real time, as well as a ‘cancel’ option so the user can exit if the process is taking too long or if they decide they dislike the image they chose. ↩︎
    Sources

    “Duck Silhouette” by Mudassar Iqbal from Pixabay

    “Static Noise” by Theodore Palser from PublicDomainPictures.net