h1

Seam Carving Gui

september 26, 2009

Linux, Win, OSX

Låt oss säga att vi har en bild på två bekanta på en strand, mitt i mellan dem långt ute i vattnet i bilden står en karl och petar näsan. En bra bild om det inte var för näspetaren. Med gratisprogrammet (open source) Seam Carving Gui kan du ladda in bilden måla delen du vill ha bort med röd färg och det som programmet inte ska förvränga eller ska behålla med grön färg och skala ner bilden horisontellt så att näspetaren försvinner.

kanalenBilden ovan:
Bilden högst upp visar hur jag målat, grönt för oförändrat (baserat på test,undo och test igen) och rött för ta bort. Bilden längst ner till vänster är ursprungsbilden 1200×900 pixlar och resultatet till höger om den 1000×900 pixlar. Jag använde inställningarna

  • Edge detector: V_SQUARE
  • HD Quality,
  • Forward Energy
  • Add Weight: 8000 (vad jag förstår i skrivandets stund är att detta är typ den upplösning/ antalet pixel sömmar den ska beräkna, men jag kan ha fel. 8000 gav i alla fall ett bättre resultat än 500 som är default)
  • Weight Scale 4000 (5000 är default, och kanske hade gett samma resultat, jag minns inte, jag exprimenterade fram och tillbaka) .

Om man ska göra en liten bild för webb så är resultatet godtagbart, typ den storlek som du ser här 206×188 pixlar för den till vänster. Om den skulle vara något större så så skulle jag vara tvungen att fixa fören på båten till vänster.

kanalen2

Urklipp, bild ovan:
Man ser på den stora bilden att husen räknat från båtens för och bort mot horisonten är förvrängda, men inte så farligt. Fören på båten till vänster har fått sig en törn och kajkanten ser också konstig ut, men kan fixas med hjälp av ursprungsbilden och med hjälp av Gimp eller PhotoShop. Lite klonvertyg på vattnet också skulle inte skada, om nu bilden ska vara
1000×900 pixlar, men tipset är nog att skala ner den typ 70-80 % i alla fall, så blir det nog hunky dory

Här är en video som visar vad Image Resizing by Seam Carving är (visar inte programmet jag skriver om här):
http://www.youtube.com/watch?v=6NcIJXTlugc

Väljer man knappen ”Remove” i Seam Carving så tar den bort det målat rött men skalar inte bilden, den försöker flytta pixlarna efter vissa algoritmer och lägga till nya sömmar med pixlar och fyller ut bilden. Resultatet blir bra om det är små ytor/objekt som tas bort. Större ytor ger större förvrängning på bilden.

Man kan själv skala bilden genom att skriva in pixelvärden, som jag gjort i exemplet ovan, antingen vertikalt eller horisontalt, eller båda. Man målar alltså med rött för det som ska ta bort och grönt för det som ska vara oförändrat/inte ska förvrängas. Du kan skala upp bilden eller ner bilden. Ju enklare förutsättningar du ger programmet kommer ge bättre resultat, typ ta bort bilen i fjärran, flytta kon i ytterkanten närmare de andra korna. Ett användbart program för fotografen eller den som vill editera texturer för 3D på ett nytt sätt, tex ta bort en ventil eller ett litet klotter på en murtextur, eller skala rektangelformad textur till kvadrat med Seam carving beräkning. Kombinerar man detta verktyg med editering i ett program som Gimp eller PhotoShop så finns det inga gränser för vad man kan göra och få mycket hjälp på vägen. Ett annat och kanske bättre alternativ är att ladda ner ett plug-in till Gimp som gör samma sak som detta program, se slutet av denna text.

Kursiv text är för nörden.

Den så kallade ”masken” med röd eller grön färg kan man spara separat och ladda in. Den röda och gröna masken sparas som en bild, det är en vanlig PNG bild, det betyder alltså att man kan måla masken i tex Gimp med grön :RGB0,255,0 och röd:RGB255,0,0. Och spara som PNG. Masken kan bara laddas in om den är lika stor som bilden man ska ha masken till. När bilderna är typ 2000x 2000 pixlar så är programmet trögt att måla i, så då är ju Gimp mycket bättre. Beräkningen tar lång tid vid stora bilder. Programmet har ”Brush Weight” för penseln men är primitiv och smothar inte bra, där kan också Gimp vara ett bättre alternativ om man vill ha bättre kontroll.

