Zaštita trodimenzijskih objekata vodenim žigom

 

Osnovni algoritmi

U ovom poglavlju bit će predstavljeni osnovni algoritmi za vodene žigove primjenjivi na 3D objektima. Opisane algoritme predložili su 1997. znanstvenici Ryutarou Ohbuchi, Hiroshi Masuda i Masaki Aono iz IBMovog istraživačkog laboratorija u Tokyu [Ohbuchi97]. Predložene tehnike mogu se grubo podijeliti u dvije skupine. Prvu skupinu čine metode koje djeluju na geometriju mreže trokuta, dok drugu skupinu čini algoritam koji djeluje na topologiju mreže trokuta.

Metode koje djeluju na geometriju mreže poligona, naročito predloženi TVR (Tetrahedral Volume Ratio) algoritam, ima gotovo optimalna svojstva u pogledu kapaciteta i brzine. Nedostaci su mu ranjivost na operacije premrežavanja i poligonsku simplifikaciju.

Metoda koje mijenjaju topologiju, u osnovi umeće informaciju stvaranjem šupljina u izvornoj mreži.

2.1 Primitivi umetanja

 

Postoje dvije vrste atributa u poligonalnim mrežama koje se mogu mijenjati da bi se umetnuo vodeni žig. Prva je geometrija i geometrijski primitivi (npr. točke ili trokuti), dok je druga topologija između tih primitiva.

Jedinice koje se mijenjaju (bilo geometrijske, bilo topološke) obično se nazivaju primitivima umetanja (embedding primitives).

 

·            Geometrijski primitivi umetanja

 

Geometrijske vrijednosti, naročito koordinate vrhova, mogu se mijenjati kako bi se u objekt umetnuo vodeni žig. Međutim, takva informacija koja se umeće izravno u promjenu položaja koordinate je osjetljiva na gotovo svaku geometrijsku transformaciju. Iz tog je razloga bolje koristiti primitive koji su invarijantni na određene skupine geometrijskih transformacija. U nastavku je dan pregled primitiva umetanja koji su invarijantni na određenu skupinu geometrijskih transformacija:

 

1.      Primitivi osjetljivi na sve dole navedene transformacije :

a. Koordinata točke.

 

 2. Primitivi invarijantni na translaciju i rotaciju :

            a. Duljina linije.

            b. Površina poligona.

            c Volumen poliedra.

 

3. Primitivi invarijantni na translaciju, rotaciju i uniformno skaliranje:

      a. Dvije veličine koje definiraju skup sličnih trokuta (npr. dva kuta).

            b. Omjer površina dva poligona.

 

4. Primitivi invarijantni na afine transformacije

             a. Omjer duljina dva paralelna segmenta linije

             b. Omjer volumena dva poliedra. 

                                                                                             

 

·        Topološki primitivi umetanja

 

Vodeni žig može biti umetnut u 3D objekt također i promjenom na topologiji modela. Ovakva promjena može imati kao posljedicu i promjene u geometriji (npr. promjenu položaja vrhova), ali informacija je umetnuta prvenstveno djelovanjem na topologiju.

 

U praktičnoj primjeni za umetanje podatka u 3D objekt potrebno je napraviti izmjene na velikom broju primitiva umetanja kako bi se mogla pohraniti dovoljna količina podataka za vodeni žig.

 

Kao što je već u uvodu napomenuto problem kod 3D objekata je taj da ne postoji nikakav implicitni poredak tih primitiva, pa ih je prethodno potrebno na neki način poredati. Za poligonalne 3D objekte to je moguće učiniti na slijedeća dva načina:

 

1. Topološko uređenje

Ovakvo uređenje zasniva se na svojstvu susjedstva, kao što je susjedstvo vrhova, kako bi se poredali primitivi umetanja. Topološko uređenje primjenjivo je i na topološke i na geometrijske primitive umetanja i otporno je na promjene izazvane geometrijskim transformacijama ali naravno ne i na one izazvane topološkim modifikacijama.

 

