Tehnologija je primerna za manjšanje ali povečevanje slik in tudi za operacije, kot je »izrez« (brisanje) osebe ali podrobnosti iz slike. Pike iz slike odvzema ali jih nanjo dodaja tako, da poišče »brazde« med seboj povezanih pik z nizko energijo. Uporabljena je energijska funkcija, ki vsaki piki določi njeno pomembnost, težo. Brazde potekajo od zgoraj navzdol ali od levega proti desnemu robu, vendar ne po ravni navpični ali vodoravni premici (v tem primeru bi šlo za uniformiran, lahko bi ga imenovali tudi linearni način). Pri pomanjševanju slike tehnologija zadrži »strukturo« slike, tako da je odstranjenih več pik z manjšo težo, kot onih z večjo. Povečanja slike, kar pomeni dodajanje novih pik, pa zadrži pravo ravnotežje med originalnimi in dodanimi pikami.

»ENERGIJA« PIKE

Kaj je energije pike oziroma njena teža? Odgovor je najbolje ponazoriti kar z drugim vprašanjem. Če bi morali iz slike odstraniti eno piko, katero bi izbrali? Tisto, katere odsotnost je najmanj opazna, piko, ki je najbolj zlita, neizstopajoča iz okolice sosednjih pik. Taka pika ima nizko energijo, tista, ki močno izstopa, pa ima visoko energijo oziroma težo. Tako razmišljanje je osnova energetske funkcije, ki vsaki piki v sliki določiti njeno energetsko vrednost.

Kako naprej? Vzemimo, da želimo sliko zožiti (torej skrčiti po širini). Logičen korak je odstraniti vse pike z nizko energijo, ne glede na to, kje so. S tem uničimo pravokotno obliko slike (seveda pa tudi njeno vsebino), saj v vseh vrsticah ni vedno enako število takih pik. Nekje jih je manj, drugod več, in ko po odstranitvi sliko stisnemo (na primer premaknemo vse pike na levo tako, da zapolnijo prazna mesta odstranjenih pik) , na drugem koncu ni več pravega roba. Druga možnost je, da v vsaki vrstici odstranimo enako število pik, toliko kot jih je v vrstici z najmanjšim številom energetsko manj pomembnih pik. Tako obdržimo pravokotno obliko slike, vendar je uničena vsebina. Odstranjene pike niso vedno po navpični osi na istem mestu, kar pomeni, da po stiskanju nastane cikcak vzorec. Obliko in vsebino zadrži funkcija izreza (crop), kjer gre za del originalne slike, recimo tisti del, kjer je največ pik visoke energije. Še ena možnost je. Iz slike umaknemo stolpce, kjer je največje število točk nizke energije. S tem zadržimo obliko sliko in manj drastično posežemo v vsebino slike. Pa tudi v tem primeru lahko pride do večjega ali manjšega popačenja slike.

BRAZDA

Angleško besedo »seam« smo pomensko prevedli kot brazda, saj nam drugi prevodi, kot je na primer šiv, niso bili najbolj všeč, glede na to, kar je brazda na »površini« slike. Navpična brazda poteka od zgoraj navzdol in vsebuje med seboj povezane pike enake oziroma približno enake energije, pri čemer je v vsaki vrstici le ena taka pika. Podobno velja za vodoravno brazdo, ki poteka od enega roba do drugega in kjer je splet le ena pika v stolpcu. Pomembno je, da brazde niso premice. Bolj so podobne razpoki na površini slike, ki se na prvi pogled naključno širi z enega roba na drugega. Tako kot pri odstranjevanju stolpcev ali vrstic lahko odstranimo tudi brazdo, pri čemer se morebitni negativni učinki poznajo zgolj v okolici odstranjene brazde, ne pa na celotni sliki. V bistvu je zadeva zelo podobna odstranjevanju stolpcev (ali vrstic). Oblika slike ostane pravokotna in popačenje je minimalno. Kolikšno je, je močno odvisno od motiva na fotografiji, sposobnosti orodja, ki tehnologijo vključuje, in njegovih algoritmov za iskanje optimalnih brazd, ter kako zelo želimo spremeniti mere slike.

SPREMINJANJE DIMENZIJE SLIKE

Denimo, da želimo sliko želimo zožiti za 20 pik. Ali drugače: iz slike moramo izbrisati ravno toliko navpičnih brazd. Ker pri iskanju možnih brazd, algoritem išče le povezave točk z nizko energijo, bodo samo te tudi izbrisane. Točke visoke energije, ki predstavljajo pomembno vsebino, pa bodo skoraj nedotaknjene. Največ popačenja bo tam, kjer nas to načelom ne moti toliko. Podobno velja tudi, ko želimo sliko povečati, takrat algoritem doda (podvoji) brazde, oziroma kadar želimo sliko spremeniti po drugi osi, le da bodo v tem primeru uporabljene vodoravne brazde. Ali pa vodoravne in navpične sočasno, če gre za spreminjanje razmerja slike po obeh robovih. Le da je slednje nekoliko težje, saj mora algoritem določiti katere, navpične ali vodoravne brazde je bolje prej izbrisati (manjšanje slike) ali dodajati (povečevanje) in katere pozneje.

DODAJANJE BRAZD – VEČANJE SLIKE

