Photoshop nareszcie pozwala na edycję panoram sferycznych

Długo czekałem na tę funkcję. Dzisiaj Photoshop zaktualizował mi się do październikowej wersji. Teraz natywnie, czyli bez dodatkowych wtyczek, obsługuje edycję obrazów sferycznych zapisanych w odwzorowaniu równoodległościowym. Opisuję, co to oznacza i jak to zrobić. Przy okazji wspomnę o programie Affinity Photo, który tę funkcję posiada już od zeszłego roku.

Jeśli nie interesuje Cię długi wywód na temat aspektów technicznych i historii, lecz chcesz zobaczyć, jak to się po prostu robi, to zachęcam do zejścia na dół strony z częścią praktyczną.

Czym jest odwzorowanie równoodległościowe?

Odwzorowanie równoodległościowe (ang. equirectangular projection) jest sposobem odwzorowania obrazu sferycznego do bitmapy. Obraz sferyczny może być zarejestrowany przez aparat sferyczny, sklejony z serii zdjęć wykonanych zwykłym aparatem lub wygenerowany przez program 3D. Naturalnym „pojemnikiem” obrazu sferycznego jest kula – to na jej ścianach znajduje się obraz sferyczny (sfera to powierzchnia kuli). My, jako widzowie obrazu sferycznego, jesteśmy w samym jej środku. Programy do grafiki rastrowej operują na płaskich plikach o wymiarach X :Y (szerokość:wysokość). Przedstawienie zdjęcia sferycznego w odwzorowaniu równoodległościowym powoduje sprowadzenie obrazu do płaskiej bitmapy w proporcjach 2:1. Taki obraz może zostać obrobiony przez każdy program do grafiki bitmapowej. Odwzorowanie równoodległościowe jest stosowane w… mapach.

Źródło: Wikipedia za NASA/Goddard Space Flight Center

Co oznacza edycja obrazów sferycznych w programie Adobe Photoshop?

Dlaczego piszę o rewolucyjnej funkcji edycji obrazów sferycznych w Photoshopie, skoro obraz zapisany w odwzorowaniu równoodległościowym jest zwykłym plikiem graficznym i nawet w programie Paint można wykonać jego edycję? Bo teraz staje się to zdecydowanie łatwiejsze!

Adobe w najnowszej wersji Photoshopa wprowadza nową warstwę panoramy sferycznej. Po jej włączeniu obraz zapisany w odwzorowaniu równoodległościowym możemy oglądać w naturalny sposób, tak, jak to się robi np. na Google Street View. Aby zobaczyć wybrany wycinek sfery, przeciągamy myszką w interesujący nas obszar. Można zmieniać wielkość prezentowanego wycinka sfery, zmieniając ogniskową wirtualnego obiektywu, poprzez który patrzymy na obraz sferyczny. Ostatecznie zmieniamy pole widzenia – im mniejsza ogniskowa, tym bardziej pomniejszony i zniekształcony obraz.

Na daną część obrazu sferycznego możemy nie tylko patrzeć, ale i ją edytować. Taka edycja na części obrazu sferycznego jest zdecydowanie łatwiejsza niż miałoby się to odbywać na całej powierzchni zdjęcia w odwzorowaniu równoodległościowym. Przede wszystkim obraz przedstawiony jest w naturalniejszy sposób, widzimy go okiem obiektywu. W odwzorowaniu równoodległościowym też możemy edytować zdjęcie, ale należałoby to zrobić z zachowaniem krzywizn, jakie to odwzorowanie posiada z definicji. W warstwie obrazu sferycznego, jaką wprowadził Photoshop, nie musimy się tym martwić. Gdy skończymy pracę na danym obszarze, program automatycznie dokona konwersji do odwzorowaniu równoodległościowego. I to jest piękne. Ale szczerze, trochę późno… chociaż lepiej późno niż wcale.

To już było

Pierwszym programem, który dawał możliwość edycji wybranego wycinka sfery był PTEditor napisany przez prof. Helmuta Derscha (ojciec rozwiązań do tworzenia i prezentacji zdjęć sferycznych). Było to w latach 1998-2001. Piszę „możliwość edycji”, ponieważ jego zadaniem był tylko eksport i import wybranego widoku. Procedura edycji wyglądała tak, że wybierało się wycinek sfery, eksportowało ją do pliku, obrabiało w ulubionym programie graficznym, a następnie importowało z powrotem w to samo miejsce sfery. Program był/jest częścią zestawu aplikacji do tworzenia panoram sferycznych Panorama Tools prof. Helmuta Derscha napisanych w Javie. W zestawie były wtyczki do programów Photoshop i Gimp. W związku z problemami patentowymi oprogramowanie nie było rozwijane i zjadł je po prostu czas. Wspomniany PTEditor miał problemy z coraz to wyższymi rozdzielczościami panoram, a kolejne wersje systemu operacyjnego, Javy, programów korzystających z wtyczek, wcale nie ułatwiały sprawy i działanie programu było coraz bardziej problematyczne. Ostatnie chwile z PTEditorem pamiętam tak, że próbowałem rozszerzać pamięć dla maszyny wirtualnej Javy z włączoną emulacją systemu Windows 98/2000. 🙂 Przeszukując zasoby Internetu, trafiłem na film z 2007 r. z konferencji w Berkeley przedstawiający wysokopoziomowo algorytmy zastosowane w Panorama Tools – prezentującym jest oczywiście sam prof. Helmut Dersch.

