Stereo-Kalibrierung Opencv Python und Ungleichheit Anzeigen

Ich bin daran interessiert, die Unterschiede anzeigen einer Szene. So starten Sie mit, ich habe stereo-Kalibrierung mit dem folgenden code (ich schrieb es selbst mit ein wenig Hilfe von Google, nach nicht zu finden, jede hilfreiche tutorials für das gleiche geschrieben in python, OpenCV 2.4.10).

Ich habe Bilder von einem Schachbrett gleichzeitig auf beide Kameras und gespeichert als Links*.jpg und rechts*.jpg.

import numpy as np
import cv2
import glob

# termination criteria
criteria = (cv2.TERM_CRITERIA_EPS + cv2.TERM_CRITERIA_MAX_ITER, 30, 0.001)

# prepare object points, like (0,0,0), (1,0,0), (2,0,0) ....,(6,5,0)
objp = np.zeros((6*9,3), np.float32)
objp[:,:2] = np.mgrid[0:9,0:6].T.reshape(-1,2)


# Arrays to store object points and image points from all the images.
objpointsL = [] # 3d point in real world space
imgpointsL = [] # 2d points in image plane.
objpointsR = []
imgpointsR = []

images = glob.glob('left*.jpg')

for fname in images:
    img = cv2.imread(fname)
    grayL = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)

    # Find the chess board corners
    ret, cornersL = cv2.findChessboardCorners(grayL, (9,6),None)
    # If found, add object points, image points (after refining them)
    if ret == True:
        objpointsL.append(objp)

        cv2.cornerSubPix(grayL,cornersL,(11,11),(-1,-1),criteria)
        imgpointsL.append(cornersL)


images = glob.glob('right*.jpg')

for fname in images:
    img = cv2.imread(fname)
    grayR = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)

    # Find the chess board corners
    ret, cornersR = cv2.findChessboardCorners(grayR, (9,6),None)

    # If found, add object points, image points (after refining them)
    if ret == True:
        objpointsR.append(objp)

        cv2.cornerSubPix(grayR,cornersR,(11,11),(-1,-1),criteria)
        imgpointsR.append(cornersR)



retval,cameraMatrix1, distCoeffs1, cameraMatrix2, distCoeffs2, R, T, E, F = cv2.stereoCalibrate(objpointsL, imgpointsL, imgpointsR, (320,240))

Wie kann ich das beheben die Bilder? Welche weiteren Schritte sollte ich tun, bevor Sie zu finden, die die Diskrepanz Karte? Ich habe irgendwo gelesen, dass während der Berechnung des disparitätsbildes, die Funktionen erkannt werden, die auf die beiden Rahmen liegen auf derselben horizontalen Linie. Bitte helfen Sie mir hier draußen. Jede Hilfe wäre sehr geschätzt werden.

nur ein Hinweis, an diesem Punkt habe ich eine Menge Erfahrung mit, und fühlen sich wohl sagen, dass die Bild-Berichtigung-code in opencv ist nicht so robust wie die Bouguet matlab-toolbox. Möglicherweise finden Sie große overfitting in opencv, wenn Sie Ihre Daten gut, in dem Fall die Nachbesserung fehl, und Sie erhalten meist schwarze Bilder. Das Bouguet toolbox ist nützlich, weil Sie exclude-Parameter aus der regression mit mehr Kontrolle als die opencv, um zu reduzieren überanpassung an die stereo-Kalibrierung. Vielleicht werden Sie nicht finden, dieses problem.

InformationsquelleAutor Clive | 2015-01-29

Schreibe einen Kommentar