Tag Archive | panorama

Hugin panorama 2015

Då har så Hugin 2015 släppts.

Jag tycker att Hugin 2014 fungerade ganska bra, så jag förväntar mig inga revolutioner i mjukvaran, och det är det inte heller om man avser nya funktioner.

Däremot så har mycket gjorts för att förbättra stabilitet och bättre utnyttja tillgänglig hårdvara.

Det senare kan jag nog bekräfta då det går väldigt fort att hitta kontrollpunkter och att sedan matcha dessa mot varandra. Vid sammanfogningen så går en del moment väldigt fort, medan andra fortfarande använder endast en CPU.

Just nu har jag lite Nvidia problem så jag har inte kunnat testa om GPU stödet är bättre i denna version.

justeradFörutom att skapa panoraman från överlappande bilder så kan Hugin också användas för att exempelvis räta ut linsdistorsion i bilder med vidvinkel (jämför bilderna ovan).

Man kan även använda Hugin för att visualisera hur olika projektioner fungerar i exempelvis GIS.

https://geosupportsystem.wordpress.com/2012/10/26/projektioner/

Du kan hämta Hugin för Windows här: http://sourceforge.net/projects/hugin/

Dåligt väder…

Jaha, då har det varit långhelg men av allt planerat trädgårdsarbete blev det inte mycket. Så blir det när man vaknar en morgon i Maj och det ligger snö på marken… Nåja allt är inte dåligt, mitt nysådda gräs har faktiskt börjat titta upp nu efter 14 dagar, så nu kanske gräsmattan blir lite bättre i sommar.

När det är dåligt väder så frigörs tid till annat och vad gör man då om man har geosupport som intresse. Man förbättrar kanske tidigare arbete.

Sagt och gjort, det blev närmare 30 timmar framför datorn (usch), men ett resultat är att jag uppdaterat min webbapplikation för att mäta i panoramabilder.

En förbättring är att det nu går att göra uppskattningar av storlek direkt i bilderna. Jag säger uppskattning då mätningarna enbart baseras på ett mätvärde, och därför inte medger mätningar i 3 dimensioner.

helpMeasurePanoramat förutsätts vara 360 x 180 grader. Allt behöver inte vara täckt av bilder, men vinklarna måste vara korrekta. Ur två panoraman så räknar jag fram ett avstånd till en markerad punkt. Det nya är att det går att sätta denna punkt som referens för en ny punkt.

Den nya punkten använder den gamla och det beräknade avståndet för att i praktiken räkna fram längden på den motstående sidan i en rätvinklig triangel. En förutsättning för att det skall bli någorlunda rättvisa värden är att antingen referenspunkten eller mätpunkten representerar en rät vinkel mellan panoramapunkten och det objekt som skall mätas (se bild ovan).

Bland övriga nyheter är att jag även lagt till en hjälpfil, som ännu så länge bara finns på engelska. Gränssnittet startar på engelska, men det är enkelt att byta till svenska genom att klicka på den svenska flaggan. Vill man byta mer permanent så öppnar man ”pangeox.html” och redigerar en av de första raderna där man ändrar ”false” till ”true”.

Skärmbild från 2015-05-03 09:49:47Öppnar du koden så märker du också en annan ändring, nämligen att jag komprimerat så mycket av HTML- och JavaScript-koden som möjligt för att få ner storleken och därmed kanske snabba upp applikationen. Den var i och för sig inte särskilt långsam från början, men det är ingen ursäkt för att inte göra det.

Sådant jag tror att ”normala” användare kan tänkas vilja ändra i koden har jag låtit vara okomprimerat, vilket förhoppningsvis skall göra det enklare att hitta i och med att man inte behöver bläddra bland hundratals rader kod. Vill du exempelvis översätta allt till ett annat språk än engelska (eller svenska) så är det nu förhållandevis enkelt.

Se ”live” på: http://geosupportsystem.altervista.org/pangeox eller ladda ner paketet direkt (LÄNK ca 200 kB).

Som tidigare så skall applikationen packas upp i samma katalog där man har panoramabilderna och om man inte har Firefox så behöver man en webbserver (och en modern webbläsare) för att använda förhandsgranskningen av panoraman (dock inte nödvändigt för funktionen).

PGX version: Med Karta!

