Ortofotomapa w Agisoft Photoscan

Krótki poradnik o tym, jak utworzyć ortofotomapę w Agisoft Photoscan. Chodzi o sytuację, w której nie mieliście ustawionych fotopunktów, mierzonych GPS RTK lub tachimetrem, które moglibyście wykorzystać do zgeoreferowania modelu wyprodukowanego w Photoscan. Dysponujecie po prostu serią zdjęć (np. zrobionych z drona). Do wykonania zadania potrzebne będą:

  • seria zdjęć lotniczych interesującego was obszaru;
  • Program Agisoft Photoscan w wersji Pro;
  • Qgis
  • Numeryczny Model Terenu z pomiarów lidarowych, zakupiony za niewielkie pieniądze w serwisie CODGiK. Najprościej zakupić plik .asc. Najlepiej plik LAS, z którego można sobie samemu wyprodukować .asc.

Zakładam, że macie już jakieś obycie w Qgis i podstawową znajomość Photoscan. Niewielkie, ale jednak.

1. Zdjęcia lotnicze wrzucamy do programu i w czterech prostych ruchach (trwających niekiedy kilka godzin) uzyskujemy model 3D fotografowanego obszaru. Wszystkie cztery ruchy znajdziecie w menu „Workflow” – po kolei: „Align Photos” – „Build Dense Cloud” – „Build Mesh” – „Build Texture”. Im więcej zdjęć wrzucicie, tym lepszy uzyskacie wynik końcowy i tym dłużej będzie on przeliczany…

rozp72. W programie Qgis tworzymy nowy projekt. Wrzucamy do niego nasz NMT oraz podpinamy warstwę WMS z ortofotomapą z geoportal.gov.pl (stara instrukcja podłączenia warstw WMS jest tutaj – od tego czasu zmieniły się jednak adresy oraz szczegóły Qgisa. Aktualne adresy tu). We właściwościach projektu ustawcie układ 1992 lub 2000 (pamiętając o wyborze właściwej strefy).

model4rW moim przypadku użyłem stworzonego wcześniej projektu.

3. Od teraz będziecie pracowali na dwóch programach równocześnie. W Photoscan za pomocą funkcji „Create Marker” (prawy klik myszy – rozwijane menu kontekstowe) tworzycie markery zaznaczając charakterystyczne punty terenowe: skrzyżowania dróg, miedze na polach, narożniki budynków, etc.

model1rW tym przypadku punkt utworzono na skrzyżowaniu rowów melioracyjnych.

4. Dokładnie ten sam punkt musicie odnaleźć w Qgis z włączoną ortofotomapą geoportalu. Teraz wykorzystacie dwie funkcje programu. Pierwsza to wtyczka przechwytywania koordynatów. Pozwala ona przez wskazanie konkretnego punktu na mapie uzyskać jego koordynaty xy. W panelu wtyczki można ustawić układ odniesienia. Ustawcie tam koniecznie układ 1992 lub 2000.

model9rTeraz wystarczy tylko kliknąć na mapie Qgisa z włączoną ortofotomapą wskazując ten sam punkt, który zaznaczyliście w Photoscanie. Z panelu wtyczki skopiujcie po kolei najpierw wartość X, później Y, wklejając je do odpowiedniego panelu Photoscan:

model8rWłaśnie tutaj. W tym przypadku są to wartości w układzie 2000 strefa 7.

5. W ten sposób powinniście mieć już wartości XY, czyli lokalizację w dwóch wymiarach. Potrzebny nam jeszcze trzeci, czyli wysokość (Z). W tym celu korzystamy z narzędzia identyfikacji (strzałka). Aby je wykorzystać na drzewku warstw Qgis zaznaczcie warstwę z waszym NMT. Później wystarczy wskazać punkt na mapie z włączoną ortofotomapą z geoportal.gov.pl. Wskazujecie na ortofotomapie, ale zaznaczony jest NMT.