2. Kvantitativno uređenje

Ovakvo uređenje zasniva se na nejednakostima među određenim veličinama primitiva umetanja (npr. nejednakostima između volumena različitih poliedara) kako bi se izvelo sortiranje tih primitiva.

 

U obje navedene metode često je neophodno zadati početni uvjet (npr. prvi primitiv) kako bi se omogućilo sortiranje. Naravno i sortiranje i početni uvjet morali bi biti robustni na moguće promjene poput geometrijskih transformacija, ili će vodeni žig biti izgubljen.

 

Vrste uređenja primitiva moguće je podijeliti po opsegu djelovanja na lokalna, globalna, i uređenje po indeksu. Na slici 2-1 ilustrirane su sve tri vrst sortiranja.

 

1.      Globalno uređenje

 

Kod ovakvog uređenja svi primitivi unutar objekta u koji se želi umetnuti vodeni žig promatraju se kao jedan skup.

 

2. Lokalno uređenje

Kod lokalnog uređenja primitivi se dijele u nekoliko skupova i primitivi se sortiraju za svaki skup pojedinačno

 

3. Uređenje po indeksu

Ovo uređenje vrlo je slično lokalnom uređenju, ali se promatra vrlo mali podskup (dakle podskup od svega nekoliko primitiva) koji se naziva MEP (Macro-Embedding-Primitive). Svakom MEPu pridružen je jedinstveni indeks koji određuje redoslijed primitiva.

 

 

Slika 2-1. Primjeri za (a) globalno, (b) lokalno i (c) uređenje po indeksu [Ohbuchi97].

 

Globalno uređenje obično daje veći kapacitet zapisa, međutim lokalno i uređenje po indeksu omogućuju da se u isti poruka zapiše u objekt višestruko (u svaki podskup odnosno u svaki MEP) čime je osigurana veća otpornost kod, primjerice, odsijecanja dijela modela.

 

2.2 TSQ algoritam (Triangle Similarity Quadruple)

 

TSQ algoritam kao primitiv umetanja koristi dvije veličine koje definiraju skup sličnih trokuta kako bi umetnuo vodeni žig u 3D objekt predstavljen mrežom trokuta. Na slici 2-2 prikazan je jedan takav par sličnih trokuta koji mogu biti određeni skupom {b/a, h/c} ili skupom {Θ1, Θ2}. Kako bi odredio poredak primitiva, algoritam koristi četvorke koje se sastoje od 4 susjedna trokuta koji tvore konfiguraciju prikazanu na slici 2-3. Svaka takva četvorka predstavlja jedan MEP. U svakom MEPu pohranjene su četiri podatka {Marker, Indeks, Podatak1, Podatak2}. Marker (M) je par gore navedenih vrijednosti koji definira MEP. Indeks (S) sadrži redni broj MEPa, Podatak1 i Podatak2 (D1 i D2) sadrže podatke koji se umeću.

 

Slika 2-2. Primjer para veličina koji definira skup sličnih trokuta. Slika 2-3 Primjer jednog MEPa. Vi označava vrh, eij je duljina brida, a hi je visina trokuta.

 

Svaki MEP je prema tome određen topologijom, dok se MEPovi uređeni kvantitativno, prema rednom broju indeksa.

TSQ algoritam ne zahtijeva originalni 3D model za detekciju vodenog žiga, međutim zahtijeva par vrijednosti koji definiraju trokute-markere. Vodeni žig umetnut ovim postupkom otporan je odsijecanje dijela objekta i na lokalne deformacije, budući da je upotrijebljeno uređenje po indeksu pa se vodeni žig redundantno umeće u 3D objekt. Vodeni žig može biti uništen globalnim deformacijama na cijelom objektu ili opsežnom izmjenom topologije (primjerice premrežavanjem).

 

 

 

TSQ algoritam umetanja vodenog žiga odvija se u ovim koracima:

 

