Sauman veistos

Sauma kaiverrus , tai älykäs rajaus, on algoritmi varten kuvan koon kehittämä Shai Avidan Ariel Shamir vuonna 2007. Tämä algoritmi asteikot, ei asettamalla standardi asteikko ( interpolointi ) tai rajaus , mutta poistamalla tai lisäämällä ns alhainen -Energia pikselin polut (Englanti, vähän energiaa saumat ).

Pikselin energia mitataan yleensä sen kontrastilla lähimpiin naapureihin nähden, mutta muita tekniikoita, kuten muodon havaitsemista, voidaan käyttää. Lisäksi on mahdollista määrittää tai havaita automaattisesti suurenergiset alueet niiden suojaamiseksi poistolta. Vastaavasti voimme määritellä vähän energiaa olevat alueet, jotka ensin poistetaan. Näiden tietojen perusteella algoritmi laskee pienimmät energiapolut ja poistaa ne tai laskee lisättävät pikselireitit.

Yksi algoritmin sovelluksista on kuvien koon muuttaminen vääristymättä reagoiville verkkosivustoille .

Määritelmät

Algoritmi

Vaiheiden kuvaus

Alla olevassa esimerkissä kuvataan saumanleikkausalgoritmi kuvan pienentämisen tapauksessa:

Vaihe Kuva
1) Valitse kuvan koko.
2) Laske energia jokaisen pikselin, tässä päässä valon voimakkuuden gradientti . Muita menetelmiä voidaan käyttää, esimerkiksi perustuen silmäluomiin tai entropiaan  (en) .
3) Laske tästä energiafunktiosta luettelo poluista, jotka on luokiteltu energiatason mukaan. Tämä voidaan tehdä useilla tavoilla: dynaamisessa ohjelmoinnissa (eniten käytetty menetelmä) Dijkstra-algoritmilla tai ahneella algoritmilla . Kuvassa punaisella olevat polut edustavat matalan energian polkuja, jotka on poistettava kuvasta.
4) Poista alemmat energiapolut niin paljon kuin on tarpeen halutun kuvakoon saavuttamiseksi. Jos päinvastoin haluat suurentaa kuvaa, tämä vaihe korvataan pienemmän energian polun kopiolla, sitten sen pikselien keskiarvon laskeminen naapureiden kanssa.
5) Käytä lopullista kuvaa.

Polkuenergian laskeminen dynaamisessa ohjelmoinnissa

Dynaaminen ohjelmointi on ratkaista ongelma se hajoaa osa-ongelmat ratkaistaan tallentamalla välitulokset. Saumojen veistämisen tapauksessa on kysymys siitä, lasketaanko kuvan ylärivin jokaiselle pikselille vähiten energiaa oleva (jatkuva) polku, joka laskee alarivin pikseliin.

Alla olevat kuvat esittävät dynaamisen ohjelmointiprosessin, jota käytetään optimaalisen ylhäältä alas -polun laskemiseen. Jokainen neliö edustaa pikseliä, kukin vasemmanpuoleinen arvo punaisella laatikossa edustaa vastaavan pikselin energiaa, ja kukin musta arvo edustaa kaikkien siihen pikseliin johtavan polun kaikkien pikselien energioiden summaa.

Algoritmin monimutkaisuus

Joko kuvan rivien määrä (korkeus) ja pikselien määrä riviä kohden (leveys). Jokainen yllä kuvattu dynaaminen ohjelmointivaihe (joka laskee kaikkien rivin pikselien energiatasot) vaatii vakiomäärän operaatioita kullekin pikselille (pikselin energian summa siihen johtavien polkujen kolmen energian kanssa ja vertailu näistä kolmesta summasta) ja toteutuu siten ajoissa . Siksi koko algoritmi (kaikkien linjojen läpikulku) kestää .

Toisaalta, jos halutaan poistaa useita polkuja samanaikaisesti, algoritmin kolmas osa voi aiheuttaa polkuja, jotka leikkaavat. Tämän mahdollisuuden käsittelemiseksi välttäen kaikkien energioiden uudelleenlaskemista joka kerta, kun polku poistetaan, Avidan ehdottaa lisäämään taulukkoa, joka tallentaa jokaiselle pikselille polun vähimmäismäärän, jolla se sijaitsee: pikselit pienimmällä energiapolulla on numero , pikseleillä toisella vähiten energiapolulla on numero , ja niin edelleen. Sitten, kun polku poistetaan, tämä taulukko päivitetään vastaavasti.

