ChangeBlog  •  Archiwum  •  Kategorie  •  Artykuły  •  Galeria  •  Czytelnicy  •  Rupieciarnia
RSS wpisów  |  RSS komentarzy
Panoramy

A dzisiaj będzie Blog Konkretny(TM). Temat odcinka: pa-no-ra-my.

[LUNA]

Byłem dzisiaj u kuzyna - ma kota! A w zasadzie kocicę, Luna się zwie. Śliiiiczny nieduży kotek, rozmiauczony i w ogóle... No i mnie zaakceptowała, a ponoć nie wszystkich lubi.

Ale ja nie o tym miałem... Będąc tam wyszedłem sobie na balkon, a że jest to dziesiąte piętro, praktycznie peryferia miasta i widoki szersze niż ja mogę zobaczyć przez okno... to i cyknąłem sobie trochę różniastych fotek. A po powrocie do domu przyszło mi do głowy, że w sumie to te zdjęcia się tak na siebie nakładają i dałoby się je trochę posklejać w panoramę...

Widziałem też sporo komercyjnego softu do lepienia panoram pod Windows... Niestety, soft koszmarnie wymagający jeśli chodzi o stronę techniczną fotek. Np. bardzo często wymaga używania specjalnego statywu do panoram.

Pod linuksem, nieco ku memu zaskoczeniu, znalazłem jakiś czas temu satysfakcjonujące rozwiązanie... żadnego cudowania z Wine, emulowaniem etc. Natywne rozwiązania. Na dodatek z solidnym "powerem". Więc dzisiaj postanowiłem odświeżyć bazę oprogramowania...

Niestety, potrzebne mi programy nie są najpopularniejsze. Nie są też utrzymywane w idealny sposób. A to oznacza, że skompilowanie ich i zmuszenie do działania oznacza sporo zachodu. Oszczędzę opisów moich kłopotów, zainteresowani pewnie i tak mogą sobie wpisać "urpmi" czy "apt-get" i dostać gotowe pakieciki...

Podstawą jest zestaw panorama-tools. To narzędzia CLI, często podzielone na biblioteki i same programy narzędziowe. One mają jakiś myk w licencji, zdaje się że biblioteka jest open source ale programy już nie i dostępne tylko jako binarki... czy jakoś tak. Nie pamiętam dokładnie, bo panorama-tools mam w systemie już od jakiegoś czasu.

Ale to za mało by cokolwiek zdziałać. Potrzebny jest jeszcze front-end o nazwie Hugin. Do zbudowania wymagał fftw, boost, nagłówków SDK Javy, wxWidgets i pewnie jeszcze paru rzeczy. A potem i tak nie chciał działać w 100%, bo gdzieś coś się pokopało i wyszło na to że się "zrobi" wersja Windowsowa, z separatorem ścieżek "\" itp. Trochę tego odkręciłem, ale tylko tyle żeby podstawowe funkcje ruszyły. Na więcej nie miałem chęci. Prościej pewnie by było wziąć binarki.

No i potrzebny jest jeszcze enblend, sprytne polecenie do wyrównywania kolorów/jasności w miejscach gdzie poszczególne fotki się łączą. Ale o tym później.

Zacząłem od wybrania sobie 6 fotek które chciałem zlepić razem. Nie jest to może zamknięte 360 stopni, ba, to nie jest nawet 180 stopni, ale trudno. To dlatego, że pstrykając nie myślałem wcale o robieniu panoramy i nie miałem dostatecznie ciągłego fragmentu krajobrazu. Nie byłem pewny czy w ogóle te 6 da się połączyć, bo fotki numer 2 i 3 mają niewiele wspólnego... A miniaturki fotek które wybrałem wyglądają tak: 1, 2, 3, 4, 5, 6 (to są miniaturki, 640x479 w silnej kompresji, ja pracowałem na pełnowymiarowych obrazach 4Mpix).

Potem uruchomiłem Hugina, załadowałem do niego moje sześć obrazków, zaznaczyłem obrazek numer dwa jako bazowy (obraz bazowy to ten który będzie najmniej przekształcany - warto wybierać do tego celu obraz leżący w samym środku panoramy). Na tym etapie powinno się też ustawić linię horyzontu, ja nie musiałem nic korygować bo horyzont wypadał u mnie ładnie pośrodku (wskazanie programowi linii horyzontu gwarantuje, że w wyniku zlepiania fotek nie zostanie ona wygięta w łuk, bo to paskudnie wygląda).

