Dokumentation
Funktionen
Ver-/Entzerrungsfunktionen

Es werden eine Reihe von Funktionen zum Ent- und Verzerren von Koordinaten und Bildern zur Verfügung gestellt. Mehr ...

Funktionen


Ausführliche Beschreibung

Es werden eine Reihe von Funktionen zum Ent- und Verzerren von Koordinaten und Bildern zur Verfügung gestellt.

Grundlage bildet stets das Kameramodell MPTCamera, dessen intrinsische und Verzeichnungsparameter herangezogen werden. Dabei können einzelne Kamerakoordinaten, Pixelkoordinaten oder ganze Bilder ver- bzw. entzerrt werden. Die Entzerrung stellt die Grundlage für alle metrischen Messoperationen dar, die Verzerrung ist ein gutes Hilfmittel um beispielsweise berechnete Koordinaten wieder zurück in das originale Kamerabild zu transformieren.

Sollen im weiteren Verlauf Bilder noch rektifiziert werden, ist es sinnvoll die dazu gehörigen Funktionen (Ver-/Entzerrungsfunktionen mit Rektifizierung) zu verwenden, da diese zum einene schneller arbeiten und zum anderen keine Artefakte durch mehrfache Interpolation auftreten.

Die Funktionen sollten nicht für Einzelkoordinaten sondern für eine Reihe von Koordinaten aufgerufen werden, um maximale Ausführungsgeschwindigkeit zu erreichen.

Der Unterschied zwischen Kamera- und Pixelkoordinaten ist im Abschnitt Definition der Koordinatensysteme beschrieben.