(1) Obilazi se ulazna mreža trokuta u potrazi za četvorkama trokuta koje će biti upotrijebljene kao MEPovi. Pri tome treba izbjegavati vrhove koji su već upotrijebljeni za umetanje podataka ili koji su zbog premalih dimenzija neprikladni za pohranu podataka.

 

(2) Postavi vrijednost markera u centralni trokut MEPa mijenjanjem njegovog skupa   koji definira slične trokute {e14/e24, h4/e12}, a što se postiže promjenom koordinata vrhova v1,v2 i v4 za malne iznose (slika 2-3).

 

 

(3) Umetni indeks i dva podatka u preostala tri trokuta MEPa promjenom koordinata vrhova v0, v3 i v5 koji nisu zajednički s trokutom markerom. Indeks se umeće u par {e02/e01, h0/e12}, a dva podatka umeću se parove {e13/e34,h3/e14} i {e45/e25, h5/e24}. Za svaki od ta tri trokuta algoritam prvo mijenja omjer hi/eij tako da prvo promijeni hi, a onda mijenja eij/ekl zadržavajući hi konstantnim.

 

(4)  Ponovi korake (1) do (3) sve dok se ne umetnu svi podaci.


 

 

Slika 2-4. Vide se pojedinačni MEPovi. Svaki MEP sastoji se od 4 trokuta u opisanoj konfiguraciji [Ohbuchi97].

 

U koracima (2) i (3) promjene koordinata moraju biti izabrane tako da omoguće zapis što veće količine podataka, a takva promjena mora u isto vrijeme biti dovoljno velika da bude otporna na unos šuma u model i dovoljno mala da ne naruši vizualni izgled modela.

 

Uz zadanu mrežu s umetnutim vodenim žigom TSQ algoritmom i uz zadani par vrijednosti koji definiraju trokute-markere, postupak dohvata vodenog žiga odvija se u sljedećim koracima:

 

(1)        Obilazi se uzlazna mreža trokuta u potrazi za trokutom koji je označen markerom, čime se locira MEP. Budući da je moguće da je objekt mijenjan rezultat je probabilistički, odnosno u nekim slučajevima moguća je pogreška.

 

(2)        Pročitaj indeks i dva podatkovna simbola iz odgovarajućih trokuta u MEPu.

 

(3)        Ponovi korake (1) i (2) za sve trokute markere u zadanoj mreži.

 

(4)        Poredaj sve dohvaćene simbole prema njihovim indeksima.

 

Jednostavan postupak za oporavak od pogrešne detekcije kod TSQ algoritma sastoji se u tome da se ista poruka zapiše u objekt nekoliko puta, te se pri dohvatu poruke zapisani simbol određuje po pravilu većine.

Vrijeme izvođenja algoritma je otprilike proporcionalno broju trokuta.

 

2.3 TVR algoritam (Tetrahedral volume ratio embedding)

 

Primitiv umetanja kod TVR algoritma opisanog u ovom dijelu je omjer volumena dva tetraedra. Primitivi umetanja topološki mogu biti uređeni globalno ili lokalno. Algoritam ne zahtijeva izvorni 3D model da bi dohvatio vodeni žiga iz objekta. Vodeni žig umetnut TVR algoritmom otporan je na afine transformacije na objektu, ali će biti uništen topološkim modifikacijama kao što su premrežavanje.

 Jedna modifikacija TVR algoritma opisana na kraju odjeljka je otporna i na odsijecanja i lokalne transformacije, što je postignuto lokalnim uređenjem primitiva umetanja i višestrukim umetanjem iste poruke.

 

Osnovni problem kod nemodificiranog TVR algoritma je pronalaženje globalnog jednodimenzijskog poretka primitiva izmjene. Algoritam se odvija u sljedećim koracima:

 

(1)        Pronađi na ulaznoj mreži M razapinjuće stablo vrhova Vt (engl. vertex tree), uz zadane početne uvijete Ivt za stablo Vt. Pretvori Vt u niz trokuta Tris (triangle sequence).

 