Skorygować za to musiałem kąt widzenia aparatu - każde zdjęcie obejmuje jakiś kątowy wycinek widnokręgu, zwykle jest to około 40 stopni, "na zoomie" będzie to oczywiście węższy wycinek... W tagach exif mam na szczęście pozapisywaną ogniskową (w milimetrach), ale to ogniskowa faktyczna. Aparat mój nie zapisuje jednak wielkości matrycy i hugin założył, że był to zwykły format małoobrazkowy. Co jest oczywiście błędem, bo z ogniskową cyfrowego kompaktu i matrycą małoobrazkową wyszłyby zdjęcia szalenie szerokokątne. Szybko sprawdziłem jaki dla ogniskowych C-4000 jest ekwiwalent "tradycyjnego" aparatu, wyliczyłem współczynnik (~4,59) i naniosłem, jak widać to na tym screenie (crop factor). Jak widać wyszło, że jedno zdjęcie pokrywało niecałe 22 stopnie widnokręgu, co się zgadzało bo zdjęcia były robione na zoomie. Poprawne ustawienie tych kątów jest szalenie ważne - inaczej nie da się ładnie powyliczać przekształceń itp.

Następnie jedna z najmilszych części zabawy - szukanie punktów kontrolnych. Polega to na oznaczaniu na zdjęciach tych samych elementów - wtedy program może wyliczyć deformacje i tak powykrzywiać fotki, by ładnie na siebie nachodziły. Potrzebne jest trochę wprawy by wybierać odpowiednie punkty, najlepiej gdy w miarę dokładnie pokryje się całą oś na której będzie przebiegało łączenie. Wymaga to nieco plastycznej wyobraźni i otrzaskania z deformacjami wprowadzanymi przez panorama-tools - trzeba wyobrażać sobie jak fotki mogą zostać powyginane by się ładnie pokryły i zabezpieczyć punkty narażone na rozjechanie za pomocą dodatkowych "nitów". No i nie powinno się przeginać z liczbą punktów, bo jeśli się ich nawali zbyt dużo to maszyna będzie dłuuuugo przetwarzała dane. Ale samo łączenie to frajda, najpierw znakowałem punkty wspólne zdjęcia 1 z 2, potem 2 z 3 (malutko punktów wspólnych, bałem się że się rozjedzie), potem 3 z 4, 4 z 5 i 5 z 6. Tak to wyglądało w trakcie znakowania. Po prostu klika się na przemian po jednym i drugim zdjęciu (w razie potrzeby można sobie zzoomować obraz, zresztą Hugin sam to robi w odpowiednich momentach), a wbudowane algorytmy same mogą przeprowadzać "tuning" położenia punktów (zresztą, jeśli kliknie się dwa razy w jednym obrazku to program sam spróbuje znaleźć odpowiednik - i to działa zadziwiająco dobrze, możliwe jest nawet w pełni automatyczne wyszukiwanie punktów bez ingerencji człowieka, kluczem są tu algorytmy (techniki?) SIFT, działające dużo skuteczniej niż proste porównywanie kontrastów... ja jednak wolę ten tryb półautomatyczny). Przy znakowaniu można też wprowadzać specjalne punkty tworzące linie poziome i pionowe - można w ten sposób kazać programowi tak kleić zdjęcia by dwa punkty wypadły na tej samej wysokości czy szerokości. Przydatne gdy np. latarnia wychodzi wygięta w łuk. Nie musiałem z tego korzystać tym razem.

Potem przeszedłem do "optimisera" - czyli faktycznego wyliczania przekształceń geometrii i położenia obrazu. tutaj znowu trzeba mieć trochę wyczucia i obycia z programem, bo warto wiedzieć co i w jakiej kolejności liczyć. Na pewno nie należy wyliczać od razy wszystkich przekształceń. Najpierw najlepiej jest wyliczyć same przesunięcia obrazów względem siebie (na osiach X/Y), potem można dodać do tego przeliczenie deformacji beczkowatych, potem powtórzyć jeszcze raz liczenie przesunięć, potem wszystko zebrane razem itp. Dostępne jest w razie czego "undo" i bardzo sympatyczny podgląd - zwłaszcza ten ostatni jest miły, gdy widzi się jak po każdym przebiegu obliczeń panorama zaczyna wyglądać coraz właściwiej.

