2013-04-14 10 views
5

Opracowałem prostą aplikację na iPhone'a (do celów akademickich), która pozwala użytkownikowi zrobić zdjęcie obiektu. W momencie wykonania zdjęcia dane z akcelerometru z telefonu są również przechwytywane. Użytkownik wykona zdjęcie z góry z góry (widok z lotu ptaka), co oznacza, że ​​telefon powinien znajdować się pod kątem 90 stopni względem przedmiotu. Jednak nie można zagwarantować, że kąt będzie wynosił 90 stopni.Uzyskaj widok z góry na obraz przy użyciu danych z akcelerometru iPhone'a

Biorąc pod uwagę, że mam dane akcelerometru (wartości x, y, z), z których pochodzi zdjęcie, uważam, że istnieje sposób na skonstruowanie macierzy transformacji, aby przekształcić obraz tak, jakby został pobrany z 90 stopni kąt. Jednak nie jestem dokładnie pewien, jak skonstruować tę macierz.

Jak już wspomniałem, jest to do celów rozrywkowych/akademickich, więc gdy raz przechwycę obraz i dane x, y, z, po prostu wyślę je do jednego z moich komputerów do dalszego przetwarzania. Przetwarzanie odbywa się za pomocą Pythona i OpenCV.

Każda pomoc lub wskazówki byłyby mile widziane.

Odpowiedz

3

swoją pracę domową

czytać artykuły

Te prezentacje, które dadzą ci poczucie złożoności matematyki. - http://www.cs.auckland.ac.nz/compsci773s1t/lectures/773-GGpdfs/773GG-FundMatrix-A.pdf - http://www.robots.ox.ac.uk/~vgg/hzbook/hzbook1/HZepipolar.pdf

Odpowiedź?

Od powiązane pytanie Skewing an image using Perspective Transforms, należy użyć funkcji OpenCV cvWarpPerspective (dzięki @ jeff7)

http://opencv.willowgarage.com/documentation/geometric_image_transformations.html

trzeba jeszcze stworzyć macierz, do tego można spróbować cvGetPerspectiveTransform i tworzyć wierzchołek wejściowego z informacji o orientacji z czujnika.

Lub, jeśli kąt będzie dość małe, afinicznym transformacja może wyglądać dość dobre (cvWarpAffine z cvGetAffineTransform) http://docs.opencv.org/doc/tutorials/imgproc/imgtrans/warp_affine/warp_affine.html

Powiązane problemy