(2)        Pretvori Tris u niz tetraedara Tets (engl. tetrahedron sequence). Da bi to učinili izračuna se zajednički vrh tetraedra kao centroid koordinata prvih nekoliko trokuta (primjerice prva tri). Upotrijebljeni trokuti uklanjaju se iz niza, tako da njihove koordinate ostaju nepromijenjene nakon umetanja vodenog žiga.

 

(3)        Pretvori Tets u niz omjera volumena Vrs (engl. volume ratios sequence). Da bi to učinili volumen jednog tetraedra iz niza Tets (primjerice prvog) izabere se kao zajednički nazivnik svih omjera, a volumeni preostalih tetraedara upotrijebe se kao brojnici.

 

(4)        Umetni simbol u svaki omjer na način da se promijene koordinate tetraedara iz brojnika. Promjena koordinata pri umetanju tekućeg simbola ne smije interferirati s promjenama nastalim prijašnjim umetanjima

 

 

Slika 2-5. Trokuti upotrijebljeni u TVR algoritmu su potamnjeni.

 

 

 

Slika 2-6. Prikazan je primjer razapinjućeg stabla vrhova, prikazani su elementi TBE liste, kao i redoslijed dodavanja trokuta u Tris listu.

 

Da bi generirali stablo vrhova Vt obilazi se stablo uz zadane početne uvijete Ivt zadane u obliku para vrijednosti {početni vrh, početni smjer obilaska}. U svakom vrhu, obilaskom bridova u smjeru suprotnom od kazaljke na satu, pronalazi se brid koji već nije u uvršten u Vt i koji ne povezuje vrh s nekim vrhom koji je već pokriven nekim drugim bridom iz Vt. Ako je takav brid pronađen uvrsti se u Vt.

Na primjeru sa slike 2-6 razapinjuće stablo vrhova ima korijen (i točku grananja) u vrhu označenom brojem 1. Nakon prolaska kroz vrhove 1 do 10, obilazak započinje ponovno iz vrha 1 i dodaju se vrhovi 11 i 12.

Razapinjuće stablo Vt pretvara se u niz trokuta formiranjem skupa bridova TBE (Triangle Bounding Edge). Tbe je inicijalno popunjen svim bridovima iz stabla bridova Vt. Skup Tbe se popunjava na način da se po razapinjućem stablu obilaze svi vrhovi, te se u svakom vrhu u smjeru kazaljke na satu traže svi susjedni bridovi. Svaki takav susjedan brid dodaje se u skup Tbe, ako već nije u njemu.

Niz trokuta Tris je inicijalno prazan a popunjava se sa odgovarajućim trokutom čim se sva tri brida trokuta pojave u skupu Tbe.

U primjeru 2-6 bridovi (osim onih inicijalno dodanih u skup Tbe, koji čine razapinjuće stablo) označeni su abecedno prema redoslijedu uvrštavanja u skup Tbe. Na istoj slici brojevima u kružićima su označeni i trokuti prema redoslijedu dodavanja u skup Tris.

 

Slika 2-7. Primjer računanja volumena a-b-c-d za brid c-d. Slika pokazuje i dva moguća početna smjera kretanja po bridu c-d.

 

TVR algoritam umjesto početnog uvjeta zadanog u obliku {početni vrh, početni smjer obilaska} prihvaća početni uvjet zadan u obliku inicijalnog brida. Kako bi izabrao inicijalni brid, algoritam izračunava za svaki brid u modelu volumen tetraedra formiranog od dva susjedna trokuta koji dijele zadani brid (slika 2-7). Kao inicijalni brid izabire se onaj kojem je volumen pripadajućeg tetraedra najveći.

 

Ovaj postupak je efikasan zato jer afine transformacije ne narušavaju nejednakosti među volumenima tetraedara (iako je potrebno naglasiti da je ovaj skup tetraedara drugačiji od skupa tetraedara upotrijebljenih za pohranu simbola u sam objekt).

