|
|
Results and ExamplesWe have implemented all the steps of the SSIS system as described in the SSIS Details section. Besides the AES encryption/decryption (which was downloaded from a public domain), the code uses standard MATLAB functions from Image Processing, Communication and Statistics toolboxes. The code is compatible with MATLAB version 6.1, but may work on earlier versions as well. For the examples and figures that follow, we used the script "runtest.m" which runs all steps of the algorithm, displaying intermediate and final results. For more information, please refer to the code section. Example 1First we demonstrate the basic use of the system by hiding a 512-bit random message. We strive for error-free recovery, so we sacrifice capacity and use a very low rate ECC (BCH with message_length/encoded_message_length ratio of 512/48081). After running:
Almost no apparent difference is visible. Results (output of runtest with Adaptive Wiener filter as the restoration filter): MSG_LENGTH : 512 As can be seen, the relatively high embedded signal BER is successfully compensated by the choice of an appropriate ECC. To demonstrate spreading the signal energy, following is the 2D Fourier Transform image of the embedded signal (already scaled). It can be seen that the signal energy is uniformly distributed in all spatial frequencies, as the term Spread Spectrum suggests. A very interesting phenomenon is observed by looking at the exact places where the embedded signal estimation after restoration differs from the original embedded signal: It can be seen that the majority of the errors occurs near the edges of the original cover image. L.Marvel and C.Retter proposed a way to compensate for this deficiency by using a sophisticated error-correction algorithm (convolutional code using hard and soft decision decoding and Viterbi algorithm for parameter estimation), while using the edge information extracted from the received stegoimage as its input. For details, see [7]. Next we show differences between various restoration filters. For the same example: Alpha-trimmed mean filter:MSG_BER : 0.000000 Standard mean filter:MSG_BER : 0.000000 Median filter:MSG_BER : 0.000000 As noticed in [1], the filter that provides the lowest signal Mean Squared Error is not the same as the one providing the lowest BER (Wiener has the lowest MSE, but the highest BER). Although the MSE is low, the number of errors is higher compared to the case when the MSE is high, but the number of errors is lower (the errors themselves are just larger in magnitude). Example 2Now we investigate the appropriate choice of the scaling factor by which the modulated signal is multiplied before being added to the cover image. By varying this parameter, one can adjust the added noise power (and hence invisibility). The parameters chosen: MSG_LENGTH : 50000 ECC: BCH After running the script with varying value of the scaling factor, the following results were obtained:
As the scale factor decreases, the invisibility increases (because the power of the added noise is lower). However, this makes the task of successfully decoding the message more difficult (as indicated by the ENCD_BER values). The Restored MSE indicates the mean square error of the embedded signal estimate. Despite the fact that the values are high for high scaling factors, this doesn't bother the demodulation process too much since the amplitude of the embedded signal is also large, so relative errors are small. Let's assume that, after examining the results, we decide that scale factor 1/40 provides good invisibility. However, the message BER of nearly 0.14 is unacceptable. Therefore we are forced to agree to hide less data by choosing lower-rate ECC. For the following parameters of the ECC: MSG_LENGTH : 15000 we get the following results: Channel Capacity Utilization: 0.057220/0.943466 So now we use only 5.7% compared 19.1% available capacity (=50000/262140), but error-free.
Example 3Now we verify the robustness of the scheme to removal. We do this by intentionally introducing distortions to the stegoimage before inserting it into the decoder. Two possible distortions that we tried are JPEG compression and additive white Gaussian noise.JPEG compressionWe tested the Lena image with the following ECC parameters: ECC TYPE: BCH
As can be seen, there is a tradeoff between the allowed levels of compression, scaling factor and the choice of appropriate ECC. Additive White Gaussian NoiseWe found out that adding random Gaussian noise of low power can also be compensated by either decreasing the ECC rate or increasing the scaling factor. Example 4In the previous examples, we hided a randomly generated binary message in the cover image. In fact, everything that is convertible to binary format can be hidden using the technique. As an example, we demonstrate it on data which represents another image, i.e. we hide another image inside the cover image. Note that in this case, perfect reconstruction isn't required, because even though errors are present, image restoration techniques can be applied to the received hidden image. As an example, we hided the "baboon_eyes.png" image in the "girl.png" cover image. By choosing a relatively high scaling factor (1/15), the image was reconstructed without errors.
The resulting stegoimage:
* * * Now we tried to hide the image "cat_head.jpg" in the same
cover image. Since the size of the data being hidden is
relatively large, we were forced to choose a relatively
high-rate ECC. As a result, errors were present in the
recovered image. However, after applying a median filter
the quality of the recovered image improved, as can be
seen below.
|