Zanimivo je povečevanje slike, kar v praksi pomeni podvajanje brazd, ki imajo najmanjši vpliv na vsebino fotografije. Tu nastopi težava! Preprost algoritem bi v prvem koraku izbral brazdo, ki ima najmanjši vpliv na vsebino slike, jo podvojil in v naslednjem koraku ponovno iskal najprimernejšo brazdo na že malenkostno povečani sliki. Logično je, da bi zelo verjetno izbral isto kot v prvem koraku, in tako bi izbiral, dokler slika ne bila želenih dimenzij, del njene vsebine pa popačen. Boljše rezultate dosežemo z obrnjenim prijemom. Algoritem ne določi zgolj najprimernejše brazde, temveč poišče vse tiste, ki bi jih morali izbrisati, če bi na primer želeli sliko zmanjšati za enako »mero«, kot jo želimo povečati. Tako dobimo natančno toliko različnih brazd, ki jih je treba podvojiti, in se hkrati izognemo podvajanju vedno iste brazde. Ko gre za občutno povečanje slike, ko bi na primer bilo treba vsako brazdo podvojiti vsaj enkrat (če ne celo večkrat), da bi dosegli želeno dimenzijo, je bolje postopek razbiti na več korakov. V prvem sliko povečamo za manjši faktor in nato korak ponavljamo, dokler ne dosežemo želene dimenzije. Le tako lahko kolikor toliko ohranimo vsebino fotografije, čeprav je jasno, da ne moremo slike večati v nedogled in ne pričakovati popačenja.

VEČANJE MOTIVA, NE CELOTNE SLIKE

Namesto da bi povečali celotno sliko, lahko brazde uporabimo tudi za »večanje« pomembne vsebine pri ohranjanju originalne velikosti slike. Kako? Sliko najprej povečamo z grafičnim programom (image size), pri čemer mora postopek ohraniti originalno razmerje slike, saj le tako ne pride do popačenja slike. Nato pa s tehnologijo seam carving povečano sliko zmanjšamo na velikost originalne slike. Ker tehnologija izbriše le pike z manjšo energijo, pride do učinka, kot bi dejansko na sliki povečali le njen osnovni motiv.

BRISANJE OBJEKTOV

Pri brisanju delov fotografij, običajno oseb, ki jih želimo »izbrisati iz svojega spomina«, gre za to, da sistem izbriše le tiste brazde (navpične ali vodoravne), ki potekajo čez »brisano območje«, ne pa hkrati tudi čez področje, ki smo ga označili kot »nespremenljivo«. Ker pa brisanje brazd vpliva na velikost slike, po končanem postopku brisanja steče še postopek podvajanja brazd. Tako je končni rezultat slike enake velikosti kot originalna slika. Brez izbrisanega, seveda.

KO ŽELENE DIMENZIJE NE POZNAMO!

Kaj pa, ko ne poznamo dimenzije, v katero je treba sliko pretvoriti? Tipičen primer so spletne strani, pri katerih nikoli ne vemo, s kakšno ločljivostjo in na kakšnem zaslonu jo bo uporabnik hotel prikazati. Želeno je torej pretvarjanje originalne, ene in zgolj ene slike, v realnem času. Kar pa ni tako enostavno. Pretvarjanje slike ločljivosti 400 x 500 pik v ločljivost 100 x 100 traja povprečno 2,2 sekunde. In to je razmeroma majhna slika. Računanje nekaj deset tisoč brazd je prevelik zalogaj, da bi potekalo v realnem času!

Obstaja druga rešitev? Zapis slike, v katerem so brazde že izračunane. Oziroma! Vzemimo sliko prejšnje ločljivosti (400 x 500 pik). Originalni sliki dodajo informacije (brazde) za vsa možna pomanjševanja slike (s tem pa so na voljo tudi informacije za povečevanje) na intervalu ločljivosti 1 x 1 in 400 x 500 pik. Tako sta operaciji manjšanja in večanja možni v »skoraj« realnem času. Pojavi pa se manjša težave. Sočasno brisanje tako navpičnih kot vodoravnih brazd (pretvarjanje slike po obeh ravninah) je do neke mere omejeno. Če na primer izbrišemo eno vodoravno brazdo, se bo ta sekala z vsemi navpičnimi, kar pomeni, da podatki o teh niso več celoviti (brazde so prekinjene). Zato na ta način pretovorjena slika ni enako kakovostna, kot če bi jo na primer pretvarjali na običajni način, ko se vedno znova računajo nove brazde.

NI ČAROBNA PALIČICA, A ...

Tehnologija seam carvnig ni rešitev za vse težave, povezane z spreminjanjem velikosti slik. Nekatere probleme reši bolj, druge pa manj učinkovito. Prinaša pa svež pristop in bo zato zelo verjetno prej ali slej vnesena v večino programov za obdelavo grafike. Prav tako so rezultati odvisni ne samo od programskega algoritma, ki je lahko bolj ali manj učinkovit, temveč tudi od vsebine slik. Eno so primernejše (velike površine enakih tekstur oz. vzorcev, kot je nebo ali voda) kot druge, in tako kot drugod lahko dobre rezultate v praksi dosežemo le s kombinacijo različnih tehnologij, orodji in postopkov. Čeprav je želja snovalcev tehnologije, da bi ta vedno delovala in dajala optimalne rezultate pri samodejnem pretvarjanju, brez vpliva uporabnika (glede na željo po sistemu, neodvisnem od velikosti zaslona) se je izkazalo, da sistem še ne more v celoti zamenjati človeka. Njegovo nadzor nad delovanjem sistema (na primer s tem, da mu pomaga določiti, kateri deli slike imajo zanj večjo težo od drugih) je še vedno potreben!


Preizkusite sami
Opisano tehnologijo lahko preizkusite kot storitev na spletni strani http://rsizr.com. Algoritem išče primerne brazde, ki se začnejo v vsaki točki po dolžini, ko gre za navpične brazde oziroma v vsaki točki višine, ko gre za vodoravne brazde. Ker je teh veliko, proces traja kar nekaj časa. Šele nato lahko prilagodimo velikost slike na želene mere.

Objavljeno: Moj mikro, Januar 2008 | Marjan Kodelja