model2rW bocznym panelu wyświetli wam się, odczytana przez program z NMT, wartość wysokości. Skopiujcie ją i wklejcie do Photoscana.

6. Dla przeciętnego modelu powinno wam wystarczyć 5-6 punktów. Im więcej zrobicie, tym dokładniejszy powinien być gotowy produkt. Nie ma jednak sensu robić ich zbyt wiele. Mając gotowe punkty musicie zbudować ortofotomapę. W panelu „Workflow” kliknijcie „Build Orthomosaic”.

model6rUstawcie układ odniesienia dla powstającego pliku (może być ten sam, który macie dla projektu Qgis).

model5rW panelu na zrzucie jest Local Coordinates, zmieńcie to na wybrany układ odniesienia.

7. Ostatni krok to wyeksportowanie ortofotomapy. Wybierzcie „File” i „Export Orthomosaic” oraz format, do którego chcecie wyeksportować plik (najprościej i najbardziej uniwersalnie – tiff). Gotowy plik wystarczy wrzucić do Qgis.

model7rI gotowe.

Testuję PhotoScan (na Linuksie)

PhotoScan firmy Agisoft stał się ostatnio standardem w zakresie fotogrametrii 3D w archeologii. Rosjanie zdobyli rynek przebojem oferując znacznie niższe ceny niż producencie dotychczas dominujących na tym rynku programów komercyjnych oraz znacznie przyjemniejszy interfejs i „workflow” niż w przypadku  większości rozwiązań open source. Po pierwszych próbach z różnymi narzędziami, w tym Arc3D, Photosynth czy Hypr3D zatrzymałem się 123D Catch od Autodesk. Niekoniecznie dlatego, że produkował najlepsze chmury punktów, ale dlatego, że proces ich otrzymywania jest zautomatyzowany i w całości odbywa się poza moim komputerem. Miało to spore znaczenie na moim starym MacBooku, który na dwóch rdzeniach Core2Duo, przy 2 GB RAMu ledwo zipał próbując samemu wyliczać chmurę z użyciem narzędzi działających lokalnie.

Z nowym laptopem (nowy był rok temu, ale nadal to czterordzeniowy i7, karta od NVidii i 8GB RAMu, więc nie jest tragicznie) da się już zrobić coś więcej. Postanowiłem więc wypróbować rosyjski wynalazek. Zwłaszcza, że udostępniono wersję działającą pod Linuksem, która w dodatku nie wymaga instalacji.

zrzut ekranu147Tak wygląda produkcja modelu średniowiecznej jamy z Ostrowitego.

zrzut ekranu146I obciążenie systemu w trakcie pracy.

zrzut ekranu148Model przed teksturowaniem.

zrzut ekranu149Oraz po zakończeniu teksturowania. Odnoszę wrażenie, że jakość tekstury to szczególnie mocna strona programu.

zrzut ekranu150Porównanie modelu zrobionego w 123D Catch (po lewej) i PhotoScanie (po prawej). W obu przypadkach wykorzystano wyeksportowane pliki obj. DO wyświetlenia chmury użyto oczywiście Meshlaba.

zrzut ekranu151Zbliżenie detalu – fragmenty ceramiki naczyniowej. Po lewej 123D Catch, po prawej PhotoScan. Jakość tekstury w drugim przypadku jest znacznie wyższa.

zrzut ekranu152I podgląd chmury punktów (po lewej 123D Catch, po prawej PhotoScan) – gęstość punktów jest wyższa w przypadku 123D Catch.

zrzut ekranu153I siatka trójkątów.

mesh2 Inny przykład – grób 50 z Ostrowitego. Pokazuję go dlatego, że w tym przypadku 123D Catch miał olbrzymie kłopoty ze stworzeniem poprawnego modelu. Po lewej 123D Catch, po prawej PhotoScan. Różnica jakościowa, zwłaszcza w zakresie tekstury, w przypadku modelu PhotoScanu jest ewidentna.