Ostatnim krokiem jest "zszywanie" panoramy. Tyle tylko że u mnie wywalało to Hugina (to tak odnośnie problemów z kompilacją - i tak sporo poprawiłem, bo na początku wywalało go samo ładowanie obrazków). Więc poustawiałem sobie co trzeba, wyjście do "mutiple TIFF's" i kazałem mu zapisać skrypt kontrolny dla programu PTStitcher. PTStitcher to polecenie z panorama-tools, to ono robi właściwe przekształcanie zdjęć. Hugin co prawda nie dawał rady go uruchomić, ale mógł zapisać skrypt z poleceniami dla niego. Więc PTStitchera uruchomiłem "z palca". Po chwili obliczeń (nawet nie tak długiej) otrzymałem zestaw sześciu plików TIFF - coś jakby warstwy mojej panoramy. Gdyby je wszystkie połączyć, to dałoby to taki efekt (to oczywiście znowu tylko miniaturka). Widać tutaj różnice w jasności poszczególnych fotek, prawda? Widać jeszcze który obszar pochodzi z różnych zdjęć... To dlatego, że brakuje jeszcze jednego etapu w tworzeniu panoramy - wygładzania właśnie jasności i kolorów. Dlatego też kazałem utworzyć panoramę jako zestaw TIFF-ów a nie jako np. pojedynczy JPEG. Teraz bowiem mogę je "przejechać" programem enblend. Wyrówna on te przejścia i od razu pozlepia wszystkie pliki w jeden wynikowy obraz. Po sesji z enblend miniaturka wyniku wygląda już tak. Prawda, że znakomicie załatwił sprawę?

Teraz jedynym po czym można poznać gdzie były granice fotek są te zręby na górze i dole panoramy - jak widać zdjęcia robiłem z ręki, stąd ten efekt :) Ale wystarczy panoramę wczytać do Gimpa, ustawić odpowiednio prowadnice tak by odciąć paski z góry i z dołu (tak, to przykre, ale nieuniknione przy panoramach), użyć "gilotyny" i już mam idealnie prostokątną panoramę. Trochę podrasowałem kolory, kontrast i zakończyłem delikatnym wywołaniem filtra "unsharp mask".

Gotowa, zeskalowana panoramka: 3791x600, 354KB. Musiałem zredukować jakość JPEG żeby wielkość była "do przełknięcia", ale poza tym jest chyba OK...

A dla maniaków wersja w skali 1:1, czyli 10172x1610, 2,3MB. Może lepiej nie ściągaj tego obrazka pochopnie ;) (naprawdę starałem się go okroić do rozsądnego minimum objętości)

No, to chyba wszystko. Może dodam jeszcze, że za pomocą wymienionych przeze mnie narzędzi można tworzyć panoramy (do pełnych 360 stopni), można też sklejać fotki "kafelkowe" (np. w układzie 3x3) by pozornie zwiększyć rozdzielczość aparatu, można nawet przetwarzać pojedyncze zdjęcie by przywrócić proporcje architekturze (np. zdjęcie wysokiego budynku robione z ziemi będzie się "zwężało" ku górze - Hugin może to odkręcić). Wymagania co do procesora są spore, ale idzie to znieść. Przeliczanie danych trochę trwa, ale robiłem to i na starym Celeronie 416MHz, więc "da radę". Wprawiać się można na małych panoramach :) Dużo ramu może zeżreć używanie enblend, np. do wygładzenia tej panoramy potrzebowałem jakieś 400MB, ale ona jest niemoralnie wielka. Normalnie bym zeskalował obrazki wejściowe np. do 800x600 i dopiero je sklejał

Aparat nie musi mieć specjalnych funkcji "panoramy", nie trzeba mieć profesjonalnego statywu z drogą głowicą do panoram, nie trzeba płacić za specjalizowany software. I to wszystko linuksowymi narzędziami... Już "panoramki" zrobione z dwóch zdjęć mogą wyglądać ciekawie, a co dopiero takie bardziej złożone. Ja tę opisywaną tutaj zrobiłem naprawdę "na kolanie", więc może i Ty spróbujesz?

Dopiski:

Od: Anonimowy Czytelnik Repo
Data: 20050508, 01:35
A ja mam psa (bernardyna),który też ma na imię Luna :)

Od: booster
Data: 20050508, 12:43
Dobry Boze, ta strona zapamietala jak sie nazywam!
Bardzo fajny opisik, nie wiedzialem, ze takie wolne oprogramowanie w ogole istnieje. Proponuje zrobic z tego artykul do Linux+ :-)

Od: Hoppke
Data: 20050508, 15:02
Hmm. Pomysł z artykułem do L+... w sumie czemu by nie... Mógłbym to wtedy bardziej "tutorialowo" opisać, a temat chyba całkiem fajny.

Od: booster
Data: 20050508, 15:34
Temat przede wszystkim promujacy linuxa jako naredzie profesjonalnych zastosowan przy obrobce zdjec, wiec z ideologicznego punktu widzenia bardzo wazny. No i ja bede mial co poczytac czekajac na wyklad z sieci :-) wiec ne rozmysl sie tylko!

