2010-09-13 13 views
11

Mamy siatkę z czerwonymi kwadratami. Znaczy to, że mamy tablicę 3 kwadratów (z kątami == 90 stopni), które, jak wiemy, mają ten sam rozmiar, leżą na tej samej płaszczyźnie i przy tym samym obrocie względem płaszczyzny, na której leżą, i nie są usytuowane na tej samej linii samolot.Czy istnieje algorytm rozwiązywania takiego problemu z rekonstrukcją geometryczną projekcji?

Mamy rzut przestrzeni zawierającej płaszczyznę z kwadratami.

im 1

Chcemy zwrócić płaszczyzny projekcji z kwadratów tak, że my go zobaczyć jak to nas stoi w ogóle musimy formułę do toczenia każdy punkt tej oryginalnej płaszczyzny projekcji tak, że będzie skierowana nas jak na obrazku poniżej.

Jakie formuły można zastosować w celu rozwiązania tego problemu, jak go rozwiązać, czy ktoś miał kiedyś takie problemy?

im 2

+2

Czy chcesz dokonać transformacji w przestrzeni ekranu (piksele, 2d) lub w tempie światowym (3D)? –

+0

Jakie struktury danych posiadasz jako dane wejściowe? Zwrotnica? Piksele? Proste linie? –

+0

Proste linie i obiekty (ale generuję tham z pikseli =)) – Rella

Odpowiedz

6

Jest to szczególny przypadek znalezienia mapowania między czworoboków, które zachowują linii prostych. Są to na ogół nazywane przekształcenia homograficzne. Tutaj jeden z quadów to kwadrat, więc jest to popularny specjalny przypadek. Możesz używać tych terminów ("quad to quad", etc), aby znaleźć wyjaśnienia i kod, ale oto niektóre z nich.

Perspective Transform Estimation

a gaming forum discussion

extracting a quadrilateral image to a rectangle

Projective Warping & Mapping

ProjectiveMappings for ImageWarping Paul Heckbert.

Matematyka nie jest szczególnie przyjemna, ale nie jest też trudna. Możesz również znaleźć kod z jednego z powyższych linków.

+0

OK, +1 za bycie prawym, ale komentarz na temat matematyki jest nieprzyjemny, jest to dość łagodny. Nie jest to trudne w zestawie, ale poruszanie się pomiędzy stroną analityczną (czystą matematyką), dyskretnymi reprezentacjami komputerów, a następnie strasznie nierozwiązana reprezentacja renderowanego obrazu będzie bardzo, bardzo brzydka. Ponadto, matematyka staje się niezwykle krucha, gdy kamera jest ustawiona "interesująco", tj. "Rybie oko" lub ekstremalny teleobiektyw - w dolnej linii jest to, że charakterystyka obrazu musi być bardzo starannie ograniczona, aby to zadziałało.

+0

@ Mark: uzgodnione - OP nie było tak strasznie jasne o ograniczeniach i celach. I prawdopodobnie problem polega na tym, że biorąc pod uwagę perspektywę 3 siatki kwadratów czerwonych kwadratów, 3 czerwone kwadraty stają się widokiem 2D. Może to mniej problem z przetwarzaniem obrazu, a raczej problem z rejestracją. Tak więc poczekamy na wyjaśnienie OP. W międzyczasie to było moje najlepsze ukłucie w odpowiedzi. – brainjam

+1

Formuły do ​​ponownego obliczania są zbyt intensywne obliczeniowo, aby przekształcić POINTS, jak żądał OP ... ale w przypadku problemu, o którym mowa w PO, uważam, że transformacja linii prostych jest drogą do zrobienia. Zrobiłem matematykę dla transformacji rzutowej z dwoma punktami ucieczki (przy użyciu CAS), ale jest zbyt długi i nudny, aby opublikować jako odpowiedź tutaj. –

Powiązane problemy