Pri dohvatu umetnutih simbola, ispravan početni brid se pronalazi metodom pokušaja i pogrešaka. Algoritam isprobava više potencijalnih početnih bridova dok ne pronađe ispravan, unaprijed određen, početni niz (lead-in symbol sequence). Ovo je potrebno jer je moguće da zbog šuma umetnutog u objekt, brid sa s najvećim volumenom pripadnog tetraedra ne bude ispravan početni brid.

Upotreba brida kao početnog uvjeta ostavlja dva jednakovrijedna moguća početna smjera za obilazak mreže. Ova dvoznačnost također se razrješava metodom pokušaja i pogrešaka.
TVR algoritam dohvaća početni niz koristeći obje mogućnosti, te izabire onaj smjer kojim se ispravno dohvaća početni niz.

 

 

Vrijeme izvođenja TVR algoritma je, slično kao i kod TSQ algoritma i otprilike proporcionalno broju bridova.

 

Kao što je u uvodu spomenuto vodeni žigovi umetnuti TVR mogu se učiniti, do određene mjere, otpornim na odsijecanja i lokalne deformacije upotrebom lokalnog uređenja primitiva (ili uređenja po indeksu) te višestrukim umetanjem istog vodenog žiga u tako priređen model. Ova inačica algoritma naziva se TVRC (engl. TVR Cluster) Kako bi se stvorile odgovarajuće poddomene za lokalno uređenje, algoritam jednostavno podijeli model na nekoliko podskupova, odnosno na nekoliko nepovezanih mreža trokuta. Granice takvih mreža moraju imati zajedničke vrhove i bridove kako se ne bi mogla uočiti mjesta diskontinuiteta.

 

 

Na slici 2-8. prikazan je model krave obilježen ovako modificiranim algoritmom. Poruka umetnuta u model ostala je čitljiva nakon primjene više uzastopnih afinih transformacija, kao i u nekim slučajevima u kojima je dio modela bio odrezan.

 

 

2.4 TSPS algoritam (Triangle Strip Peeling Symbol-sequnce embedding)

 

TSPS algoritam odvaja (ljušti) određene zone iz ulazne mreže trokuta kako bi u model umetnuo vodeni žig. Primitiv umetanja je susjedstvo para trokuta u ulaznoj mreži, pri čemu svaki primitiv kodira jedan bit vodenog žiga (ulaznog niza simbola). Na ovaj način definiran primitiv implicitno određuje i njihov poredak. Budući da TSPS algoritam radi s topološkim primitivom umetanja, ovako umetnuti vodeni žig praktično je otporan na bilo kakve geometrijske transformacije. Višestrukim umetanjem istog vodenog žiga može se učiniti otpornim i na odsijecanja dijela modela. Pri dohvatu vodenog žiga iz markiranog modela, nije potreban nemarkirani original.

Nedostatak ovog algoritma je relativno slaba iskoristivost ulaznog modela.

 

Umetanje vodenog žiga u model kod TSPS algoritma odvija se u ovim koracima:

 

(1)               Odaberi u ulaznoj mreži M jedan brid e i počevši od njega izradi zonu trokuta S na ulaznoj mreži, koristeći bitove iz ulazne poruke kako bi se odredila spojnost među trokutima u toj zoni.

Kao što se na slici 2-9 vidi na ovaj način građena zona trokuta ima na krajevima dva slobodna brida koji se mogu poredati na način da jedan označava “0” a drugi “1”. To se može postići na način da se bridovi uvijek obilaze ili u smjeru suprotnom kazaljci na satu ili u smjeru kazaljke na satu, pri čemu prvi slobodan brid na koji naiđemo označavamo s “0”, a drugi s “1”. Nakon što smo na ovaj način odredili značenje pojedinog slobodnog brida možemo odabrati slobodan brid na koji ćemo nadovezati sljedeći trokut iz zone, zavisno o tome treba li kodirati nulu ili jedinicu u ulaznom nizu bitova.

 

