Schemat układu ukrywającego znaki wodne Obraz odcisku palca Obraz twarzy Klucz Obraz twarzy ze znakiem wodnym zawierającym odcisk palca Decyzja Odczyt znaku wodnego Odtworzony obraz twarzy Odtworzony odcisk palca Analiza odcisku palca Identyfikacja Nakładanie znaku wodnego np. na karcie chipowej 1011011… Chcąc ukryć dane w obrazie, należy dysponować dwoma plikami. Pierwszy z nich, to grafika, stanowiąca tzw. nośnik informacji, drugi - informacja przeznaczona do ukrycia, którą może być wszystko co da się umieścić w strumieniu bitów: tekst, grafika, itp. W wyniku połączenia nośnika z tajną informacją powstaje tzw. stego-obraz. 1
Ukrywanie/odczytywanie znaku wodnego System ukrywania znaku wodnego obraz-nośnik znak wodny obraz z ukrytym znakiem wodnym klucz System odczytywania znaku wodnego znak wodny obraz z ukrytym znakiem wodnym klucz
Wprowadzanie szumu do obrazu Przy wprowadzaniu szumu do pewnego poziomu obraz nie traci na jakości. Metoda opiera się na spostrzeżeniu, że niewielkie zmiany koloru lub jego odcienie nie są rozróżniane przez człowieka.
Steganografia Obraz nośnik Obraz ukrywany Obraz widoczny dla odbiorcy
Cechy znaku wodnego 5
Metoda LSB 6
Schemat kodowania LSB typu (3,3,3) Metoda umożliwia osadzenie trzech bitów znaku w bloku trzybitowym przy zmianie co najwyżej trzech bitów obrazu-nośnika. Red Green Blue 01101101 00111100 11010111 11110011 11011010 11100101 01100110 X2-drugi piksel obrazu 1 X1-pierwszy piksel Na rysunku został zilustrowany przebieg ukrywania przykładowego bajtu o wartości 102 (binarnie 01100110). W kodzie ASCII odpowiada to małej literze „f”. Ukrycia dokonano w dwóch losowo wybranych pikselach X1 oraz X2 obrazu-nośnika. Każdy z pikseli jest opisany przez trzy bajty reprezentacji RGB. 7
Schemat kodowania LSB typu (3,3,3) Red Green Blue 01101101 00111100 11010111 11110011 11011010 11100101 01100110 X2-gi piksel obrazu 1 X1-szy piksel Podczas nakładania znaku wodnego modyfikowane są (zaczynając od najmłodszego) kolejne bity kolejnego bajtu danego piksela. Bity znaku wodnego ukrywane są także w kolejności od najmniej do najbardziej znaczących. 8
Odczytywanie znaku wodnego metodą LSB Red Green Blue 11110010 11011001 11100110 01101101 00111100 11010111 X1-szy piksel obrazu X2-gi piksel obrazu 01100110 Odczytywanie znaku wodnego za pomocą schematu kodowania (3,3,3) odbywa się bez żadnych dodatkowych obliczeń – bezpośrednio z wybranych pikseli obrazu-nośnika są odczytywane kolejne bity znaku wodnego. Taki sposób odczytu zapewnia dużą prędkość odczytu danych, ale też dużą podatność na wszelkie zmiany obrazu-nośnika, czego rezultatem mogą być błędy odczytu i przekłamane dane znaku wodnego. 9
Obróbka transformaty obrazu Transformata zmodyfikowana Nakładanie znaku wodnego w dziedzinie częstotliwości Obraz oryginalny F(u, v) Obróbka transformaty obrazu F’(u, v) f(x, y) Obraz wynikowy f’(x, y) Znak wodny Transformata Transformata zmodyfikowana 10
Nakładanie znaku wodnego z zastosowaniem transformacji DCT W celu wykonania transformacji DCT obraz dzielony jest na macierze (bloki) o wymiarach 8 x 8 pikseli. Jeśli wymiary obrazu nie są wielokrotnością liczby 8, jego szerokość oraz wysokość jest powiększana do rozmiaru będącego wielokrotnością liczby 8. Przykładowy blok 5 x 5 Blok przeskalowany 11
Interpolacja dwuliniowa Interpolacja dwuliniowa jest stosowana do zmiany rozdzielczości obrazu cyfrowego. Celem jest obliczenie nieznanej wartości funkcji f w punkcie P(x,y). Dane są wartości tej funkcji w czterech punktach 12
Transformacja DCT (przypomnienie) Macierz bazowa transformaty DCT jest macierzą kwadratową stopnia N. Elementy tej macierzy są obliczane przy pomocy formuły: Macierz ma następującą postać: 13
Kwantyzacja Wartości komórek macierzy kwantyzacji Qm są z góry ustalone. Są one tak dobrane, aby najważniejsze informacje o obrazie, reprezentowane przez wysokie częstotliwości, zostały zachowane w niezmienionej postaci, natomiast mniej istotne informacje zostały wyzerowane. Kwantyzacja współczynników otrzymanych w wyniku prostej transformacji (DCT) jest określona wzorem: 14
Odwrotna kwantyzacja Operacja wykonywana dla odwrotnej transformaty (IDCT) jest określona wzorem: 15
Nakładanie znaku wodnego z zastosowaniem transformacji FFT Operacje wykonywane w transformacji FFT są przeprowadzane w całości na liczbach zespolonych. Zwykły obraz cyfrowy zawiera tylko liczby całkowite, więc by możliwe było przetwarzanie dowolnego obrazu za pomocą transformacji FFT, musi on zostać przedstawiony za pomocą zbioru liczb zespolonych. Problem ten rozwiązuje się w ten sposób, że do części rzeczywistej liczby zespolonej wpisywana jest wartość piksela, część urojona natomiast jest zerowana. 16
Zastosowanie FFT w ukrywaniu znaku wodnego Współczynniki Fouriera przed przesunięciem. Współczynniki Fouriera po przesunięciu. 17
Zastosowanie FFT w ukrywaniu znaku wodnego Tak otrzymaną macierz zespolonych współczynników widmowych oznaczono symbolem W. Z niej w kolejnym kroku algorytmu wylicza się macierz amplitudy A oraz macierz fazy F 18
Zastosowanie FFT w ukrywaniu znaku wodnego Znak wodny zostanie ukryty tylko w macierzy amplitudy, macierz fazy pozostaje nienaruszona. Będzie ona wykorzystana dopiero przy odwrotnej transformacji Fouriera.. Bity znaku wodnego są ukrywane na planie współśrodkowych okręgów o środku: Kolejne promienie ri są wyliczane wg wzoru: i są zaokrąglane do najbliższej liczby całkowitej 19
Zastosowanie FFT w ukrywaniu znaku wodnego Dzielnik d określa, w której części macierzy (a co za tym idzie, w jakich częstotliwościach zostanie ukryty znak wodny. Gdy wartość d jest bliska 1, znak wodny zostanie ukryty w wysokich częstotliwościach. Większe wartości spowodują, że znak wodny zostanie ukryty w średnich oraz niskich częstotliwościach. Promień każdego kolejnego okręgu zwiększa się od swojego poprzednika o p pikseli. Jest to wartość tak dobrana, aby stosunek wytrzymałości znaku wodnego do jego pojemności był jak najbardziej korzystny. W drodze przeprowadzonych eksperymentów dobrano wartość p=2. Współrzędne y punktu leżącego na okręgu są wyznaczane z zależności: 20 Wynik operacji jest zaokrąglany do najbliższej liczby całkowitej
Zastosowanie FFT w ukrywaniu znaku wodnego Wartości bitów znaku wodnego są ukrywane tylko w jednej ćwiartce każdego okręgu. Ćwiartka ta należy do obszaru D. W pozostałych ćwiartkach wartości te zostają powielone. Dzięki temu uzyskuje się dużą wytrzymałość znaku wodnego. Pojedynczy bit znaku wodnego jest ukrywany w macierzy czterokrotnie – w punktach Jeśli obraz-nośnik jest obrazem o 24-bitowej głębi kolorów, okrąg z ukrytymi bitami znaku wodnego jest powielany na każdą składową koloru. W takim przypadku każdy bit znaku wodnego zostanie umieszczony w obrazie-nośniku dwunastokrotnie. Zapewnia to dużą wytrzymałość tak ukrytego znaku wodnego kosztem pojemności obrazu-nośnika, w którym ten znak został ukryty.
Zastosowanie FFT w ukrywaniu znaku wodnego Na rysunku przedstawiony został sposób, w jaki bity znaku wodnego są ukrywane w dwuwymiarowej macierzy amplitudy FFT. 22