Normalt så skriver jag mina inlägg på helgerna, men denna veckan så har jag kontinuerligt förbättrat (tycker jag) min applikation för att samla in data ur georefererade panoramabilder.

Jag kunde inte hålla mig längre, utan lägger här ut en uppdatering…

Skärmbild från 2015-04-16 21:15:48Bland förändringarna:

  • Fungerar över hela jorden då UTM används i stället för SWEREF99TM.
  • Flyttat några fält och tagit bort några.
  • Eliminerat en knapp och därmed ett steg, så att processen är snabbare.
  • Lagt till funktioner för att se till att man inte gör onödiga fel.
  • Sparar även UTM zon i listan.
  • Och just det, lagt till en karta där alla objekt visas och lagras under sessionen.

Jag har gjort sidan på Engelska men det blir säkert en Svensk version också när (om) jag rensar upp i koden och löser några kvarstående problem.

Just nu är i alla fall jag som enkel amatör ganska nöjd med vad jag skapat.

Testa ”Live” – klicka här!

Fortsättning på fältmätningen

Har du inte läst gårdagens inlägg så börja med det först.

Här tänker jag gå in på lite av koden bakom webbsidan som skall hjälpa mig att mäta in olika objekt i efterhand. Du kommer inte att kunna återskapa sidan enbart genom att läsa denna artikel, men mot slutet finns det länkar till såväl alla filer som till en ”live” version av sidan som du kan prova med dina egna panoraman.

Jag har två panoraman med GPS-taggar som jag skapat i Photosynth. Jag har modifierat dessa så att norr är i bildernas skarv (ungefär) och nu är jag klar att läsa in och bearbeta dessa (Båda dessa finns bland de filer du kan ladda hem längre ner).

Skärmbild från 2015-04-12 11:28:21 Läs mer…

Panorama med ICE2

Nu för tiden så använder jag mest Hugin för att skapa panoraman av alla de slag, men tidigare så har ICE, eller Image Composite Editor, från Microsoft varit väldigt användbart för enkla jobb som skall bli klara på kort tid.

En stor fördel har varit att det har gått att använda video i stället för överlappande foton, vilket kan vara svårt att få till med en vanlig enkel kamera. Vrid bara kameran på högkant, börja spela in och snurra kameran runt sin egen axel i lugnt tempo. Det fungerar såklart att hålla kameran rakt också, men på högkant får man med mera i höjd och det är enkelt att vrida filmen i programmet.

(läs gamla inlägg om principen)

Nu har Microsoft släppt version 2 av programmet och det har skett väldigt mycket utseendemässiga förändringar, riktigt snyggt faktiskt.

Det är fortfarande enkelt att ”skyffla in” bilder eller video och sedan sköter sig programmet själv när man klickar vidare i processen.

En ytterligare nyhet är att det nu går att välja ”projektion” för utdata, så att exempelvis sfäriska panoraman kan exporteras som ”miniplaneter” (stereografisk projektion).

Något som jag ser som en kul grej, och möjligen användbart för husbehov, är ”auto complete”. Det är en funktion som fyller ut områden där man inte har bildinformation med beräknade värden. Det förklaras ganska tydligt i filmen.

Hur fungerar då ICE?

Ungefär som den gamla, väldigt bra med bilder/video tagna under goda förhållanden och där det inte finns för mycket rörelse mellan bilderna. Det är snyggt och ganska intuitivt, även om det finns många begrepp (som projektion) som kan vara svåra att förstå för den oinsatte. Det mesta i programmet är inriktat mot normala konsumenter som vill göra något lite extra med bilderna, utan att det för den skull skall vara krångligt.

Vill du däremot hantera bilder mera exakt, eller har bilder som inte är tagna med perfekt symmetri så är exempelvis Hugin mycket bättre. Resultatet blir bättre alltså… Hugin kräver lite mer av dig som användare och det tar längre tid för datorn att utföra alla beräkningar för att det skall bli så bra som det blir. Jag har kunnat skapa perfekta panoraman med Hugin som ICE över huvud taget inte klarade av att sy ihop.

Sedan så finns ICE bara till Windows så någon installation på datorn hemma blir det inte tal om.

Slutsats: Kör du Windows, tycker foto och film är kul, så skall du testa ICE. Programmet är gratis och går att ladda hem från http://research.microsoft.com/en-us/um/redmond/projects/ice/.

Vad har jag gjort i jul?