Od: topcat
Data: 20050508, 19:49
A co to za czerwone i białe punkciki po lewej stronie tej panoramy ? Troszke mi to przypomina balony na uwięzi, ale aż tyle i w jakim celu one by tam miały być ?

Od: Hoppke
Data: 20050508, 20:22
topcat: między czerwono-białymi masztami rozciągnięte są linie wysokiego napięcia (na zdjęciu 1:1 dobrze widać charakterystyczne, ceramiczne mocowania a nawet same kable). A te czerwone i białe punkciki to bojki zawieszone na lince ponad wszystkimi kablami. Pewnie żeby żaden samolot się nie wpakował w linię wysokiego napięcia. Możliwe, że w nocy te "punkciki" dodatkowo migają światełkami...

Od: mr
Data: 20050508, 23:14
Takze proponuje artykul do L+ ;-)
Korzystajac z opisu stworzylem sobie panoramke. Nie do konca wyszlo, ale moze dlatego, ze nie za bardzo rozumiem o co chodzi z crop factorem...
Dzieki za opis. :-)

Od: n0x
Data: 20050510, 20:31
'Stary' jestes wielki ;) IMHO

Takie cuda w linuxie i to jeszcze za free ....

Od: tmjen
Data: 20050511, 13:37
"A te czerwone i białe punkciki to bojki zawieszone na lince ponad wszystkimi kablami. Pewnie żeby żaden samolot się nie wpakował w linię wysokiego napięcia."

Bojki pełnią inną funkcję, polegającą na "odstraszaniu" nisko lecących ptaków aby te nie traciły życia przy zderzaniu z liniami, których mogą nie zauważyć podczas lotu zwłaszcza w deszczu ...

Pozdrowienia

Od: Anonimowy Czytelnik Repo
Data: 20050513, 19:52
Jest mały parch pomiędzy zdjęciem 4 i 5. Na dole jest tam skręcający samochód, którego połowę ucieło i wygląda to dość zabawnie. Z tym jednak chyba można poradzić sobie tylko ręcznie. Poza tym panoramka wyszła imponująco :)

Od: Hoppke
Data: 20050513, 23:32
Brawo! Tak się zastanawiałem czy ktoś zwróci uwagę na kawałek auta :)

Mhm, tak, takie rzeczy się usuwa ręcznie. Sposobów jest kilka, zalecany to przeedytowanie składowych plików TIFF przed sklejeniem ich enblendem (można z krytycznego zdjęcia wyciąć niewygodny fragment, nie powinno być tego potem widać). Można też wyretuszować gotowy obraz w gimpie - przy tak małych detalach jak tutaj powinno wyjść dobrze...

Od: smuki
Data: 20050514, 16:44
widziałem kiedyś taką fajną panoramke z przezroczystymi ludźmi :) [podobnie jak z autem]

Od: Anonimowy Czytelnik Repo
Data: 20050515, 08:35
A ja mam zasadnicze pytanie: co to za obóz koncentracyjny?
Jak dla mnie wypisz, wymaluj - Treblinka.

Od: Anonimowy Czytelnik Repo
Data: 20050515, 08:47
A to jeszcze raz ja. Jakbyś skrobnął artykulik w tym temacie to umieść go w Linux Magazine (tańsza gazetka od L+) lub na linuxsoft.cz (nie pamiętam jak tam płacą).

Od: Rdest Matabowicz Szulc
Data: 20050516, 08:54
1. ACR: W Linux Magazine to już było o tym.
2. Moim zdaniem (a także ESM-a) to jest panorama nieskończona. Aż się prosi aby ją jakoś poprzerabiać, niebo bardziej ponurym uczynić, bardziej wyeksponować industrialność tego industrialnego krajobrazu, wzbudzić w oglądaczach uczucie bezgranicznej melancholii, wzbudzić łzę dla traw i lasów spalonych, robaczków zadeptanych, zwierzątek rozjechanych. W tej chwili to nierealistyczny krajobraz, tyle słońca w przemysłowym zagłębiu? Węszę tu gloryfikację miejskości. Dobrze węszę? Gimp w dłoń i dalej stosować efekty. :)
3. Mocno muli kompa z takim dużym obrazami w obóbce?

Od: Hoppke
Data: 20050516, 11:25
@RMS: No to LM odpada, będę musiał sprawdzić czy w L+ też już coś takiego nie szło.

