Jak upakować na zdjęciu domek, dziadka, kota, krowę i doniczkę
Lubiących efektowne manipulacje na ekranie jakiś czas temu zachwyciły przykłady działania nowego algorytmu skalowania obrazków (zdjęć) z uwzględnieniem priorytetu zawartości (content aware image sizing). Niedługo po przykładach filmowych, pojawiły się programy do takiej obróbki zdjęć – w tym i plugin do Gimp’a. Jego użytkowanie sprowadza się to do tego, że przy zmianie wymiarów (nieproporcjonalnie) zdjęcia można określić, które elementy na zdjęciu są ważne i mają pozostać w niezmienionych proporcjach, a program/plugin resztę materiału dostosuje do naszych potrzeb.
Liquid Rescale GIMP Plugin można pobrać z tej strony, w wersji Ubuntu (Feisty/Gutsy), Debian, Slackware, Fedora itp.
W przypadku Ubuntu i Debiana można samodzielnie pobrać i zainstalować paczkę (za pomocą dpkg lub gdeb), lub dodać stosowne repozytoria do swoich /etc/apt/source.list :
# Ubuntu Gutsy
deb http://ppa.launchpad.net/jussi01/ubuntu gutsy main restricted universe multiverse
#Debian Etch
deb http://svetlyak.ru/debian etch main contrib non-free
Po uzupełnieniu source.list, pozostaje :
sudo apt-get update
sudo apt-get install gimp-lqr-plugin
Nienawidzący konsoli mogą zrobić to samo w Synapticu. UWAGA – gimp-lqr-plugin a nie gimp-LPR-plugin 🙂
Po zainstalowaniu uruchamiamy Gimpa, wczytujemy jakieś zdjęcie i szukamy owego plugina. I tu niespodzianka, instaluje się on bardzo intuicyjnie … W menu ‘Warstwa->Liquid Rescale’. Jak dla mnie odpowiedniejsze miejsce byłoby ‘Filtry’, ale można nad tym przejść do porządku dziennego.
Zatem, do czego ta metoda zmiany rozmiarów się przyda ? Zerknijcie na tę fotkę :
Ot, owca jaka jest, każdy widzi. Ale przypuścimy, że z tego zdjęcia (1024×768) chcemy zrobić paseczek o wymiarach 400×768 – czyli znacznie zmniejszamy szerokość, przy zachowaniu wysokości. Oczywiście, cały trick polega na tym, aby zachować całe stadko na zdjęciu, dlatego kadrowanie odpada. Zwykła metoda zmiany rozmiaru da nam taki rezultat :
Czyli, do niczego się to nie nadaje. Użyjmy może Liquid Rescale ? Bez parametrów i zaznaczania obszarów istotnych, rezultat jest podobny, czyli słaby :
Ale istotą pracy z pluginem jest możliwość określenia, co na zdjęciu jest dla nas ważne, a co nie. Zaznaczymy (czarne plamy) zatem te owieczki które chcemy mieć na zdjęciu wynikowym i ten jeden kawałek owcy, który z lewej strony nam przeszkadza (czerwona plama).
Istotny niuans tego zaznaczania – te ‘plamy’, czyli obrys elementów zdjęcia wykonujemy na osobnych warstwach. Czyli, otwieramy okienko z warstwami, dodajemy dwie nowe warstwy, przełączamy się na pierwszą i malujemy na czarno pędzelkiem po obiektach. Następnie przełączamy się na kolejną warstwę i malujemy po obiekcie na czerwono :
Przełączamy się z powrotem na warstwę źródłową ze zdjęciem, i wywołujemy Liquid Rescale. W opcjach zaznaczamy ‘Activate feature preservation’ i z listy pod tą opcją wybieramy warstwę, gdzie mamy zaznaczone obiekty, które mają pozostać niezmienione. Następnie zaznaczamy ‘Activate feature discard’ i podobnie, z list pod spodem wybieramy warstwę z obiektami zaznaczonymi jako nieważne :
A efekt końcowy naszych graficznych manipulacji rzeczywistością :
Cześć zostawiamy, a cześć nie :
Jak można zauważyć, stadko jest na zdjęciu w komplecie (poza tą jedną którą oznaczyliśmy na czerwono), owce nie są zwyginane przez algorytmy zmniejszające, obrazek mimo to zmniejszył się o prawie 60% szerokości (z 1024 pikseli do 400 pikseli). Całość zdjęcia, czyli tło od lewa do prawa uległo ściśnięciu, bez większych deformacji. Wprawne oko wychwyci jednak miejsca na zdjęciu, gdzie widać efekty łączenia/zgniatania zawartości zdjęcia.
Do zaawansowanej obróbki graficznej i dla fotografów ten plugin nie ma zastosowania – widać ingerencję w zdjęcie. Jednak na użytek ‘domowy’ – zdjęcia na strony WWW, banery, itp. może się przydać. Inne zastosowanie, to dynamiczne skalowanie zawartości np. stron internetowych, a ściślej pisząc – ich graficznej treści. Jednak, na to przyjdzie poczekać, bo póki co algorytm mocno przyciska CPU do ściany – mój jeden rdzeń w Core Duo aż piszczy (dla Gimpa multithread to temat przyszłości), a skalowanie nieco trwa (ok. 10 sekund ?).