2014-04-08 26 views
7

Niedawno badałem model kamery otworkowej, ale myliłem się z modelem dostarczonym przez OpenCV i "Wielokrotnym widokiem" geometrii w podręczniku komputerowym ".Układ współrzędnych aparatu otworkowego model

Wiem, że poniższe zdjęcie jest uproszczonym modelem, który zmienia położenie płaszczyzny obrazu i ramy kamery. Aby uzyskać lepszą ilustrację i zrozumienie oraz biorąc pod uwagę główny punkt (u0, v0), relacja między dwiema ramkami to x=f(X/Z)+u0 i y=f(Y/Z)+v0.

enter image description here

Jednak byłem naprawdę mylić bo normalnie obraz współrzędnych w postaci 4 ćwiartce współrzędnych jako poniższym jednym!

Czy mogę bezpośrednio zastąpić (x, y) w poniższej definicji powyższy "równoważny" model otworkowy, który nie jest tak naprawdę przekonujący?

enter image description here

Poza tym, jeśli obiekt znajduje się w obszarze (+ X + Y) kwadrancie w aparacie współrzędnych (oczywiście Z> f) w równoważnej modelu, powinny znajdować się na prawo -półpłaszczyzna współrzędnej obrazu. Jednak taki obiekt na obrazie zrobionym przez normalną kamerę, powinien znajdować się na lewej połowie. Dlatego dla mnie ten model nie jest rozsądny.

Wreszcie, starałem się wyprowadzić na podstawie oryginalnego modelu jako następujący.

enter image description here

Rezultatem jest x1=-f(X/Z) i y1=-f(Y/Z).

Następnie próbowałem znaleźć relację między współrzędnymi (x2, y2) i współrzędną kamery. Wynikiem jest x2=-f(X/Z)+u0 i y2=-f(Y/Z)+v0.

Pomiędzy współrzędnymi (x3, y3) i współrzędnymi kamery, wynikiem jest x3=-f(X/Z)+u0 i y3=f(Y/Z)+v0.

Bez względu na to, który układ współrzędnych próbowałem, żadna z nich nie jest w postaci x=f(X/Z)+u0 i y=f(Y/Z)+v0, które są dostarczane przez niektóre podręczniki CV.

Ponadto wyniki rzutowania współrzędnych (x2, y2) współrzędnych lub współrzędnych (x3, y3) również nie są uzasadnione z tego samego powodu: obiekt w regionie (+ X, + Y, + Z) we współrzędnych kamery powinien "pojawić się" na lewej połowie obrazu wykonanego aparatem.

Czy ktoś może wskazać to, co źle zrozumiałem?

+0

To pytanie wydaje się być nie na temat, ponieważ dotyczy matematyki i nie jest pytaniem programistycznym. – Aurelius

+0

@Aurelius Gdzie byłoby dobre miejsce na to pytanie? – AldurDisciple

+0

Myślę, że to właściwe miejsce - w rzeczywistości pytanie ma na celu opisanie implementacji modelu kamery opencv, która jest dokładnie modelem kamery otworkowej. – marol

Odpowiedz

6

W końcu zorientowałem się w tym problemie i udowodniłem, że moja interpretacja jest właściwa dzięki wdrożeniu papieru przez Z. Zhanga, Elastyczna kalibracja kamery poprzez wyświetlenie płaszczyzny z nieznanych orientacji. Międzynarodowa konferencja na temat wizji komputerowej (ICCV'99), Korfu, Grecja, strony 666-673, wrzesień 1999 r..

Pozwól mi wyjaśnić wszystko od zera. Poniższe zdjęcie przedstawia oryginalny model kamery otworkowej i rzutowany wynik na matrycy. Jednak nie jest to coś, co powinniśmy zobaczyć na "obrazie".

figure1

Co powinniśmy zobaczyć to

figure2

Porównując rysunek 1 i 2, należy zauważyć, że ten obraz jest up-side-down i po lewej stronie prawej. Mój przyjaciel, który pracuje dla firmy zajmującej się matrycą CMOS, powiedział mi, że są wbudowane funkcje automatycznego odwracania postrzeganego obrazu.

Ponieważ chcemy modelować związek między współrzędną obrazu a współrzędną światową, należy bezpośrednio potraktować czujnik obrazu jako płaszczyznę projekcji. To, co wcześniej wprawiło mnie w zakłopotanie, to projekcja zawsze ograniczona do strony projekcyjnej i to wprowadziło mnie w błąd, by geometrycznie zrozumieć wyprowadzenie.

Teraz powinniśmy patrzeć z "tyłu" czujnika obrazu jako niebieską strzałkę (View Perspective).

W rezultacie do figury 2. współrzędnych X1 Y1 jest w kierunku prawej strony i w dół, odpowiednio, tak, że wzory są

x1=-f(X/Z) 
y1=-f(Y/Z) 

Teraz, w odniesieniu do współrzędnych XY, równanie jest

x=f(X/Z)+u0 
y=f(Y/Z)+v0 

które są tym, co opisano w dokumencie.

Teraz przyjrzyjmy się odpowiednikowi, który nie istnieje w świecie rzeczywistym, ale pomaga w interpretacji wizualnej.

enter image description here

Zasada jest taka sama. Spójrz od środka projekcji i w kierunku płaszczyzny obrazu. Rezultatem jest

figure 4

gdzie przewidywana „F” jest z prawej strony lewej. równania są

x1=f(X/Z) 
y1=f(Y/Z) 

Teraz, w odniesieniu do współrzędnych x-y, równanie jest

x=f(X/Z)+u0 
y=f(Y/Z)+v0 

które są co opisano papieru.

Last but not least, ponieważ jednostka w świecie współrzędnych mm lub cale i jedna w obrazie współrzędnych pikseli, jest współczynnik skalowania, gdzie niektóre książki opisują jako

x=a*f(X/Z)+u0 
y=b*f(Y/Z)+v0 

lub

x=fx(X/Z)+u0 
y=fy(Y/Z)+v0 

gdzie fx=a*f, fy=b*f

1

To jest rzeczywiście znacznie prostsze: współrzędne Twojego obiektu mają być w współrzędne świata kamery, który jest układem współrzędnych, którego oś X i Y są równoległe do odpowiedniej osi w płaszczyźnie obrazu, np.tutaj: http://homepages.inf.ed.ac.uk/rbf/CVonline/LOCAL_COPIES/OWENS/LECT9/node2.html

+0

Witamy w SO! Tutaj zwykle staramy się unikać odpowiedzi tylko na łącza, więc odpowiedzi mogą być hostowane tutaj, na wypadek, gdyby cele się zmniejszyły. Możesz zachować link, ale czy mógłbyś podsumować niektóre podstawowe informacje z linku? –