Tak naprawdę najczęstszą operacją na wycinku sfery dla mnie (i pewnie dla wielu innych amatorów fotografii sferycznej) były poprawki w nadirze, czyli spodzie sfery, gdzie zwykle stał statyw. Po PTEditorze zadowoliłem się zwykłym przekształcaniem panoramy w odwzorowaniu równoodległościowym do odwrotnego odwzorowania typu rybie oko, czego efektem była możliwość łatwej edycji nadiru. Po dokonanych klonowaniach i łatkach wracało się do obrazu w odwzorowaniu równoodległościowym. Są to czasy zestawu operacji dla programu Photoshop o nazwie Domemaster Photoshop Actions Pack. Jeśli faktycznie była potrzeba wykonania poprawy w innych miejscach, to albo starałem się poprawnie złożyć panoramę (jeśli to był problem złączeń), albo starałem się wykonywać poprawki na odwzorowaniu równoodległościowym z wykonaniem wymaganych krzywizn – tutaj można od razu się domyśleć, że to po prostu czasami nie mogło wyjść.

W końcu nadeszła sytuacja, kiedy musiałem dokonywać edycji panoramy sferycznej w innym miejscu niż nadir czy zenit. Aparat Panono i chmura producenta wyprodukowały mi zdjęcie z błędami złączenia, na którym bardzo mi zależało. Programy do sklejania panoram sferycznych z serii pojedynczych zdjęć również dobrze sobie z materiałem nie radziły, więc pozostała mi tylko edycja pliku graficznego. Niestety, nie wchodziła też w grę edycja zdjęcia w odwzorowaniu równoodległościowym, bo były to m.in. źle złożone twarze (nie można było sobie pozwolić na jakieś błędy). Miałem trochę szczęścia i w roku 2016 powstała wersja programu Affinity Photo, która umożliwia edycję panoramy sferycznej w podobny sposób, jaki to może robić teraz Adobe Photoshop. Affinity Photo było przed Photoshopem! Dodatkowo za Affinity Photo zapłacimy tylko raz (obecnie 239,99 PLN), a Photoshopa możemy mieć tylko w płatnej subskrypcji miesięcznej w ramach jednego z planów tzw. Creative Cloud (najtaniej 50 zł/mc). Warto zastanowić się nad Affinity Photo, jeśli nie używa się niczego ze stajni Adobe.

Praktyka: Adobe Photoshop

Tworzenie warstwy panoramy

Otwieramy panoramę i wybieramy z menu 3D/Panorama sferyczna/Nowa warstwa panoramy z zaznaczonych warstw.

Jeśli panorama nie jest otwarta w programie, to wybieramy z menu 3D/Panorama sferyczna/Importuj panoramę…

Wynik operacji:

Nanoszenie zmiany

Przykładem jest tekst „Ala ma kota”. Utworzony tekst został scalony z warstwą Tło.

Dwukrotne kliknięcie SphericalMap spowoduje powrót do widoku obrazu w odwzorowaniu równoodległościowym. Tekst przyjął krzywizny charakterystyczne dla tego odwzorowania.

Tutorial wideo

Polecam ten tutorial, który w 15 minut przedstawia najważniejsze funkcje związane z warstwą obrazu panoramy. Pokazane jest tam m.in. jak wprowadzać zmiany do panoramy na warstwach:

Praktyka: Affinity Photo

Widok panoramy

Aby przejść do widoku panoramy w Affinity Photo, należy wybrać opcję z menu Layer/Live Projection/Equirectangular Projection.

Wynik operacji:

Nanoszenie zmiany

Przykładem jest tekst „Ala ma kota”. Utworzony tekst został scalony z warstwą Tło (Background).

Aby wrócić do widoku w odwzorowaniu równoodleglościowym, należy wybrać pozycję z menu Layer/Live Projection/Remove Projection.

Tekst przyjął krzywizny charakterystyczne dla odwzorowania równoodleglościowego.

Tutorial wideo

Ten prawie 7-minutowy film pokaże funkcję edycji panoramy w programie:

Wady bieżących rozwiązań

Zarówno Adobe Photoshop, jak i Affinity Photo nie są idealne w edycji zdjęć panoramicznych. Właściwie wadą jest ich zaleta, czyli edycja wybranego fragmentu sfery, tylko jej. Jeśli zastosujemy więc jakiś filtr, który ma dotyczyć całości obrazu, to będzie zastosowany tylko na wybranym fragmencie sfery. Nie zostanie zastosowany do całej panoramy 360°. Jeśli wrócimy do pełnego widoku o projekcji równoodległościowej, to filtry będą traktowały tę panoramę jako zwykły plik graficzny. Efektem tego są widoczne granice złączenia początku panoramy z jej końcem. Za przykład weźmy filtr wyostrzający. Po jego zastosowaniu i zapisaniu pliku panoramy w programie prezentującym panoramę zobaczymy linię złączenia lewej krawędzi panoramy z prawą. Myślę, że to będzie kolejny krok, kiedy filtry będą wiedzieć, że dla obrazu sferycznego, obraz panoramy nie kończy się z pikselami na krawędzi bitmapy – tylko dzięki temu po zastosowaniu filtru złączenia pozostaną takimi, jakimi były wcześniej. Opcji tej szczególnie brakuje mi w Adobe Lightroom, gdzie przy edycji zdjęcia unikam suwaków Clarity i Vibrance, które łatwo wywołują ten niepożądany efekt.