7.7. Watermarking
Osadzanie znaku wodnego (ang. watermarking) jest typowym sposo-
bem zabezpieczania obrazu cyfrowego przed nieupoważnionym kopiowa-
niem. Najprostszym sposobem jest dodanie do obrazu widocznego znaku
wodnego poprzez mieszanie obrazu oryginalnego i obrazu znaku wodnego z
odpowiednią wartością przezroczystości.
fw = (1 − α)f + αw
(7.31)
gdzie fw jest oznakowanym obrazem, f obrazem oryginalnym, w obrazem
znaku wodnego a α współczynnikiem kontrolującym przezroczystość a co
za tym idzie widoczność znaku wodnego (zobacz Rysunek 7.9). Sposób jest bardzo prosty do wykonania ale niestety niesie ze sobą sporo wad. Przede
wszystkim taki znak wodny jest bezpośrednio widoczny na obrazie i co za
tym idzie łatwy do usunięcia. Po drugie nie jest zbyt odporny na transfor-
macje obrazu, zarówno geometryczne jak i intensywności.
Nieco bardziej zaawansowanym sposobem znaczenia obrazów cyfrowych
jest niewidoczny znak wodny (ang. invisible watermark). W tym przypadku
chodzi o takie osadzenie znaku wodnego, który byłby niedostrzegalny dla
percepcji zmysłowej lub systemów wizyjnych. Prostym przykładem tego ty-
pu osadzania jest wykorzystanie najmniej znaczących bitów dla 8-bitowych
obrazów. Rozważmy równanie:
f
w
fw = 4
+
(7.32)
4
64
Całość obliczeń jest wykonywana z całkowitą precyzją arytmetyczną. Dzie-
lenie i mnożenie przez 4 ustawia dwa najmniej znaczące bity wartości f na
0, dzielenie wartości w przez 64 przesuwa dwa najbardziej znaczące bity
144
7. Przekształcenia w dziedzinie częstotliwości
Rysunek 7.9. Przykładowy obraz z osadzonym widocznym znakiem wod-
nym.
znaku wodnego na pozycję dwóch najmniej znaczących bitów. Zsumowa-
nie tych wartości ostatecznie osadza znak wodny w w obrazie f. Istotną
różnicą w stosunku do widocznego znaku wodnego jest jego odporność na
celowe lub przypadkowe usunięcie. Niestety również ten sposób znakowania
obrazu cyfrowego jest nieodporny na modyfikacje obrazu. Jakakolwiek mo-
dyfikacja intensywności, kompresja stratna lub transformacja geometryczna
najczęściej spowoduje zniszczenie osadzonego znaku. Poza tym do weryfika-
cji oznakowania obrazu niezbędny jest osadzany znak wodny i odpowiedni
system dekodujący obraz.
Najbardziej pożądanych sposobem osadzania znaku wodnego byłby za-
tem taki, który generuje obraz nierozpoznawalnie zmieniony w stosunku do
oryginału, bez widocznego znaku wodnego i dodatkowo odporny na nieza-
mierzone lub celowe ataki takie jak stratna kompresja, liniowa lub nieliniowa
filtracja, dodanie szumu czy transformacje geometryczne obrazu. Takie za-
łożenia może spełniać osadzanie znaku wodnego nie w domenie obrazu ale w
domenie częstotliwości. Do tego celu doskonale nadaje się transformata ko-
sinusowa z jej dużą odpornością na zniekształcenia. Rozważmy następujący
sposób osadzania znaku wodnego zaproponowanego przez Coxa w [9]:
1. Obliczenie dwuwymiarowej DCT dla obrazu I(u, v)
IC(u, v) = dct2(I(u, v))
(7.33)
2. Wyznaczenie K największych współczynników c1, c2, ..., cK transforma-
ty IC co do wartości bezwzględnej.
3. Stworzenie znaku wodnego poprzez wygenerowanie K-elementowej se-
kwencji pseudolosowej w1, w2, ..., wK z rozkładu Gaussa ze średnią war-
tością µ = 0 i średnią wariancją σ2 = 1.
7.7. Watermarking
145
4. Osadzenie znaku wodnego wygenerowanego w punkcie 3. do K najwięk-
szych komponentów DCT wyznaczonych w punkcie 2. zgodnie z równa-
niem:
c′i = ci · (1 + αwi)
1 6 i 6 K
(7.34)
gdzie α > 0 jest stałą, która kontroluje wpływ i siłę oddziaływania zna-
ku wodnego wi na współczynniki ci. Nowe współczynniki transformaty
c′ mają zastąpić stare współczynniki
i
ci w transformacie IC.
5. Powrót do przestrzeni obrazu poprzez obliczenie odwrotnej DCT ze zmo-
dyfikowanej w punkcie 4. transformaty.
I′(u, v) = idct2(I′C(u, v))
(7.35)
(a)
(b)
(c)
Rysunek 7.10. Osadzanie znaku wodnego metodą transformaty kosinusowej:
(a) obraz oryginalny, (b) obraz z osadzonym znakiem wodnym, (c) różnica
obrazów (a) i (b) przeskalowana w intensywności do zakresu [0..255].
Rysunek 7.10 pokazuje różnicę pomiędzy obrazem oryginalnym i obrazem z osadzonym znakiem wodnym. Wizualnie oba obrazy są w zasadzie
nierozróżnialne. Tak skonstruowany znak wodny jest jest dobrze chroniony
z kilku powodów:
1) znak wodny jest generowany za pomocą liczb pseudolosowych bez wy-
raźnej struktury;
2) znak wodny jest osadzony w komponentach o różnych częstotliwościach,
które mają wpływ na cały obraz w domenie przestrzennej zatem jego
położenie nie jest oczywiste;
3) ataki na znak wodny często prowadzą do zniszczenia obrazu jako ta-
kiego, tzn. żeby wprowadzić zmiany w komponentach o istotnych czę-