2013-04-04 10 views
6

W steganografii metoda least significant bit (LSB) substitution osadza tajne bity w miejscu bitów z nośnika pokrycia, na przykład piksele obrazu. W niektórych metodach jest pobierane Discrete Wavelet Transform (DWT) obrazu, a tajne bity są osadzone w współczynnikach DWT, po czym odwrotna transformata jest używana do rekonstrukcji obrazu stego.W jaki sposób DWT może być użyty w steganografii zastępującej LSB

Jednak DWT generuje współczynniki zmiennoprzecinkowe, a dla metody podstawiania LSB wymagane są wartości całkowite. Większość artykułów, które przeczytałem, używa 2D Haar Wavelet, ale nie są one jasne co do ich metodologii. Widziałem, że transformacja jest zdefiniowana w kategoriach filtrów dolno- i górnoprzepustowych (transformaty zmiennoprzecinkowe) lub biorąc pod uwagę sumę i różnicę wartości par lub średnią i różnicę średnią, itp.

Dokładniej, albo w forward lub odwrotna transformacja (ale niekoniecznie w obu, w zależności od użytych formuł), pojawią się ostatecznie liczby zmiennoprzecinkowe. Nie mogę mieć ich dla współczynników, ponieważ podstawienie nie zadziała i nie mogę mieć ich dla zrekonstruowanych pikseli, ponieważ obraz wymaga wartości całkowitych do przechowywania.

Na przykład rozważmy parę pikseli, A i B jako tablicę 1D. Współczynnik niskiej częstotliwości jest określony przez sumę, tj. s = A + B, a współczynnik wysokiej częstotliwości przez różnicę, tj. d = A - B. Możemy następnie zrekonstruować oryginalne piksele za pomocą B = (s - d)/2 i A = s - B. Jednak po jakimkolwiek pomieszaniu ze współczynnikami, s - d może już nie być i pojawią się wartości zmiennoprzecinkowe dla zrekonstruowanych pikseli.

Dla przypadku 2D transformacja 1D jest stosowana oddzielnie dla wierszy i kolumn, więc w końcu gdzieś wystąpi podział na 4. Może to spowodować wartości z resztami zmiennoprzecinkowymi .00, .25, .50 i .75. Znalazłem tylko one paper, który rozwiązuje ten problem. Reszta jest bardzo ogólnikowa w ich metodologii i staram się je odtworzyć. Jednak DWT został szeroko wdrożony do steganografii obrazu.

Moje pytanie brzmi, ponieważ niektóre z literatury, które przeczytałem, nie były pouczające, jak to możliwe? W jaki sposób można użyć transformacji, która wprowadza wartości zmiennoprzecinkowe, ale cała metoda steganograficzna wymaga liczb całkowitych?

Odpowiedz

7

Jednym z rozwiązań, które zadziałało, jest użycie transformacji falkowej Integer, którą niektórzy określają jako lifting scheme. Dla falki Haara, widziałem to zdefiniowane jako:

s = floor((A + B)/2) 
d = A - B 

I do odwrotności:

A = s + floor((d + 1)/2) 
B = s - floor(d/2) 

Wszystkie wartości w całym procesie są liczbami całkowitymi. Powodem, dla którego działa, jest to, że formuły zawierają informacje o parzystych i nieparzystych częściach pikseli/współczynników, dzięki czemu nie dochodzi do utraty informacji o zaokrągleniu. Nawet jeśli jeden modyfikuje współczynniki, a następnie przyjmuje odwrotną transformację, zrekonstruowane piksele będą nadal liczbami całkowitymi.

Przykład wdrożenia w Pythonie:

import numpy as np 

def _iwt(array): 
    output = np.zeros_like(array) 
    nx, ny = array.shape 
    x = nx // 2 
    for j in xrange(ny): 
     output[0:x,j] = (array[0::2,j] + array[1::2,j])//2 
     output[x:nx,j] = array[0::2,j] - array[1::2,j] 
    return output 

def _iiwt(array): 
    output = np.zeros_like(array) 
    nx, ny = array.shape 
    x = nx // 2 
    for j in xrange(ny): 
     output[0::2,j] = array[0:x,j] + (array[x:nx,j] + 1)//2 
     output[1::2,j] = output[0::2,j] - array[x:nx,j] 
    return output 

def iwt2(array): 
    return _iwt(_iwt(array.astype(int)).T).T 

def iiwt2(array): 
    return _iiwt(_iiwt(array.astype(int).T).T) 

Niektóre języki mają już wbudowane funkcje do tego celu. Na przykład Matlab używa lwt2() i ilwt2() do transformacji falkowej 2D z uniesionym schematem.

els = {'p',[-0.125 0.125],0}; 
lshaarInt = liftwave('haar','int2int'); 
lsnewInt = addlift(lshaarInt,els); 
[cAint,cHint,cVint,cDint] = lwt2(x,lsnewInt) % x is your image 
xRecInt = ilwt2(cAint,cHint,cVint,cDint,lsnewInt); 

Przykładem artykułu gdzie zastosowano do żeglugi śródlądowej obrazu steganografii jest Raja, K.B. et. al (2008) Robust image adaptive steganography using integer wavelets.

Powiązane problemy