On myös mahdollista sivuuttaa tämä monimutkaisuus ja turvautua likiarvoon. Tätä varten voimme ensin suorittaa edellä kuvatun algoritmin kaksi ensimmäistä vaihetta, mikä mahdollistaa viimeisen rivin pikselien luokittelun lisäämällä energiatasoja. Sitten voimme tarkastella kutakin näistä pikseleistä kasvavan energian järjestyksessä ja suorittaa kolmannen polun etsintävaiheen päivittämättä energioita koskaan, mutta merkitsemällä käytetyt pikselit, jotta emme valitsisi niitä useita kertoja.

Sovellukset ja rajoitukset

Toteutukset

Adobe on hankkinut ei-yksinomaisen lisenssin saumanveistotekniikalle, joka on toteutettu Photoshop CS4: n ominaisuutena, nimellä Content Aware Scaling . Tätä ominaisuutta voidaan käyttää kuvan koon muuttamiseen interaktiivisesti, mikä on johtanut kaappauksiin meemien muodossa .

Muut tietokonegrafiikkasovellukset ovat siirtäneet tämän toiminnon, mukaan lukien GIMP , digiKam ja ImageMagick , erillisten sovellusten lisäksi, kuten iResizer, joka on julkaissut algoritmin ilmaiset ja avoimet lähdekoodiversiot .

Rajat

Algoritmi saattaa vaatia käyttäjän toimia virheiden välttämiseksi (esimerkiksi jos kuvissa on kasvoja, joita emme halua vääristää). Useat tämän algoritmin toteuttavat rajapinnat ehdottavat "maalattavan" säilytettävät alueet, mikä lisää niiden energiatasoa algoritmin suorituksessa. Kasvojen tapauksessa voidaan käyttää kasvojentunnistusalgoritmeja .

Poistamalla matalamman energiapolun algoritmi pyrkii toisinaan luomaan korkean energian polkuja (tuomalla pikselit, joilla on voimakas kontrasti niiden välillä). Tämän kuopan välttämiseksi on mahdollista simuloida polun poistamisen seurauksia ja laskea kokoonpanon energiaero nähdäksesi, kasvaako se. Jos näin on, voi olla parempi valita toinen poistettava polku

Huomautuksia ja viitteitä

  1. (en) Shai Avidan ja Ariel Shamir, ”  Saumanleikkaus sisällön tietoisen kuvan koon muuttamiseksi  ” , SIGGRAPH ,Heinäkuu 2007( lue verkossa , tutustunut 17. heinäkuuta 2020 )
  2. (in) Aditya Bist ja Vinay Palakkode, "  Parallel Sauma Veistos  " päälle cmu.edu , University Carnegie Mellon ,2016(käytetty 17. heinäkuuta 2020 )
  3. (in) "  Mitä uutta Adobe Photoshop CS4: ssä  " on photoshopupport.com (avattu 17. heinäkuuta 2020 )
  4. (in) "  Content Aware Scaling  " sivustolla knowyourmeme.com ,6. marraskuuta 2013(käytetty 17. heinäkuuta 2020 )
  5. (en) Liquid Rescale GIMP -laajennus
  6. (in) Uusi Liquid Rescale -työkalu rakenteilla ...
  7. (in) Nestemäinen uudelleenmittaus - saumanleikkaus
  8. (sisään) Smart Resizer - skaalaa valokuvat muuttamatta kohteen skaalausta!
  9. (in) Michael Rubinstein, Ariel Shamir ja Shai Avidan, "  arempi Sauman veistos Video uudelleenkohdistaminen  " [PDF] , SIGGRAPH ,2008(käytetty 17. heinäkuuta 2020 )
  10. (in) Michael Rubinstein, Ariel Shamir ja Shai Avidan, "  Parempi Sauman Veistos Video uudelleenkohdistaminen  " .

Katso myös

Aiheeseen liittyvät artikkelit

Ulkoiset linkit