Programmet beräknar via olika ”Edge detector”.
V1 och V_SQUARE kan ge ett bättre resultat om man tar bort stora ytor. V_SQUARE ger större edge värden och kan behöva högre weight-värden, V1 är default. Prewitt och Sobel beräknar på liknande sätt, och är det ursprungliga beräkningsättet för Seam carving
Laplacian kan i vissa fall minska en del av artefakterna som uppstår………….tror jag. Texten lyder så här: Laplacian is a second-derivative operator, and can limit some artifacts while generating others. Som egentligen säger att den tar bort artifakter men lägger till andra artifakter………………………jahaa?

(detta är översatt från en dålig text och inga filter jag har stor erfarenhet av själv, utom att Laplacian har i vissa fall gett mig bättre resultat, experimentera. Texten, rad 48 till 51, finns här: http://code.google.com/p/seam-carving-gui/source/browse/trunk/cair/CAIR.h?spec=svn16&r=16 ) Programmet har ingen Wikisida i skrivandets stund, men kommer nog framöver.

image2826Bilden ovan:
Det är inga under som sker, det blir nästan bra. Här har jag målat rött på paraplyt som spindeln håller och som jag valt att ta bort. Olika inställningar har gett olika resultat och förvrängt bilden som man ser tydligt i spindelnätet. Bilden är nog inte optimal, om skogen i bakgrunden
också hade varit i fokus så hade resultatet blivit bättre. Ett resultat är mindre dåligt och kan tas in i PhotoShop eller Gimp och efterediteras, eller en kombination av två eller flera resultat.

test4

Bilden ovan:
Bilden längst upp till vänster är ursprungsbilden, jag har markerat med grönt de delar som jag ville behålla och skalade ner den i höjdled. Jag såg att griffeltavlorna bland frukten förvrängdes, gjorde undo och målade också de med grönt. Griffeltavlan längst upp till vänster på ursprungsbilden har flyttats ner till samma nivå som melonerna på bilden nedanför, och toppen på den citrusfrukt som är närmast melonen har plattats till, ser jag nu. På bilden till höger har jag tagit bort en melon, det ledde till att kokosnötterna förvrängdes till någon typ av oigenkännligt. Som sagt experimentera för att få det resultat du vill ha, och för att klargöra, detta är egentligen en för komplicerad bild för Seam carving…….tror jag.

Sammanfattningsvis kan man nog säga: stadsbilder är vanskligare och svårare, naturbilder är enklare och ger bättre resultat eftersom det är så mycket mer oregbundna former i naturen, men efter en tids hantering av verktyget som då ger erfarenhet, så är nog inget omöjligt. En bild ljuger alltid.

Bilder och text som förklara hur det fungerar:
http://www.gabeiscodingstatic.com/contentawareimageresizing-seamcarving

Deb filer Ubuntu Jaunty 32 och 64 bit
http://old.getdeb.net/app/Seam+Carving+GUI

Win, OSX och tarbollar:
http://code.google.com/p/seam-carving-gui/


Andra liknande program:

Det finns en Seam carving plug-in till Gimp också: Liquid Rescale GIMP plugin
Video: http://www.youtube.com/watch?v=pedYzag8GH8&feature=related
plug-in: http://liquidrescale.wikidot.com/en:download-page

Eller kod för installation i Gimp/Ubuntu:
sudo apt-get install gimp-plugin-registry
Den hittas sedan i Gimp under Lager/………….. Liquid Rescale. Hur man använder den se tutorial länken under.
Tutorial: http://www.youtube.com/watch?v=BwaZkRPf0Xo&feature=related

SEAMonster Win (här målar man tvärtom rött på den yta man vill ha oförändrad)
Video: http://www.seamcarving.com/
Program: http://blogs.msdn.com/mswanson/archive/2007/10/23/seamonster-a-net-based-seam-carving-implementation.aspx

PDF som förklarar Seam carving på djupet:
http://www.seamcarving.com/arik/imret.pdf

Kanalbilden och fruktbilden är snodda i ärlighetens namn från: http://www.bigfoto.com/

/Tommy Hjalmarsson

Seam Carving Gui

Kommentera