Jaha då var jul och nyår över och de flesta av oss är väl tillbaka i normala rutiner igen.

Vad har ni gjort under ledigheten? Varit med familj och vänner utgår jag från, men mer då?

Själv har jag haft så många påbörjade projekt att jobba med, så jag hade kunnat fylla minst tre gånger så mycket ledig tid och ändå inte blivit färdig.

Vad är det då för projekt jag hållit på med. En del foto och filmprojekt har det blivit, men det kan vi lämna här och nu.

Jag har sedan börjat titta på panoramabilder och hur man kan skapa dessa så snabbt och enkelt som möjligt, utan att det för den skull blir dåligt. Och nej, en panorama app i telefonen duger inte.

Det blev en lång process med massor av experiment och 3D utskrifter. Resultatet blev en ”panoramarobot” som när den är helt klar tar de bilder som behövs för ett helt sfäriskt panorama på ungefär en minut. Bilderna skall sedan bearbetas, och detta har jag också skapat en process för så att det blir riktigt bra panoramabilder med drygt 50 megapixels upplösning. Jag har sedan tidigare en större mycket mera avancerad ”robot” som kan ta ännu mycket bättre bilder och med högre upplösning (gigapixel), men den har jag inte byggt själv.

Är du nyfiken på roboten jag byggt så finns en tidig prototyp på ”Thingiverse” och jag gjorde även en film på YouTube.

Den färdiga roboten har mindre elektronik och färre gummiband… Dessutom eftersom den är lättare så ”svajjar” den mycket mindre.

När jag nu kan skapa såväl ”ekvirektangulära” (standard 360×180) som ”stereografiska” (se bild nedan) panoraman, så blev nästa steg att se vad man kan göra sedan.

EKSJOchurchJag har tidigare använt lite olika javaskript för att visa panoraman på webbsidor, vilket fungerat bra även om det funnits en del problem och nackdelar.

Nu råkade jag på Pannellum.org som är öppen källkod för en panoramavisare i HTML5, vilket lät intressant att titta närmare på. En skillnad som jag gillar med pannellum jämfört med andra javaskript är navigeringen och panoreringen inne i panoramat (jämför PTviewer här). Det finns dessutom väldigt få javaskript för panoramavisning som är fria/öppen källkod.

I praktiken så är all nödvändig kod för panoramat inbakad i en html-fil och konfiguration görs antingen via URL-strängen eller en JSON-fil.

För att visa enkla panoraman så görs det enklast via URL-strängen (exempel).

Men det går som sagt att skapa ganska komplicerade rundturer med skräddarsydda JSON skript (exempel). Dessa rundturer skriver man koden till manuellt, vilket kan bli nog så krångligt inte minst när man skall placera ut alla hyperlänkar och info-symboler. Därför så skapade jag ett skriptprogram och lite metoder för att även detta skulle kunna göras smidigt.

Ett problem med HTML5 och Pannellum är att man måste vara lite försiktig med upplösningen i bilderna, då mobila klienter inte kan hantera bilder större än 4096 pixlar. Desktop klienter brukar klara minst 8192 pixlar, och några klienter med bra grafikhantering ännu större.

Mina bilder i exemplen ovan är 5000 pixlar, vilket innebär att om du använder en mobil klient, så kommer du inte att kunna se några panoraman, sorry! Jag hade redan skapat och skalat ned bilderna till 5000 pixlar, när jag fick reda på begränsningen för mobila klienter. Om du vill kan du testa samma panorama i olika upplösningar, inklusive för mobila klienter genom att klicka här. Dessutom så är den en skillnad mellan Android och iOS, som man också måste planera för.

Det går att komma runt det här med upplösning genom att använda en variant av ”tiles”, men detta har jag inte tittat närmare på än.

En annan begränsning är att några funktioner kräver en modern webbläsare för att exempelvis kunna köras i helskärmsläge. Dessutom så måste alla filer läsas från en webbserver och inte från en lokal, eller delad katalog… (säkerhetskrav).

Vad är då kopplingen till GIS?

Jo, det går ju att skapa en webbkarta, med exempelvis Leaflet eller OpenLayers och där lägga ut klickbara punkter som öppnar dessa panoraman. Kombinerar man exempelvis med mitt exempel på ”Story Map” så går det att bygga upp väldigt interaktiva rundturer i en mängd olika syften.

