Steganography Detection Method

 

 

1. We use LabVIEW to compute the 2-dimensional Fast Fourier Transform of the image to be analyzed. Since LabVIEW's internal representation of JPEG images are two one dimensional arrays, we must first merge the two arrays to obtain the desired array of data. We then normalize and phase shift the data to obtain proper visualization for the plot of the magnitude of the Fourier Transform. (Click on image to enlarge)

 

 

 

 

 

 

 

 

 

2. The next step is to plot the magnitude of the 2-dimensional Fast Fourier Transform of the image.

 

 

3. We then take a diagonal 1-dimensional slice of pixels and scan for discontinuities. By scanning a sector corresponding to 30 degrees on the magnitude plot of the Fourier Transform, we sample a large enough among of slices to properly detect if there are discontinuities caused by embedded data in the image. (Click on image to enlarge)

 

 

 

 

 

 

 

4. To scan a 1-dimensional slice of pixels for discontinuities, we compare the median pixel value to the mean pixel value of the array of pixels. If the difference between the median pixel value and the mean pixel value is above a certain threshold value, we can conclude that a discontinuity exists in the slice of pixels selected. Using the following condition, we check for discontinuities in a single slice of the Fourier Transform: (Click on image to enlarge)

 

 

 

 

 

 

 

If

 

 

then discontinuity exists.

 

 

 

 

 

 

 

 

 

 

 

 

  

5. If at least 10% of all of the 1-dimensional slices of pixels in the magnitude plot of the Fourier Transform have detected discontinuities, then we can conclude that the image contains embedded data and a green button lights up on the graphical user interface. (Click on image to enlarge)

 

               

 

 

6.  If the criteria is not met, or less than 10% of the slices contain discontinuities, the green button does not light up and we can conclude that the image does not contain embedded data. (Click on image to enlarge)

 

           

 

 

The following screenshot shows the hierarchy of the VI’s and subVI’s used in LabView.  The actual files of Matlab code can be found here. (Click on image to enlarge)