Anwendungbeispiele in C++

    // Kamera laden
    MPTCamera myCam;
    readCalibration("myCamera.cb", &myCam);

    // Vektor mit verzerrten Pixelkoordinaten anlegen
    std::vector<MPTPoint2d> pixelDist= ...;
    // Vektor für die entzerrten Pixel
    std::vector<MPTPoint2d> pixelUndist(pixelDist.size());
    // pixel entzerren:
    if (!pixelDist.empty())
      undistortPixels(&myCam, &pixelDist.front(), &pixelUndist.front(), static_cast<int>(pixelDist.size());

    // Ein Bild entzerren:
    MPTImage imgCamDist;
    // Bild mit Inhalt füllen...
    
    // Ergebnisbild anlegen:
    MPTImage imgCamUndist;
    imgCamUndist = imgCamDist;
    imgCamUndist.data = new unsigned char[imgCamUndist.height * imgCamUndist.bpsl];
    undistortImage(&myCam, &imgCamDist, &imgCamUndist);      

Dokumentation der Funktionen

int distortCoords ( const MPTCamera cam,
const MPTPoint2d pointsUndist,
MPTPoint2d pointsDist,
int  pointCount 
)

Verzerrt Kamerakoordinaten.

Dies ist die inverse Funktion zu undistortCoords(). Hiermit können ideale Kamerakoordinaten wieder in verzeichnete Koordinaten zurückgerechnet werden.

Parameter:
camKamera mit den entsprechenden Verzeichnungsparametern.
pointsUndistEntzerrte Koordinaten in mm.
pointsDistErgebnis als verzerrte Koordinaten in mm. Kann mit pointsUndist identisch sein, dann wird die Eingabe überschrieben.
pointCountAnzahl der Koordinaten
Rückgabe:
Immer MPT_NO_ERROR
int distortImage ( const MPTCamera cam,
const MPTImage imgUndist,
MPTImage imgDist 
)

Verzerrt ein ganzes Bild.

Dies ist die inverse Funktion zu undistortImage(). Sie ist der Vollständigkeit halber implementiert.

Rückgabewerte:
MPT_NO_ERRORwenn kein Fehler auftrat.
MPT_ERR_IMAGE_GRAY_EXPECTEDwenn das Quellbild nicht im Graustufenformat vorliegt
MPT_ERR_IMAGE_TYPE_MISMATCHwenn das Zielbild nicht im Graustufenformat vorliegt
MPT_ERR_IMAGE_DIM_MISMATCHwenn die Auflösungen von Quell- und Zielbild nicht identisch sind.
Siehe auch:
undistortImage()
int distortPixels ( const MPTCamera cam,
const MPTPoint2d pixelsUndist,
MPTPoint2d pixelsDist,
int  pixelCount 
)

Verzerrt Pixelkoordinaten.

Dies ist die inverse Funktion zu undistortPixels(). Hiermit können ideale Pixelkoordinaten wieder in verzeichnete Koordinaten zurückgerechnet werden.

Parameter:
camKamera mit den entsprechenden Verzeichnungsparametern.
pixelsUndistEntzerrte Koordinaten in Pixel.
pixelsDistErgebnis als verzerrte Koordinaten in Pixel. Kann mit pointsUndist identisch sein, dann wird die Eingabe überschrieben.
pixelCountAnzahl der Koordinaten
Rückgabe:
Immer MPT_NO_ERROR
Siehe auch:
undistortPixels(), distortImage()
int undistortCoords ( const MPTCamera cam,
const MPTPoint2d pointsDist,
MPTPoint2d pointsUndist,
int  pointCount 
)

Entzerrt Kamerakoordinaten.

Mit Hilfe dieser Funktion können verzeichnete Kamerakoordinaten in ideale, unverzeichnete Lochkamerakoordinaten transformiert werden. Die Einheit ist mm.

Parameter:
camKamera mit den entsprechenden Verzeichnungsparametern.
pointsDistVerzeichnete Koordinaten in mm.
pointsUndistErgebnis als entzerrte Koordinaten in mm. Kann mit pointsDist identisch sein, dann wird die Eingabe überschrieben.
pointCountAnzahl der Koordinaten
Rückgabe:
Immer MPT_NO_ERROR
Siehe auch:
readCalibration(), undistortPixels(), undistortImage()
int undistortImage ( const MPTCamera cam,
const MPTImage imgDist,
MPTImage imgUndist 
)

Entzerrt ein ganzes Bild.

Parameter:
camKamera mit der das Einagbebild aufgenommen wurde.
imgDistVerzerrtes Rohbild von der Kamera
imgUndistVon Linsenverzechnung befreites, entzerrtes Bild. Die Interpolation ist für messtechnische Aufgaben ausreichend.
Rückgabewerte:
MPT_NO_ERRORwenn kein Fehler auftrat.
MPT_ERR_IMAGE_GRAY_EXPECTEDwenn das Quellbild nicht im Graustufenformat vorliegt
MPT_ERR_IMAGE_TYPE_MISMATCHwenn das Zielbild nicht im Graustufenformat vorliegt
MPT_ERR_IMAGE_DIM_MISMATCHwenn die Auflösungen von Quell- und Zielbild nicht identisch sind.
Siehe auch:
readCalibration(), undistortPixels()
int undistortPixels ( const MPTCamera cam,
const MPTPoint2d pixelsDist,
MPTPoint2d pixelsUndist,
int  pixelCount 
)

Entzerrt Pixelkoordinaten.

Mit Hilfe dieser Funktion können verzeichnete Pixel in ideale, unverzeichnete Pixel transformiert werden.

Parameter:
camKamera mit den entsprechenden Verzeichnungsparametern.
pixelsDistVerzeichnete Koordinaten in Pixel.
pixelsUndistErgebnis als entzerrte Koordinaten in Pixel. Kann mit pixelsDist identisch sein, dann wird die Eingabe überschrieben.
pixelCountAnzahl der Punkte
Rückgabe:
Immer MPT_NO_ERROR
Siehe auch:
readCalibration(), undistortPixels(), undistortImage()


Copyright © 2012 Fraunhofer IFF
Version 1.0