Allt som krävs är öppen källkod, lite javaskript, JSON, HTML5 och så förstås en panoramarobot…

Pano-Surveying

I brist på ett bra namn så kallar jag detta så, och vad är det jag menar? Jo hur man kan använda befintlig teknik och panoraman för att hämta in geografiska positioner för olika objekt.

Ett fullständigt panorama är i praktiken inget annat än en sfär, vilket innebär att det går att positionera enskilda punkter i panoramat på samma sätt som för platser på jorden, men man får tänka lite annorlunda.

Jag har skapat ett fiktivt panorama som bild och överlagrat en världskarta helt oprojicerat som referens. Ekvatorn i kartan får symbolisera en tänkt horisont i panoramat och uppåt respektive nedåt i panoramat får representeras av norr och söder i kartbilden, hoppas att ni hänger med så långt.

360x180

För att snabbt förklara principen projicerar jag om bilderna till stereografisk projektion.

360x180-stereoBilden ovan representerar det som syns från en punkt i ett panorama. Du står på sydpolen. London är norr, USA väster, Indien öster, etc.

Tänk er nu att man fotar ett panorama på en plats (1) och ytterligare ett på en annan plats (2). Då har man en bas i en triangel med känd längd.

bild1

Om man kan peka ut riktningen till en och samma geografiska punkt (A) i båda dessa panoraman så har vi alla vinklar vi behöver för att räkna ut positionen för den punkten i denna triangel.

bild2

Det blir teoretiskt sett väldigt enkelt att räkna fram geografiska positioner för synliga objekt på detta sätt. Det finns dock en och annan svårighet.

  1. Positionering och orientering av panoraman. Positionering är inget större problem, men det viktiga blir att orientera panoramat så att man vet åt vilket håll norr, eller 0°, befinner sig. Detta för att projiceringen i ett verktyg skall bli korrekt och riktiga vinklar kan tas ut. Det enklaste är väl om ”skarven” alltid placeras rakt i söder. Vill man även kunna bestämma positioner i höjd så måste panoramat dessutom vara i våg.
    För själva panoramat så är det en förutsättning att det inte är förvrängt, vilket kan vara svårt att garantera om man använder panoramaprogramvara som Hugin tillsammans med mängder av överlappande bilder.
  2. Utpekning av riktningar eller bäringar i panoramabilderna. Inte så svårt om panoramabilderna är korrekt orienterade, men man behöver tänka till lite.
  3. Sammankoppling av objekt mellan olika panoraman. För att kunna utföra beräkningarna så måste man kunna koppla samman bäringar och positioner från olika panoraman till gemensamma objekt.

Processen för skapandet av nya geografiska punkter skulle kunna bli:

  1. Skapa och namnge det nya objektet.
  2. Hämta position från panorama 1
  3. Hämta riktning från panorama 1
  4. Hämta position från panorama 2
  5. Hämta riktning från panorama 2
  6. Beräkna X/Y koordinater för objektet
  7. Spara beräkning som geografiskt objekt

Hmm. Detta går ju för sjutton att göra med javaskript på en webbsida…

prototyp

Ett fönster med vanlig karta (1) där panoramapositioner finns med. När man klickar på panorama så hämtas positionen och panoramat visas i ett fönster (2) med samma teknik, fast man ser bilden inifrån och ut och inte från ovan som med kartan. Vinklar fungerar ju på samma sätt för båda. Muspekarens position kan överföras som riktningar (A) till ett formulär (3) där man kan skapa nya objekt. När man pekat ut riktningar i minst två panoraman så är det bara att klicka beräkna, så får man fram en position, som kan läggas till i den första kartan för visualisering, eller bara skrivas till en objektlista. Objektlistan måste ju sedan sparas på något sätt, men om man kan använda redigeringsfunktioner i exempelvis Open Layers så blir inte det heller några problem.

Nej, verktyget i sig är nog inte något stort problem. Nåja, det måste göras också så jag skall väl inte säga för mycket, men… Det stora och tidsödande jobbet blir att ta panoramabilderna och se till att dessa är korrekt orienterade. Men som jag nämnde förra veckan så förutspår jag ett genomslag för kameror som fångar sfäriska panoraman under 2015. Att dessa skulle ha inbyggd GPS och kompass är dock inte så säkert.

Någon som är sugen på lite javaskriptprogrammering?