Co do mulenia to trudno mi powiedzieć - obciążenie przy liczeniu deformacji idzie wytrzymać. U mnie działało na tyle szybko, że nie było mowy o skakaniu na herbatkę... Porównywałbym to z konwertowaniem paru kawałków muzycznych do ogg vorbis - gdzieś tyle to trwało. Im więcej elementów panoramy i punktów kontrolnych tym dłużej, ale idzie przeżyć.

Gorsze jest potem wygładzanie całości enblendem - żre dużo ramu. U mnie dla sześciu zdjęć w oryginalnej wielkości potrzebował ponad 300MB żeby to wszystko zrobić. A że trzeba to robić na TIFF-ach, to i z dysku kilkaset MB pójdzie jak nic. Oczywiście można od razu przeskalować fotki do np. 1024x768, wtedy te wartości drastycznie spadną.

A na "słoneczność" zagłębia to ja już nic nie poradzę. Słońce jest niepoprawne politycznie i świeci równo i na lasy, i na elektrociepłownie. Oczywiście mógłbym zdjąć kolor z nieba, przychmurzyć je, albo w ogóle pociągnąć czerwoną łuną...

PS. Zielona Góra wcale nie jest industrialna, to tylko tak wygląda ;)

Od: Ardnas
Data: 20050526, 19:25
"A ja mam zasadnicze pytanie: co to za obóz koncentracyjny?
Jak dla mnie wypisz, wymaluj - Treblinka."

Nic bardziej inteligentnego nie mogłeś wymyślić Drogi Anonimowy Czytelniku Repo?? Budynki po lewej to dawne hale falubazu - trochę już lat minęło, więc mają prawo tak a nie inaczej wyglądać - a przypominam, że w naszym kraju buduje się tylko kościoły, plebanie, stacje benzynowe i hipermarkety no i oczywiście odnawia fontanny. I pierwszy raz słyszę, by w Treblince było kiedyś Tesco, a w miejscu gdzie powstała panorama zapewniam, ze Bug nie płynie. Serdecznie pozdrawiam.

Od: fenix
Data: 20060122, 22:48
Na mnie najwieksze wrazenie robia chmury. Ten program naprawde duzo potrafi.

Od: Lukasz 'WiLQ' Wiecek
Data: 20060307, 22:44
Oo - prawie widac domek mojej dziewczyny ;)

Od: mamuta
Data: 20060804, 22:58
Dzięki starszemu artykułowi "Fotografia panoramiczna w Linuksie" wypłynąłem z chaosu. Trzymam w segregatorze i molom wara! Najcenniejsza dla mnie była wskazówka, że optymalizować należy w kilku przebiegach! Wcześniej dochodziłem do tego miejsca i klops! Teraz dorobiłem się skutecznej cudownie prostej, kątowej przystawki łączącej Olka C-70 ze statywem (gdyby komu rys z ACADa- prosze b.) ale głupio padłem w innym miejscu.
Nie umiem odpalić "Enblenda". A ściągnąłem już ze cztery wersje. Przez xpowaty mój ekran czarną zjawą przemyka nieczytelny dosowski komunikat i wał! W panelu sterowania m. programami go nie widać. Panoramki rewelacyjnie się składają ale te odcienie....
-"przejechać" programem enblend. - jak to zabrzmi w wersji dla lamerów?

Od: Michal Chocholatý
Data: 20070131, 12:27
Dzień dobry,
chce was wszystkich poinformować, iź za pare miesiecy pojawi sie polska versja mojej ksiazki o obozie natychmiastowej zaglady Treblinka. Na ksiazce brali udzial dwa z ostatnich pieciu wiezniów Treblinki na swiecie. Jednym jest pan Samuel Willenberg i drugim jest grabarz z Treblinki Eliaj Rosenberg. Cala trilogia z nazwa „Inne miejsce, inna pora“ i podnazwa poszczególnych odcinków: „Ostatnia droga,“ „To nasz los jest,“ „Pieklowidziec,“ zostala tutaj w Czechach publikowana w przestrzeni wiosny 2005 i sierpnia 2006. Jeśli ktoś z was sie zainteresuje juź przetlumaczonym odcinkiem pierwszej ksiazki „Ostatnia droga“, prosze sie odezwać na adres e-mailowy: deathcamp.treblinka@seznam.cz. Chetnie przeszle wspomniany fragment: pierwszych pare stron, bieracych akcje wlasnie w Treblince.
Michal Chocholatý

Od: pim
Data: 20070504, 17:42
naprawdę, rewelacyjny artykuł! dzięki tobie nauczyłem się robić panoramy na linuksie. jeszcze raz gratuluję i pozdrawiam.

Pozostaw dopisek: