diff --git a/Bachelorarbeit.pdf b/Bachelorarbeit.pdf index 504e60f51727b6fbc9742d3c0db8dba7712a8174..b4a74b6dfebd4cbce7504af1481307f5e8b06258 100644 Binary files a/Bachelorarbeit.pdf and b/Bachelorarbeit.pdf differ diff --git a/chap/kalibrierung.tex b/chap/kalibrierung.tex index e2a0dba2d0b86330412f3c6c5050b3d3f760ffcb..217c409e5f3ae8075649af5b499da2a80e8d032f 100644 --- a/chap/kalibrierung.tex +++ b/chap/kalibrierung.tex @@ -237,6 +237,37 @@ \end{figure} + \subsubsection*{Reprojektions-Fehler} + Um eine Aussage über die Genauigkeit der gefundenen Kalibrierungs-Parameter treffen zu können, wird der Reprojektions-Fehler bestimmt. + Dieser gibt den Abstand zwischen einem im Kalibriermuster gefundenen Kreuzungspunkt und den mittels der Kalibrierung Ergebnisse + berechneten \gls{Welt-coords}. Der Mittelwert aller Abweichungen in allen verwendeten Bilder gibt den Reprojektions-Fehler für den + ganzen Kalibriervorgang an. + + Der \autoref{code: reprojektions fehler} zeigt die Berechnung mittels von OpenCV zur Verfügung gestellten Funktionen und den zuvor + ermittelten Kalibrierdaten. Für jeden Satz an theoretischen \gls{Welt-coords} des Kalibriermusters in \lstinline{objpoints} werden + die Punkte im Bild mit der OpenCV Funktion \lstinline{projectPoints()} bestimmt und mit den gefundenen Punkten verglichen. Dazu wird + die OpenCV Funktion \lstinline{norm()} verwendet, die direkt die summe aller Differenzen zweigen den beiden Punktelisten liefert. + + Das Ergebnis wird auf dem Bildschirm ausgegeben. + + \begin{lstlisting}[ + float, + style=example, + caption=Bererchnen des Reprojektions-Fehlers, + label=code: reprojektions fehler, + language=Python + ] + # calculate re-projection error + mean_error = 0 + for i in range(len(objpoints)): + imgpoints2, _ = cv.projectPoints(objpoints[i], rvecs[i], tvecs[i], mtx, dist) + error = cv.norm(imgpoints[i], imgpoints2, cv.NORM_L2)/len(imgpoints2) + mean_error += error + print(f"total error: {mean_error/len(objpoints)}") + \end{lstlisting} + + Mit dem verwendeten Datensatz ergibt sich ein Reprojektions-Fehler von $0,049$, was genau genug für diesen Anwendungsfall ist. + \subsection{Anwenden der Kalibrierung in einem \gls{ROS Nodelet}}