Issue 2


Before determining how to hide data in the frequency domain we needed to determine where to hide it. In order to due this we balanced two main findings.

Visual Considerations

Our first finding dealt with the way a human eye looks at images. For our project we sought to encode as much data as we could into an image with the spatial domain of the picture being affected at all. To do this we researched the human visual system (HVS) and found that the eye cannot detect frequencies that are on either axis of the frequency domain. The graph below is a plot of HVS applied to the discrete cosine transform. frequencies near the axis have high magnitudes, showing that they can be changed with little effect to the image. This led to our conclusion that we needed to encode our message near to and parallel to the axis.

Printing Considerations

Our second study involved the changes that occur to images that go through the printing and scanning process. We found that this process attenuates the high frequency portions of our image. This meant that changing the coefficients of higher frequencies would we irrecoverable as these coefficients would get wiped out in the process We also found that changing very low frequencies distorted our image significantly. The reason for this is that the magnitudes of the low frequency coefficients are very large. We determined that changing middle-range frequencies would be optimal for extracting code without a noticeable distortion to the image.

Algorithm

Balancing these two factors, we decided to hide data into ‘bands’ or ‘blocks or coefficients that were both close and parallel to either axis and in the 25-40% range of the frequencies of our image.