As a group, we readily acknowledge that our project is not perfect. With more time and more education, we think the following subjects can be improved upon first.
Currently our algorithm supports only putting 96 bits into a relatively large imaged. As mentioned before, with our encoding process, we must change 16 DCT coefficients to encode 1 bit. When we do try to encode more than 96 bits into an image, the changes we make to the DCT domain are too visible in the spatial domain. With more research, we would believe we can come up with a method to fit more bits into the image.
Each letter that we hide in to the image requires 6 bits. Furthermore, if just one of those 6 bits is decode incorrectly, than the entire letter becomes encoded incorrectly. If we do find a way to increase our bandwidth, we think it would be very beneficial to develop some sort of error correcting code.
We never really took advantage of the probability and statistics in our encoding algorithm. When we encoding data, all we did was pick a 16 coefficient frequency band in which to hide our bits. We would change an entire row to value of "1" if we wanted to decode a 1, or we woudl not change the entire row if we wanted to decode a 0. In the end, our "code" is not hard to break as long as you know the frequency band where we hid the data. With a little more research into statistics, we hope to put the data in more random places instead of just given rows or columns in a band.
We never took advantage of probability and statistics in our decoding algorithm, either. We rationalized that if we look at the DCT coefficients along a row, then we have encoded a “0” if the value of the coefficients are roughly similar in value to the coefficients that come before and after it. Similarly, we know we have encoded a “1” if the value of the coefficients are significantly smaller in value to the coefficients that come before and after it. However, in our research we learned, that the DCT of an image often follows a Gaussian curve: low frequencies have the highest value, and the magnitudes slowly decrease as frequencies get higher. We strongly believe that with a greater understanding of probability, we can take advantage of this in the decoding process.
A project is really only as good as its applications. We argue that if there is no real world use for your research, then there really is no real use for your research. We believe that if our algorithm is perfected, it can be used by humanity in many ways.
Espionage is definitely one of the more “fun” applications from our perspective, and in many ways it is the inspiration behind the project. We envision that the US government will be able to covertly communicate to agents stationed in different countries by buying advertisements in the newspapers of those countries. Agents can than look for these advertisements decode the hidden message from the government. HOW COOL!!
A very real application of this process of hiding data into a printed image can be found in identification documents such as passports and driver’s licenses. We suggest, that ones passport or driver’s license number be encoded into his or her image on the document. After doing this, you could check the authenticity of the document by making sure the encoded number matches the number on the document. If the numbers do not match up, you know someone has replaced the image and the document is in fact a forgery. WOW!
Another interesting application of data hiding with printing is known as captioning. Captioning is really exactly what one would expect it to be: one can hide information about the picture such as the author or the date created within the image itself. If the process of encoding and decoding becomes much faster, captioning can be very useful in cataloguing or organizing pictures. NEAT!
The United States Postal Service was looking at a way to embed routing information in stamps. This process would have purely aesthetic appeal because the same data can be (and is) hidden in barcodes. The USPS has terminated this project for a later date. AWWW!