Pytanie:
Czy są dostępne narzędzia do automatycznego poziomowania obrazu?
pkaeding
2010-12-07 12:28:14 UTC
view on stackexchange narkive permalink

Zastanawiam się, czy są jakieś narzędzia (samodzielne, wtyczki Lightroom / Photoshop lub inne), które mogą zrobić zdjęcie, wyszukać linie, które są prawie pionowe lub poziome (np. poziomy, słupy telefoniczne itp.) i automatycznie się obracać i przyciąć obraz?

W tej chwili jest to dla mnie proces ręczny i wygląda na to, że można by go zautomatyzować.

Czy istnieje coś takiego?

Myślałem, że Magija Obrazów może to zrobić, ale potem znalazłem to: http://www.wizards-toolkit.org/discourse-server/viewtopic.php?f=1&t=13597
Pamiętaj, że obrócenie obrazu nawet o kilka stopni jest operacją destrukcyjną, porównywalną do uruchomienia filtru rozmycia na obrazie. To może być w porządku, ale w pierwszej kolejności lepiej poćwiczyć poprawianie obrazów. (I / lub użyj aparatu, który może automatycznie nieznacznie obrócić czujnik, aby dopasować go do poziomu.)
jeśli używasz interpolacji lanczos3, to bardziej przypomina to przerzucenie na nią filtru wyostrzającego :)
Oryginalny, dwuliniowy, dwuliniowy, lanczos2: http://www.sequoiagrove.dk/images/rotateinterp.jpg
Wydaje się, że digikam ma do tego wtyczkęhttps: //www.digikam.org/node/445
Pięć odpowiedzi:
Matt Grum
2010-12-07 16:17:14 UTC
view on stackexchange narkive permalink

Mogą istnieć programy, które próbują robić to, co opisujesz, ale wątpię, czy byłyby tak skuteczne. Jeśli kamera jest lekko pochylona w górę lub w dół, możesz uzyskać idealnie wypoziomowany obraz, pomimo braku pojedynczej poziomej lub pionowej linii.

Powodem tego jest to, że jeśli kamera nie jest całkowicie płaska wzdłuż osi optycznej (która biegnie równolegle do obiektywu), to maszty telegraficzne itp. nie będą pionowe na obrazie, nawet jeśli kamera jest pozioma - wszystkie linie zbiegną się w wyimaginowanym znikającym punkcie na niebie. Podobnie, jeśli aparat nie jest skierowany w stronę prawdziwej linii poziomej, obraz nie będzie renderowany poziomo.

Można zastosować bardziej wyrafinowane podejście, próbując zidentyfikować horyzont na obrazach lub nawet lepiej grupowanie linii, które mają wspólny punkt zbiegu, szacowanie kąta nachylenia, a tym samym prawidłowego kąta obrotu obrazu, ale taki proces byłby znacznie bardziej zaangażowany.

Skąd program do przetwarzania obrazu może nawet wiedzieć, co to jest „poziom”
@PatFarrell rzeczy, takie jak horyzont, budynki, słupki lub znaki itp. Powiedziałbym, że byłoby to znacznie łatwiejsze niż rozpoznawanie twarzy lub wykrywanie uśmiechu.
Tam, gdzie mieszkam, rzadko można zobaczyć horyzont, zbyt wiele drzew. Domyślam się, że 99% moich zdjęć nie ma w sobie szyldu, postu itp.
jrista
2010-12-08 00:40:08 UTC
view on stackexchange narkive permalink

Całkowicie popieram to, co stwierdził Matt Grum ... próba automatycznego „wyrównania” obrazu na podstawie czysto logicznego algorytmu byłaby naprawdę skuteczna tylko w idealnej sytuacji: gdy masz idealnie płaski horyzont w prawidłowo wyśrodkowanym obrazie, minimalizuje zniekształcenia obiektywu i perspektywy.

Rozważ scenariusz, w którym jako fotograf wykonałeś równe zdjęcie czegoś, na przykład jeziora, które nie ma idealnie „płaskiego w poziomie” brzegu ... brzeg zakręca i ostatecznie cię spotyka. Algorytm komputerowy może próbować wyrównać taki obraz, maksymalnie spłaszczając brzeg jeziora ... ale to jest niepoprawne. Brzeg jeziora powinien być przechylony i ostatecznie zakrzywiony w twoją stronę. Ludzkie oko może to wykryć, ponieważ wykorzystuje wiele wskazówek z całej sceny, a nie tylko podstawowych linii. Drobne rzeczy, takie jak wygląd „wyprostowanych” drzew (co może być bardzo ulotną rzeczą, która byłaby trudna do przyjęcia dla algorytmu komputerowego).

Myślę, że to jeden z tych dobrych argumentów przemawiających za najlepiej, jak potrafisz w aparacie, zanim wykonasz zdjęcie, aby upewnić się, że ujęcia są wyrównane. Oprócz trudności technicznych związanych z dokładnym wyrównywaniem ujęć za pomocą automatycznego algorytmu, obroty inne niż 90 stopni są jedną z najbardziej destrukcyjnych zmian, jakie można wprowadzić, ponieważ wymagają ponownego próbkowania każdego piksela w obrazie. Jeśli możesz robić zdjęcia w aparacie tak, aby były odpowiednio wypoziomowane, nie będziesz musiał wykonywać żadnych obrotów powodujących pogorszenie szczegółów obrazu.

RyanN
2013-02-20 01:44:05 UTC
view on stackexchange narkive permalink

Tak, nie zrobiłem tego i wymaga to programowania w C lub Pythonie, ale wkrótce spróbuję.

Moja sytuacja to kamera zamontowana na maszcie, który jest na boi zrobienie zdjęcia, które zawsze zawiera horyzont. To powinna być prostsza aplikacja niż Twoja.

Najpierw zajrzyj do OpenCV. W szczególności Hough Line Transform.

W moim przypadku spodziewam się, że horyzont będzie o wiele bardziej charakterystyczny niż jakakolwiek inna linia, że ​​mogę go dostroić tak, aby znaleźć tylko jedną linię. Mogę wtedy obracać się w zależności od kąta linii.

Myślę, że w swojej aplikacji odfiltrowałbyś dowolną linię o więcej niż X stopni od poziomu lub pionu.

Trochę statystyk, i być może będziesz w stanie dowiedzieć się, ile obrócić.

Jeśli chodzi o gorszą jakość obrazu, będę konwertować pliki RAW na ppm zamiast jpeg, więc nie powinno być nic poza przycinaniem.

John
2016-01-04 19:58:40 UTC
view on stackexchange narkive permalink

Moduł Lightroom Develop ma teraz wbudowaną opcję. Żadne programy zewnętrzne nie są potrzebne. Może poziomować w poziomie lub w pionie lub, przy pełnej automatyce, kompensuje również rozbieżne linie itp. Jest dość dobry na obrazach, na których oczekiwane pionowe i poziome linie są oczywiste.

LogicDaemon
2017-11-26 19:52:22 UTC
view on stackexchange narkive permalink

Zdjęcia Google https://photos.google.com/ mogą to zrobić również w dzisiejszych czasach. Brak obsługi formatu RAW i przetwarzania wsadowego, a opcja automatycznego poziomowania wyświetla się tylko wtedy, gdy ma się ochotę.

level option auto



To pytanie i odpowiedź zostało automatycznie przetłumaczone z języka angielskiego.Oryginalna treść jest dostępna na stackexchange, za co dziękujemy za licencję cc by-sa 2.0, w ramach której jest rozpowszechniana.
Loading...