две версии recoverypose, дающие разные результаты - PullRequest
0 голосов
/ 26 апреля 2019

Я пытаюсь запустить набор данных одометрии Китти, используя python и opencv. Я скопировал некоторый код из https://github.com/uoip/monoVO-python, который работает довольно хорошо.Я хотел взглянуть на облако точек, поэтому я попытался использовать другую версию «coverpose », которая предоставляет облако точек.Ключевая часть кода ниже

def processFrame(self, frame_id):
    self.px_ref, self.px_cur = featureTracking(self.last_frame,    self.new_frame, self.px_ref)
    E, mask = cv2.findEssentialMat(self.px_cur, self.px_ref, focal=self.focal, pp=self.pp, method=cv2.RANSAC, prob=0.999, threshold=1.0)
    # original version of recoverpose
    _, R, temp, mask1 = cv2.recoverPose(E, self.px_cur, self.px_ref, focal=self.focal, pp = self.pp)
    t = temp.ravel()
    # new version of recoverpose
    _,R1, temp1, mask1, foundPts = cv2.recoverPose(E,self.px_cur, self.px_ref, 
                                                cameraMatrix   = self.cam.K,
                                                distanceThresh = 0.0,
                                                mask = mask)
    t1 = temp1.ravel()

    print('R,t diff')       
    print(R-R1)
    print(t-t1)
    print('R,R1')
    print(R)
    print(R1)

Программа начала производить мусор, поэтому я добавил операторы печати.Выходные данные первых двух вызовов приведены ниже.

R, t diff [[2. 0. -0.04]

[- 0.2. 0,05]

[- 0,03 0,06 0.]]

[0.0. 0.]

R, R1

[[1. 0. -0.]

[- 0.1. -0.]

[0. 0. 1.]]

[[- 1.-0.0.04]

[0. -1.-0,06]

[0,04 -0,06 1.]]

R, t diff

[[0.0. 0.]

[0.0. 0.]

[0.0. 0.]]

[0.0. 0.]

R, R1

[[1. -0.-0.]

[0. 1. -0.]

[0. 0. 1.]]

[[1. -0.-0.]

[0. 1. -0.]

[0. 0. 1.]]

Новая строка иногда, но невсегда давая другую позу, которая выглядит за камерой.Я пытался не использовать маску (mask = None), и я пробовал разные значения для distanceThresh.Я не могу найти значение по умолчанию для distanceThresh.У кого-нибудь есть идеи относительно того, что может быть не так или как действовать?

...