mesh3Gęstość chmury w przypadku 123D Catch (po lewej) jest znacznie wyższa. Jednak program miał spore problemy z właściwym skonstruowaniem modelu. W przypadku PhotoScan punktów jest mniej, ale kształt jamy został zrekonstruowany znacznie lepiej.

Być może dla pełnego porównania powinienem te same modele złożyć także n.p. w Arc3D, by sprawdzić jak wygląda postęp w przypadku tego narzędzia. Jak znajdę nieco czasu, to pewnie to zrobię.

Wkrótce rozpoczynamy sezon wykopaliskowy. Wygląda na to, że okazji do dalszych prób z programem będzie jeszcze wiele.

Dokumentacja 3D z PhotoSynth – cz. 2

Dawno obiecana instrukcja tworzenia modelu z użyciem serwisu PhotoSynth, krok po kroku.

1. Pierwsza rzecz to konto w serwisie PhotoSynth. To chyba nie przekracza możliwości średnio rozgarniętego użytkownika komputera. Jest to wspólne konto z usługą Windows Live. Plusem jest to, że nie trzeba wymyślać loginu bo zostanie on utworzony z Twojego adresu mailowego.

2. W serwisie wybierz opcję Create a Synth. Serwis automatycznie poprowadzi Cię do instalacji programu PhotoSynth, który służy do ładowania zdjęć do serwisu.

3. Zdjęcia (powinien to być punkt zero). Generalnie najlepiej zrobić serię zdjęć z różnych kątów widzenia, obchodząc fotografowany obiekt dookoła i fotografując z mniej więcej tej samej odległości. Dodatkowo pulę zdjęć można wzbogacić o fotki detali. Im więcej zdjęć zrobisz tym lepiej.

4. Załaduj zdjęcia za pomocą aplikacji PhotoSynth. W programie możesz wybrać, czy swojego syntha udostępnisz innym, czy raczej pozostawisz go dla siebie oraz ramy prawne udostępnienia (np. public domain, czy Creative Commons).