(2)   Odvoji od ulazne mreže M tako stvorenu zonu S na način da se odcijepe svi bridovi od M koji graniče sa S, osim početnog brida e. Na ovaj način zona S ostala je povezana s početnom mrežom M jedino zajedničkim početnim bridom. Kako odvojena (oljuštena) zona trokuta prekriva cijelu “rupu” nastalu na ovaj način, vodeni žig umetnut ovim algoritmom nije vizualno uočljiv.

Mreža s umetnutim vodenim žigom naziva se M+ mreža, a mreža M+ bez zone trokuta S naziva se šablonska mreža (engl. stencil mesh) R. Brid e služi kao početni uvjet za dohvat vodenog žiga, tj. zone trokuta S (slika 2-12).

Slika 2-9. TSPS algoritam zapisuje vodeni žig u spojnost zone trokuta S. Nakon takvog umetanja zona S se odspaja od mreže M a zadržava se samo inicijalni brid e.

 

 

Na slici 2-10 prikazan je primjer zone trokuta koja počinje bridom e i koja je nastala umetanjem ulaznog niza bitova “10101101011” u slijed od 12 trokuta. Svaki bit ulaznog niza određuje u kojem će se smjeru širiti mreža. Na taj način poruka, koja bi se trebala umetnuti, mogla bi sgenrirati zonu trokuta koja ne stane u ulazni model.

Primjerice za ulazni niz koji sadrži veliki broj uzastopnih nula ili jedinica zona trokuta bi se širila samo u jednom smjeru i moglo bi se desiti da takva mreža dođe do granica ulaznog modela (ili da se kružno vrati na početak) prije nego li je postala dovoljno velika da se umetnu svi elementi ulaznog niza bitova. Da bi riješili ovaj problem oblik zone trokuta S moramo prilagoditi ulaznom modelu dodavanjem posebnih bitova, a i mjesto i smjer zone S treba biti pažljivo izabrano u modelu M. Posebno dodani bitovi kojima prilagođavamo oblik zone S, nazivaju se pokaznim simbolima (engl. steering symbols). Pokazni simbol je bit koji ne nosi nikakvu informaciju nego je umetnut isključivo radi prilagodbe zone S proizvoljnom obliku ulazne mreže M.

 

 

Slika 2-10 Spojnost zone od 12 trokuta upotrijebljena je za kodiranje niza od 11 bitova “101011010101”.

 

Ti pokazni simboli isprepleteni su podatkovnim simbolima (odnosno onima koji nose korisni sadržaj u vodenom žigu). Nedostatak ovog pristupa je taj što korištenje pokaznih simbola smanjuje efektivni kapacitet ulaznog modela. Za izbor najboljeg mjesta za umetanje zone trokuta S, algoritam predviđa jednostavnu upotrebu metode pokušaja i pogrešaka.

 

Dohvat umetnute poruke izvodi se u ovim koracima:

 

(1)               Obilazi ulaznu mrežu M+ dok ne pronađeš brid s topološkim svojstvima koja odgovaraju bridu koji započinje zonu trokuta, poznate duljine, spojenu za šablonsku mrežu zajedničkim rubom.

 

(2)       Obiđi zonu trokuta dok ne dođeš do slobodnog kraja.

 

Slika 2-11 prikazuje primjer djelovanja TSPS algoritma na mreži od 214 s koje je skinuta zona od 27 trokuta. Od tih 27 trokuta 13 granica nosi podatkovne bitove, a 13 pokazne bitove.

 

Slika 2-11 Zona trokuta koja se sastoji od 27 trokuta unutar mreže od 215 trokuta. 13 bitova je podatkovnih, 13 pokaznih.

 

Slika 2-12 Mreže M, M+, R i zona trokuta S.

 

 

 

Prethodna

 
 
bottom graphic