Efektywny pomiar kątu w obrazie.

0

Witam poszukuję efektywnego algorytmu do odnajdowania kątu obrotu w obrazie. Jedyne co mi do tej pory przychodziło do głowy to binaryzacja i sumowanie wartości pixeli z obrazu lecz to jest mało efektowne rozwiązanie. Nie chce korzystać z opencv czy innych gotowych bibliotek. Dodam że nie ma linia prostych na obrazie i jedynie chyba w ostateczności mógłbym wpisać w jakieś elementy obrazu okręgi ale co robić dalej z tym... Pomoże ktoś ?

0

Co to jest kąt obrotu w obrazie?

0

Na temat odpowiadaj w postach.
To co określiłeś jest zbyt względne. Widziałeś ten popularny dom do góry nogami? Pod jakim kątem jest obrócone zdjęcie jego wnętrza i dlaczego akurat pod takim?

0

"Pod jakim kątem jest obrócone zdjęcie jego wnętrza i dlaczego akurat pod takim?" Robię zdjęcie raz a statyw ma jedną nogę krótsza przez co zdjęcie jest pod jakimś tam kątem zrobione. Żeby nie robić 2 zdjęcia chcę wykryć kąt tak by spoziomować dom.

0

Czyli masz tylko jeden obraz? I to na dodatek taki na którym nie ma linii prostych? Może być ciężko :/

0

Tak dokładnie tak :) Teraz myślę że może da się to ustalić przez przepuszczenie bucket fill na obrazie zbinarowanym by ustalić chociaż może środki obiektów i wyszukać jakieś okręgi by ustalić jakieś proste, tak chyba było w opencv.

0

Pomysł zupełnego laika w przetwarzaniu obrazów:
Dla prostej nachylonej pod pewnym kątem wyliczyć współczynnik korelacji pomiędzy odległością punktów obrazu od tej prostej i kolorem w tych punktach, oczywiście na jakiejś próbce. Zmieniać kąt prostej z jakimś skokiem i obserwować zmiany współczynnika korelacji. Znaleźć kąt, dla którego ten współczynnik jest największy.

1

Nie ma żadnych prostych w tym obrazie. Może po bucket fill na środkach tych obiektów poprowadzić prostą która przetnie jak najwięcej tych punktów w linii prostej i wtedy może iść tym tropem.

0

Chodziło mi o dowolne proste zdefiniowane w samym algorytmie, np. przechodzące przez środek obrazu, najpierw poziomą, potem nachyloną o 10 stopni, o 20 stopni itd.

2
  1. najpierw robisz obraz czarno biały (możesz na kilka sposobów)
  2. Robisz transformatę Hough (niekoniecznie na całym obrazie, ale na dużych fragmentach).
  3. liczysz średnią dla wszystkich katów (lub tylko te co cię interesują)
  4. albo jeszcze lepiej średnią dla jakiegoś kąta i kąta o 90 stopni większego.
  5. Szukasz wartości maksymalnej tej średniej dla otoczenia oczekiwanego konta (0/90 stopni).
  6. gotowe

Jeśli obraz nie ma wielu linii prostych to wykrycie kąta obrotu obrazu będzie bardzo skompilowane.
Najlepiej pokaż przykładowe obrazy.

0

Kiedyś kombinowałem z tym skryptem w imagemagick - http://www.fmwconcepts.com/imagemagick/multicrop/index.php
Spróbuj ;) Zobacz ilustracje.

0

Proszę bardzo te 2 obrazki są przykładowe.

0

Te obrazy opisaną przez mnie metodą przetworzą się bez najmniejszego problemu.
Z tą różnicą, że powinieneś szukać minimum albo robić analizę na negatywie (masz ciemne linie).

0
MarekR22 napisał(a):

Te obrazy opisaną przez mnie metodą przetworzą się bez najmniejszego problemu.
Z tą różnicą, że powinieneś szukać minimum albo robić analizę na negatywie (masz ciemne linie).

Na tych obrazkach A1, 2 nie działa kompletnie ten algorytm (rysował mi linie po całym obrazie) zacząłem się zastanawiać dlaczego, ponieważ inne obrazy działają z tym że muszą to być np sztucznie robione (odpal painta i narysuj kulki) wtedy dorysowuje proste i mam powiedzmy proste przecięte pod jakimś tam szukanym kątem. Z kolei jak zbinaryzowałem obraz, dałem negatyw oraz filtr medianowy to też miał problemy dopiero jak wpisałem okręgi w większe obiekty to od razu sobie poradził z dopisaniem prostych.
Robię coś źle ?

1 użytkowników online, w tym zalogowanych: 0, gości: 1