5. Po przesłaniu zdjęć serwery Microsoftu wezmą się za pracę i w efekcie otrzymasz gotowego syntha zamieszczonego w serwisie. Opcje podglądu umożliwią oglądanie go jako widok 3d (rodzaj interaktywnej mozaiki ze zdjęć, widok 2d – galerię zdjęć, chmurę punktów oraz tzw. overview – chmurę punktów z wektorami załadowanych fotografii.

6. Teraz pora na import chmury punktów z serwisu Microsoft. Można to zrobić na różne sposoby, w tym tutorialu wykorzystamy jeden z nich. Ze strony Visual Experiments ściągnij Photosynth Toolkit. Paczkę rozpakuj, aby uzyskać dostęp do wszystkich zawartych w niej aplikacji. Powinno to wyglądać tak:

7. Uruchom narzędzie Download Sytnh. W pojawiającym się okienku zaznacz katalog do którego chcesz zaimportować model oraz potwierdź chęć ściągnięcia miniatur w oknie dialogowym. W innym oknie metodą kopiuj-wklej wstaw adres do Syntha.

8. Możesz następnie uruchomić opcję podglądu ściągniętego modelu (Watch PhotoSynth Output), choć nie jest to konieczne. Możesz też użyć narzędzia Download HD Synth Pictures – stworzy ono w katalogu docelowym folder HD. Jego zawartość przenieś do katalogu distort. Jeśli nie chcesz ściągać zdjęć HD to do tego katalogu wrzuć te same zdjęcia, które wysyłałeś do PhotoSyntha, w tej samej kolejności.

9. Użyj opcji Prepare for PMVS2. W jej efekcie otrzymasz nowy plik launch_pmvs_(nazwa_pliku) – jest to skrypt, który będziesz musiał uruchomić poprzez zwykły dwuklik na jego ikonce. W tym momencie pracę rozpocznie aplikacja PMVS2, która dodatkowo „podrasuje” chmurę otrzymaną z PhotoSyntha:

10. Efektem całej dotychczasowej procedury jest otrzymanie pliku o rozszerzeniu ply. To model, który możesz poddać dalszej obróbce. Do tego celu użyjemy programu MeshLab. Ściągnij i zainstaluj MeshLab (u mnie na Windows Seven 64 bit wersja 64-bitowa nie pracowała stabilnie – notorycznie się wywalała więc zainstalowałem wersję 32 bitową; istnieje też wersja Linux i MacOSX). MeshLab umożliwia pracę z chmurami punktów i jest całkowicie darmowym narzędziem. Nie wchodząc w szczegóły warto zapoznać się z podstawowymi elementami interfejsu:

Istotne będą dla nas następujące elementy:

  1. Otwieranie nowego pliku – pod tą ikoną otworzysz wygenerowany wcześniej model.
  2. Otwieranie bocznego panelu z drzewem warstw. Lepiej mieć go otwartego – pomaga orientować się w sytuacji.
  3. Zestaw ikon pomagających wybrać sposób renderowania modelu. Możesz tutaj przerzucać między trybem przeglądania chmury punktów, siatki trójkątów lub modelu z wygładzaniem i bez niego, a także włączanie lub wyłączanie tekstury.
  4. Narzędzie zaznaczania punktów (najlepiej używać w trybie pracy na chmurze punktów)
  5. Narzędzie zaznaczania trójkątów (najlepiej używać w trybie pracy na siatce trójkątów)
  6. Narzędzie usuwania zaznaczonych trójkątów
  7. Narzędzie usuwania zaznaczonych punktów.

11. Po otwarciu chmury punktów użyj narzędzi zaznaczania i usuwania punktów do wyeliminowania wszystkich dodatkowych punktów, nie pasujących do modelu:

Zaznaczone punkty podświetlają się na czerwono. Model prawdopodobnie będzie miał sporo takich „dodatkowych”, zbędnych punktów. Usuwaj rozważnie, bo opcja powrotu w MeshLab nie działa najlepiej.

12. Wejdź w: Filters – Normals, Curvatures, and Orientation – Compute Normals for Point sets, by utworzyć normale (jak to jest po polskiemu?). Należy wybrać parametr, którego domyślna wartość to 10. Można ją pozostawić.

13. Stwórz powierzchnię (siatkę trójkątów) dla chmury punktów. Wejdź w: Filters -Point Set – Surface Reconstruction: Poisson Reconstruction. W oknie dialogowym powinieneś ustawić następujące wartości: Octree Depth = miedzy 10 a 12, Solver Divide = między 7 a 8, Samples per Node = 1 (domyślne), Surface offseting = 1 (domyślne). Wciśnij Apply. Pojawi się nowy wpis w drzewie warstw na panelu bocznym – to nowo utworzony model – powierzchnia z siatki trójkątów.

Może wyjść coś takiego, jak to co na zrzucie powyżej, ale zwykle pojawia się „bąbel” jak poniżej:

14. Zlikwiduj zbędne elementy wykorzystując narzędzia zaznaczania i usuwania trójkątów:

W efekcie otrzymasz model:

15. Model może zostać pokolorowany, używając kolorów zapisanych w chmurze punktów. W tym celu wejdź w Filters – Sampling – Vertex Attribute Transfer. Pojawi się okno w którym domyślnie zaznaczona jest opcja „Transfer Color” – pozostaw ją. Wybierz „Source Mesch” – tu ustaw z rozwijanej listy nazwę pierwotnej chmury punktów. Wybierz „Target Mesh” – tu ustaw z rozwijanej listy nazwę stworzonego modelu (pomoże Ci w tym otwarty panel boczny z drzewem warstw). W rubryce „Max Dist Search (abs and %), w okienku procentów ustaw 3.000. Wybierz Apply. Po wykonaniu procedury możesz ponownie użyć tego okna, w rubryce procentów wpisując 0.300. Możesz zamknąć okno. Model będzie pokolorowany:

16. Korzystając z opcji File – Export Mesh As zapisz plik.

Uzyskujesz model, którego jakość jest gorsza niż w przypadku Arc3D, ale za to brak jest tutaj rozmaitych ograniczeń jakie wiążą się z tworzeniem modeli w tym systemie (dość surowe rygory związane ze sposobem wykonywania zdjęć). Dalsza obróbka polegająca na stworzeniu tekstur ze zdjęć powinna znacząco podnieść potencjał dokumentacyjny modelu.

Dokumentacja 3D z PhotoSynth – cz. 1

Dokumentacja 3D jest w archeologii bardzo trendy i w ogóle cool. Niestety jest też zwykle droga, bo wymaga zakupu drogiego sprzętu do skanowania 3D, lub przynajmniej nieco tańszego, ale nadal drogiego oprogramowania, jak Photomodeler Skaner (za drobne blisko 10 tys., mają specjalną stronę dla archeologów) lub ImageMaster od Topcona (też reklamują się dla archeologów, niestety ceny nie udało mi się odnaleźć) czy tańszy PhotoScan. Pierwsze dwa programy mają spore możliwości, zwłaszcza jeśli chodzi o współpracę z tachimetrami, umożliwiając w wielu przypadkach zastąpienie skanerów 3D.

Okazuje się, że trójwymiarowe modele z serii zdjęć można uzyskać też metodami nieco bardziej budżetowymi. W grę wchodzi wykorzystanie opensource’owych aplikacji Bundler i PMVS, co jednak wiąże się z koniecznością samodzielnej kompilacji (Linux) lub kombinowania ze skryptami (Windows – namiary tutaj). Oczywiście można też spróbować z ArcheOS i jego pythonowym gui na OpenSource Photogrammetry Toolkit, o którym pisałem ostatnio. Moje własne próby na wirtualizowanym ArcheOS nie przyniosły jednak pozytywnych rezultatów. Proces przygotowania modelu przebiegł dość gładko, udało się uzyskać plik ply, ale pliku nie udało się później otworzyć w Meshlab. W każdym razie dokładny tutorial pracy znajdziecie na tej stronie. Może uda się komuś z Was.

Na razie najlepszą metodą jaką znalazłem jest wykorzystanie serwisu PhotoSynth udostępnianego przez Microsoft. Jako zatwardziały linuksiarz (linuksowiec… użytkownik linuksa…) musiałem przesiąść się na czas prób na Windows, bo tylko z pokładu tego systemu można ten serwis obsługiwać. Efektem jest taki synth:

(trzeba kliknąć w odnośnik, bo WordPress nie chce puszczać synthów w opcji embed)

http://photosynth.net/embed.aspx?cid=a9696b2a-9a04-408c-a76b-81926d770303&delayLoad=true&slideShowPlaying=false

By móc go oglądać potrzebna jest wtyczka Silverlight w wersji 4, więc z pokładu linuksa będziemy musieli obejść się smakiem (wersja linuksowa czyli moonlight jest sporo z tyłu, odpowiada w. 2). W ramach rekompensaty zrzuty:

To wersja „zdjęciowa”, nazywana w systemie 3D view.

I wersja chmury punktów.

To co tutaj widać to grób 24 z Ostrowitego. Najciekawszy z obiektów grobowych, jakie do tej pory udało nam się odnaleźć.

Chmurę punktów z PhotoSynth można odzyskać. Można dokonać jej obróbki w darmowym oprogramowaniu, by uzyskać model 3D. O taki jak na zrzucie poniżej:

Tutorial krok po kroku pozwalający to uzyskać pojawi się wkrótce na blogu…

Nowe (i fajne) w ArcheOS

Jakiś czas temu pojawiła się alfa nowej wersji systemu ArcheOS. Ta wersja stanowi pewien przełom – oparto ją na Debianie (poprzednie oparte były na PClinuxOS i Kubuntu), systemie cieszącym się wielkim szacunkiem w środowisku linuksowym i środowisku Gnome (poprzednie wersje wykorzystywały KDE, początkowo w serii 3, później 4).

Idea systemu operacyjnego dla archeologów ma sens jedynie wtedy, gdy związany jest on z odpowiednim oprogramowaniem. Co mamy na pokładzie? Oprócz tego co w każdym przeciętnym linuksie, znalazły się:

  • programy CAD: qcad do rysunków 2d, z możliwością importu rastrów – nie jest to bynajmniej jakaś specjalna alternatywa dla windowsowego AutoCAD, ale da się na tym wykonywać rysunki; freeCAD – będący wciąż w dość wczesnej fazie rozwoju cad 3d;
  • programy GIS: mamy tutaj pełen zestaw od openJump, przez gvSIG, qgis po GRASS i SAGA;
  • zestaw baz danych z klasykami opensource’owych aplikacji bazodanowych;
  • zestaw aplikacji graficznych z Gimpem i Inkscape i Geegie jako przeglądarką plików graficznych;
  • zestaw programów do grafiki 3D z Blenderem, K-3D, WhiteDune i kilkoma innymi:


Prawdziwie interesujące są jednak zupełnie inne programy. Jednym z nich jest Stippler. Do czego służy to coś? Najlepiej obejrzeć filmik:

Czyżby tradycyjne rysowanie zabytków, z wielogodzinnym kropkowaniem miało przejść do historii? A może lepiej byłoby opracować to jako plugin do Gimpa?

Drugim interesującym rozwiązaniem jest zestaw do fotogrametrii bliskiego zasięgu oparty na otwartych aplikacjach, takich jak Bundler i PMVS. Są to programy obsługiwane z wiersza poleceń, jednak w ArcheOS zostały wyposażone w proste pythonowe gui:

Efektem pracy w tym programiku, obrobionej dodatkowo w Meshlab jest to co widać na filmiku:

A najlepsze jest to, że można to mieć za darmochę. Bez konieczności zakupu bardzo drogich komercyjnych aplikacji.

Oczywiście nadal to rozwiązanie ma swoje wady. Jedną z nich jest brak georeferencji modelu, a więc i brak zwymiarowania modelu, ale sądzę, że nieco pracy i samozaparcia potrafi zdziałać cuda… Od niedawna eksperymentuję z podobnymi rozwiązaniami i jeśli efekty okażą się zadowalające na blogu pojawią się wpisy na ten temat.

Teraz pytanie: czy warto? Sądzę, że warto najpierw spróbować; najlepiej na maszynie wirtualnej (możesz skorzystać z VirtualBox); zwłaszcza jeśli masz zacięcie eksperymentatora i jakieś doświadczenia z linuksem. Na pewno nie warto teraz kasować systemu z którego korzystasz po to by zrobić miejsce dla ArcheOS, z kilku powodów:

  • Przede wszystkim to wersja nadal znajdująca się w fazie alfa, a więc nie przeznaczona do pracy, a jedynie do testowania. Nie stwierdziłem na razie większych błędów (Debian to solidna podstawa) poza problemami z aktualizacją systemu, ale coś zawsze może wyskoczyć.
  • Większość z tych aplikacji bez problemów możesz zainstalować na systemie jaki obecnie używasz. Zwłaszcza, że wszystkie prawdopodobnie nie będą Ci potrzebne. Osobiście nie znajduję zastosowania dla mnóstwa programów zawartych w ArcheOS.
  • Część użytego oprogramowania to nie są najnowsze wersje. GvSIG jest w wersji 1.9, choć mamy już od pewnego czasu 1.10; Meshlab w wersji 1.2.3, podczas gdy pojawiła się już wersja 1.3 (powodem wyboru mogą być pewne problemy ze stabilnością tej wersji).

Czekam z niecierpliwością na ostateczną wersję systemu. Na pewno warto docenić pracę zespołu deweloperów.