KlassenKlassenKlassenKlassen | | | | Operatoren

proj_match_points_distortion_ransacT_proj_match_points_distortion_ransacProjMatchPointsDistortionRansacproj_match_points_distortion_ransacProjMatchPointsDistortionRansacProjMatchPointsDistortionRansac (Operator)

Name

proj_match_points_distortion_ransacT_proj_match_points_distortion_ransacProjMatchPointsDistortionRansacproj_match_points_distortion_ransacProjMatchPointsDistortionRansacProjMatchPointsDistortionRansac — Automatische Bestimmung der projektiven Transformationsmatrix zwischen zwei Bildern und des radialen Verzeichnungskoeffizienten durch Zuordnung von Bildpunkten.

Signatur

proj_match_points_distortion_ransac(Image1, Image2 : : Rows1, Cols1, Rows2, Cols2, GrayMatchMethod, MaskSize, RowMove, ColMove, RowTolerance, ColTolerance, Rotation, MatchThreshold, EstimationMethod, DistanceThreshold, RandSeed : HomMat2D, Kappa, Error, Points1, Points2)

Herror T_proj_match_points_distortion_ransac(const Hobject Image1, const Hobject Image2, const Htuple Rows1, const Htuple Cols1, const Htuple Rows2, const Htuple Cols2, const Htuple GrayMatchMethod, const Htuple MaskSize, const Htuple RowMove, const Htuple ColMove, const Htuple RowTolerance, const Htuple ColTolerance, const Htuple Rotation, const Htuple MatchThreshold, const Htuple EstimationMethod, const Htuple DistanceThreshold, const Htuple RandSeed, Htuple* HomMat2D, Htuple* Kappa, Htuple* Error, Htuple* Points1, Htuple* Points2)

Herror proj_match_points_distortion_ransac(Hobject Image1, Hobject Image2, const HTuple& Rows1, const HTuple& Cols1, const HTuple& Rows2, const HTuple& Cols2, const HTuple& GrayMatchMethod, const HTuple& MaskSize, const HTuple& RowMove, const HTuple& ColMove, const HTuple& RowTolerance, const HTuple& ColTolerance, const HTuple& Rotation, const HTuple& MatchThreshold, const HTuple& EstimationMethod, const HTuple& DistanceThreshold, const HTuple& RandSeed, HTuple* HomMat2D, HTuple* Kappa, HTuple* Error, HTuple* Points1, HTuple* Points2)

HTuple HImage::ProjMatchPointsDistortionRansac(const HImage& Image2, const HTuple& Rows1, const HTuple& Cols1, const HTuple& Rows2, const HTuple& Cols2, const HTuple& GrayMatchMethod, const HTuple& MaskSize, const HTuple& RowMove, const HTuple& ColMove, const HTuple& RowTolerance, const HTuple& ColTolerance, const HTuple& Rotation, const HTuple& MatchThreshold, const HTuple& EstimationMethod, const HTuple& DistanceThreshold, const HTuple& RandSeed, HTuple* Kappa, HTuple* Error, HTuple* Points1, HTuple* Points2) const

void ProjMatchPointsDistortionRansac(const HObject& Image1, const HObject& Image2, const HTuple& Rows1, const HTuple& Cols1, const HTuple& Rows2, const HTuple& Cols2, const HTuple& GrayMatchMethod, const HTuple& MaskSize, const HTuple& RowMove, const HTuple& ColMove, const HTuple& RowTolerance, const HTuple& ColTolerance, const HTuple& Rotation, const HTuple& MatchThreshold, const HTuple& EstimationMethod, const HTuple& DistanceThreshold, const HTuple& RandSeed, HTuple* HomMat2D, HTuple* Kappa, HTuple* Error, HTuple* Points1, HTuple* Points2)

HHomMat2D HImage::ProjMatchPointsDistortionRansac(const HImage& Image2, const HTuple& Rows1, const HTuple& Cols1, const HTuple& Rows2, const HTuple& Cols2, const HString& GrayMatchMethod, Hlong MaskSize, Hlong RowMove, Hlong ColMove, Hlong RowTolerance, Hlong ColTolerance, const HTuple& Rotation, const HTuple& MatchThreshold, const HString& EstimationMethod, const HTuple& DistanceThreshold, Hlong RandSeed, double* Kappa, double* Error, HTuple* Points1, HTuple* Points2) const

HHomMat2D HImage::ProjMatchPointsDistortionRansac(const HImage& Image2, const HTuple& Rows1, const HTuple& Cols1, const HTuple& Rows2, const HTuple& Cols2, const HString& GrayMatchMethod, Hlong MaskSize, Hlong RowMove, Hlong ColMove, Hlong RowTolerance, Hlong ColTolerance, double Rotation, Hlong MatchThreshold, const HString& EstimationMethod, double DistanceThreshold, Hlong RandSeed, double* Kappa, double* Error, HTuple* Points1, HTuple* Points2) const

HHomMat2D HImage::ProjMatchPointsDistortionRansac(const HImage& Image2, const HTuple& Rows1, const HTuple& Cols1, const HTuple& Rows2, const HTuple& Cols2, const char* GrayMatchMethod, Hlong MaskSize, Hlong RowMove, Hlong ColMove, Hlong RowTolerance, Hlong ColTolerance, double Rotation, Hlong MatchThreshold, const char* EstimationMethod, double DistanceThreshold, Hlong RandSeed, double* Kappa, double* Error, HTuple* Points1, HTuple* Points2) const

double HHomMat2D::ProjMatchPointsDistortionRansac(const HImage& Image1, const HImage& Image2, const HTuple& Rows1, const HTuple& Cols1, const HTuple& Rows2, const HTuple& Cols2, const HString& GrayMatchMethod, Hlong MaskSize, Hlong RowMove, Hlong ColMove, Hlong RowTolerance, Hlong ColTolerance, const HTuple& Rotation, const HTuple& MatchThreshold, const HString& EstimationMethod, const HTuple& DistanceThreshold, Hlong RandSeed, double* Error, HTuple* Points1, HTuple* Points2)

double HHomMat2D::ProjMatchPointsDistortionRansac(const HImage& Image1, const HImage& Image2, const HTuple& Rows1, const HTuple& Cols1, const HTuple& Rows2, const HTuple& Cols2, const HString& GrayMatchMethod, Hlong MaskSize, Hlong RowMove, Hlong ColMove, Hlong RowTolerance, Hlong ColTolerance, double Rotation, Hlong MatchThreshold, const HString& EstimationMethod, double DistanceThreshold, Hlong RandSeed, double* Error, HTuple* Points1, HTuple* Points2)

double HHomMat2D::ProjMatchPointsDistortionRansac(const HImage& Image1, const HImage& Image2, const HTuple& Rows1, const HTuple& Cols1, const HTuple& Rows2, const HTuple& Cols2, const char* GrayMatchMethod, Hlong MaskSize, Hlong RowMove, Hlong ColMove, Hlong RowTolerance, Hlong ColTolerance, double Rotation, Hlong MatchThreshold, const char* EstimationMethod, double DistanceThreshold, Hlong RandSeed, double* Error, HTuple* Points1, HTuple* Points2)

void HOperatorSetX.ProjMatchPointsDistortionRansac(
[in] IHUntypedObjectX* Image1, [in] IHUntypedObjectX* Image2, [in] VARIANT Rows1, [in] VARIANT Cols1, [in] VARIANT Rows2, [in] VARIANT Cols2, [in] VARIANT GrayMatchMethod, [in] VARIANT MaskSize, [in] VARIANT RowMove, [in] VARIANT ColMove, [in] VARIANT RowTolerance, [in] VARIANT ColTolerance, [in] VARIANT Rotation, [in] VARIANT MatchThreshold, [in] VARIANT EstimationMethod, [in] VARIANT DistanceThreshold, [in] VARIANT RandSeed, [out] VARIANT* HomMat2d, [out] VARIANT* Kappa, [out] VARIANT* Error, [out] VARIANT* Points1, [out] VARIANT* Points2)

IHHomMat2DX* HImageX.ProjMatchPointsDistortionRansac(
[in] IHImageX* Image2, [in] VARIANT Rows1, [in] VARIANT Cols1, [in] VARIANT Rows2, [in] VARIANT Cols2, [in] BSTR GrayMatchMethod, [in] Hlong MaskSize, [in] Hlong RowMove, [in] Hlong ColMove, [in] Hlong RowTolerance, [in] Hlong ColTolerance, [in] VARIANT Rotation, [in] VARIANT MatchThreshold, [in] BSTR EstimationMethod, [in] VARIANT DistanceThreshold, [in] Hlong RandSeed, [out] double* Kappa, [out] double* Error, [out] VARIANT* Points1, [out] VARIANT* Points2)

double HHomMat2DX.ProjMatchPointsDistortionRansac(
[in] IHImageX* Image1, [in] IHImageX* Image2, [in] VARIANT Rows1, [in] VARIANT Cols1, [in] VARIANT Rows2, [in] VARIANT Cols2, [in] BSTR GrayMatchMethod, [in] Hlong MaskSize, [in] Hlong RowMove, [in] Hlong ColMove, [in] Hlong RowTolerance, [in] Hlong ColTolerance, [in] VARIANT Rotation, [in] VARIANT MatchThreshold, [in] BSTR EstimationMethod, [in] VARIANT DistanceThreshold, [in] Hlong RandSeed, [out] double* Error, [out] VARIANT* Points1, [out] VARIANT* Points2)

static void HOperatorSet.ProjMatchPointsDistortionRansac(HObject image1, HObject image2, HTuple rows1, HTuple cols1, HTuple rows2, HTuple cols2, HTuple grayMatchMethod, HTuple maskSize, HTuple rowMove, HTuple colMove, HTuple rowTolerance, HTuple colTolerance, HTuple rotation, HTuple matchThreshold, HTuple estimationMethod, HTuple distanceThreshold, HTuple randSeed, out HTuple homMat2D, out HTuple kappa, out HTuple error, out HTuple points1, out HTuple points2)

HHomMat2D HImage.ProjMatchPointsDistortionRansac(HImage image2, HTuple rows1, HTuple cols1, HTuple rows2, HTuple cols2, string grayMatchMethod, int maskSize, int rowMove, int colMove, int rowTolerance, int colTolerance, HTuple rotation, HTuple matchThreshold, string estimationMethod, HTuple distanceThreshold, int randSeed, out double kappa, out double error, out HTuple points1, out HTuple points2)

HHomMat2D HImage.ProjMatchPointsDistortionRansac(HImage image2, HTuple rows1, HTuple cols1, HTuple rows2, HTuple cols2, string grayMatchMethod, int maskSize, int rowMove, int colMove, int rowTolerance, int colTolerance, double rotation, int matchThreshold, string estimationMethod, double distanceThreshold, int randSeed, out double kappa, out double error, out HTuple points1, out HTuple points2)

double HHomMat2D.ProjMatchPointsDistortionRansac(HImage image1, HImage image2, HTuple rows1, HTuple cols1, HTuple rows2, HTuple cols2, string grayMatchMethod, int maskSize, int rowMove, int colMove, int rowTolerance, int colTolerance, HTuple rotation, HTuple matchThreshold, string estimationMethod, HTuple distanceThreshold, int randSeed, out double error, out HTuple points1, out HTuple points2)

double HHomMat2D.ProjMatchPointsDistortionRansac(HImage image1, HImage image2, HTuple rows1, HTuple cols1, HTuple rows2, HTuple cols2, string grayMatchMethod, int maskSize, int rowMove, int colMove, int rowTolerance, int colTolerance, double rotation, int matchThreshold, string estimationMethod, double distanceThreshold, int randSeed, out double error, out HTuple points1, out HTuple points2)

Beschreibung

Ausgehend von einer Menge charakteristischer Punkte (Rows1Rows1Rows1Rows1Rows1rows1,Cols1Cols1Cols1Cols1Cols1cols1) und (Rows2Rows2Rows2Rows2Rows2rows2,Cols2Cols2Cols2Cols2Cols2cols2) in den beiden Eingabebildern Image1Image1Image1Image1Image1image1 und Image2Image2Image2Image2Image2image2, welche dieselbe Größe besitzen müssen, bestimmt proj_match_points_distortion_ransacproj_match_points_distortion_ransacProjMatchPointsDistortionRansacproj_match_points_distortion_ransacProjMatchPointsDistortionRansacProjMatchPointsDistortionRansac automatisch die Korrespondenz der Punkte, die homogene projektive Transformationsmatrix HomMat2DHomMat2DHomMat2DHomMat2DHomMat2DhomMat2D und den radialen Verzeichnungskoeffizienten KappaKappaKappaKappaKappakappa , welche die folgende Gleichung am besten erfüllen:

Hierbei sind Bildpunkte, die durch Entzerrung der Eingabebildpunkte mit dem Divisionsmodell entstehen (siehe calibrate_camerascalibrate_camerasCalibrateCamerascalibrate_camerasCalibrateCamerasCalibrateCameras):
Hierbei bezeichnen die verzerrten Bildpunkte relativ zum Bildmittelpunkt und w und h die Breite und Höhe der Eingabebilder. proj_match_points_distortion_ransacproj_match_points_distortion_ransacProjMatchPointsDistortionRansacproj_match_points_distortion_ransacProjMatchPointsDistortionRansacProjMatchPointsDistortionRansac nimmt also an, dass der Hauptpunkt, d.h. das Zentrum der radialen Verzeichnungen, im Bildmittelpunkt liegt.

Das zurückgelieferte KappaKappaKappaKappaKappakappa kann dazu verwendet werden, Kameraparameter zu konstruieren, die zur Entzerrung von Bildern oder Bildpunkten verwendet werden können (siehe change_radial_distortion_cam_parchange_radial_distortion_cam_parChangeRadialDistortionCamParchange_radial_distortion_cam_parChangeRadialDistortionCamParChangeRadialDistortionCamPar, change_radial_distortion_imagechange_radial_distortion_imageChangeRadialDistortionImagechange_radial_distortion_imageChangeRadialDistortionImageChangeRadialDistortionImage und change_radial_distortion_pointschange_radial_distortion_pointsChangeRadialDistortionPointschange_radial_distortion_pointsChangeRadialDistortionPointsChangeRadialDistortionPoints):

Das Matchingverfahren beruht auf charakteristischen Punkten, welche mit Punktoperatoren, wie z.B. points_foerstnerpoints_foerstnerPointsFoerstnerpoints_foerstnerPointsFoerstnerPointsFoerstner oder points_harrispoints_harrisPointsHarrispoints_harrisPointsHarrisPointsHarris, extrahiert wurden. Die Bestimmung der Korrespondenzen erfolgt in 2 Schritten: Zuerst werden die Grauwertkorrelationen der Umgebungen der Eingabepunkte im ersten und zweiten Bild bestimmt und anhand dieser ein initiales Matching zwischen den Punkten ermittelt. Dann wird das RANSAC-Verfahren angewendet, um die projektive Transformationsmatrix und den radialen Verzeichnungskoeffizienten zu finden, welche die Anzahl der korrespondierenden Punktpaare unter Erfüllung der obigen Bedingung maximieren.

Die Größe der Grauwertfenster, die für das Matching verwendet werden, beträgt MaskSizeMaskSizeMaskSizeMaskSizeMaskSizemaskSize x MaskSizeMaskSizeMaskSizeMaskSizeMaskSizemaskSize. Es können drei Metriken für die Korrelation gewählt werden. Hat GrayMatchMethodGrayMatchMethodGrayMatchMethodGrayMatchMethodGrayMatchMethodgrayMatchMethod den Wert 'ssd'"ssd""ssd""ssd""ssd""ssd", so wird das Quadrat der Grauwertdifferenzen verwendet, 'sad'"sad""sad""sad""sad""sad" entspricht dem Betrag der Grauwertdifferenzen und 'ncc'"ncc""ncc""ncc""ncc""ncc" ist die normierte Kreuzkorrelation (siehe auch binocular_disparitybinocular_disparityBinocularDisparitybinocular_disparityBinocularDisparityBinocularDisparity). Diese Metrik wird über alle Punktpaare minimiert ('ssd'"ssd""ssd""ssd""ssd""ssd", 'sad'"sad""sad""sad""sad""sad") bzw. maximiert ('ncc'"ncc""ncc""ncc""ncc""ncc"), eine so gefundene Korrespondenz wird aber nur akzeptiert, falls der Wert der Metrik unter dem Wert von MatchThresholdMatchThresholdMatchThresholdMatchThresholdMatchThresholdmatchThreshold ('ssd'"ssd""ssd""ssd""ssd""ssd", 'sad'"sad""sad""sad""sad""sad") bzw. über demselben ('ncc'"ncc""ncc""ncc""ncc""ncc") liegt.

Zur Geschwindigkeitssteigerung kann der Suchbereich für die Match-Kandidaten auf ein Rechteck, das durch Größe und Verschiebung spezifiziert wird, eingeschränkt werden. Nur Punkte innerhalb eines Punkte großen Fensters werden betrachtet. Die Verschiebung des Mittelpunkts dieses Fensters im zweiten Bild gegenüber der Position des aktuellen Punktes im ersten Bild wird durch die Parameter RowMoveRowMoveRowMoveRowMoveRowMoverowMove und ColMoveColMoveColMoveColMoveColMovecolMove bestimmt.

Enthält die gesuchte Transformation eine Drehung, ist also das eine gegenüber dem anderen Bild gedreht, kann im Parameter RotationRotationRotationRotationRotationrotation eine Schätzung des Drehwinkels bzw. ein Winkelintervall im Bogenmaß übergeben werden. Eine gute Schätzung des Winkels erhöht die Qualität des Grauwertwertmatchings. Falls sich die tatsächliche Rotation zu stark von der angegebenen Schätzung unterscheidet, schlägt das Matching typischerweise fehl. In diesem Fall sollte ein Winkelintervall angegeben werden. Je größer das angegebene Winkelintervall, desto langsamer läuft der Operator, denn für alle relevanten (automatisch bestimmten) Winkel innerhalb des Intervalls wird das Verfahren komplett durchlaufen.

Ist das initiale Punktmatching bestimmt, wird es anschließend durch einen randomisierten Auswahlalgorithmus (RANSAC) zur Bestimmung der projektiven Transformationsmatrix HomMat2DHomMat2DHomMat2DHomMat2DHomMat2DhomMat2D und des radialen Verzeichnungskoeffizienten KappaKappaKappaKappaKappakappa benutzt. Dabei wird versucht, diese Parameter so zu wählen, dass sie bezüglich der Schranke DistanceThresholdDistanceThresholdDistanceThresholdDistanceThresholdDistanceThresholddistanceThreshold zu möglichst vielen Punktpaaren konsistent ist.

Der Parameter EstimationMethodEstimationMethodEstimationMethodEstimationMethodEstimationMethodestimationMethod gibt an, welches Verfahren zur Berechnung der projektiven Transformationsmatrix angewendet wird. Falls EstimationMethodEstimationMethodEstimationMethodEstimationMethodEstimationMethodestimationMethod auf 'linear'"linear""linear""linear""linear""linear" gesetzt wird, wird ein lineares Verfahren verwendet, das einen algebraischen Fehler basierend auf den obigen Gleichungen minimiert. Dieses Verfahren ist sehr schnell und liefert genaue Ergebnisse für geringes bis mittleres Rauschen der Punktkoordinaten und für die meisten Verzeichnungen (außer kleinen Verzeichnungen). Für EstimationMethodEstimationMethodEstimationMethodEstimationMethodEstimationMethodestimationMethod = 'gold_standard'"gold_standard""gold_standard""gold_standard""gold_standard""gold_standard" wird eine mathematisch optimale, dafür aber langsamere, Optimierung durchführt, die den geometrischen Reprojektionsfehler minimiert. Im allgemeinen sollte EstimationMethodEstimationMethodEstimationMethodEstimationMethodEstimationMethodestimationMethod = 'gold_standard'"gold_standard""gold_standard""gold_standard""gold_standard""gold_standard" gewählt werden.

Der Wert ErrorErrorErrorErrorErrorerror gibt die Qualität des Matchings an und ist der mittlere symmetrische euklidische Abstand der Punkte zu ihren korrespondierenden transformierten Punkten, gemessen in Pixeln.

Punktpaare, welche die Konsistenzbedingungen erfüllen, werden als Korrespondenzen akzeptiert. Points1Points1Points1Points1Points1points1 enthält die Indizes der zugeordneten Eingabepunkte im ersten Bild, Points2Points2Points2Points2Points2points2 die Indizes der dazu korrespondierenden Punkte im zweiten Bild.

Der Parameter RandSeedRandSeedRandSeedRandSeedRandSeedrandSeed kann benutzt werden, um das randomisierte Verhalten des RANSAC-Verfahrens zu kontrollieren und somit reproduzierbare Ergebnisse zu erhalten. Wird RandSeedRandSeedRandSeedRandSeedRandSeedrandSeed auf einen positiven Wert gesetzt, so liefert der Operator bei jedem Aufruf mit denselben Parametern auch dasselbe Resultat, da der intern verwendete Zufallsgenerator mit RandSeedRandSeedRandSeedRandSeedRandSeedrandSeed initialisiert wird. Ist RandSeedRandSeedRandSeedRandSeedRandSeedrandSeed = 0, so wird der Zufallsgenerator mit der aktuellen Zeit initialisiert. Daher sind in diesem Fall die Ergebnisse unter Umständen nicht reproduzierbar.

Parallelisierung

Parameter

Image1Image1Image1Image1Image1image1 (input_object)  singlechannelimage objectHImageHImageHImageHImageXHobject (byte / uint2)

Eingabebild 1.

Image2Image2Image2Image2Image2image2 (input_object)  singlechannelimage objectHImageHImageHImageHImageXHobject (byte / uint2)

Eingabebild 2.

Rows1Rows1Rows1Rows1Rows1rows1 (input_control)  point.y-array HTupleHTupleHTupleVARIANTHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong) (double / Hlong) (double / Hlong)

Eingabepunkte in Bild 1 (Zeilenkoordinate).

Restriktion: length(Rows1) >= 5

Cols1Cols1Cols1Cols1Cols1cols1 (input_control)  point.x-array HTupleHTupleHTupleVARIANTHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong) (double / Hlong) (double / Hlong)

Eingabepunkte in Bild 1 (Spaltenkoordinate).

Restriktion: length(Cols1) == length(Rows1)

Rows2Rows2Rows2Rows2Rows2rows2 (input_control)  point.y-array HTupleHTupleHTupleVARIANTHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong) (double / Hlong) (double / Hlong)

Eingabepunkte in Bild 2 (Zeilenkoordinate).

Restriktion: length(Rows2) >= 5

Cols2Cols2Cols2Cols2Cols2cols2 (input_control)  point.x-array HTupleHTupleHTupleVARIANTHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong) (double / Hlong) (double / Hlong)

Eingabepunkte in Bild 2 (Spaltenkoordinate).

Restriktion: length(Cols2) == length(Rows2)

GrayMatchMethodGrayMatchMethodGrayMatchMethodGrayMatchMethodGrayMatchMethodgrayMatchMethod (input_control)  string HTupleHTupleHTupleVARIANTHtuple (string) (string) (HString) (char*) (BSTR) (char*)

Metrik für den Vergleich der Grauwerte.

Defaultwert: 'ncc' "ncc" "ncc" "ncc" "ncc" "ncc"

Werteliste: 'ncc'"ncc""ncc""ncc""ncc""ncc", 'sad'"sad""sad""sad""sad""sad", 'ssd'"ssd""ssd""ssd""ssd""ssd"

MaskSizeMaskSizeMaskSizeMaskSizeMaskSizemaskSize (input_control)  integer HTupleHTupleHTupleVARIANTHtuple (integer) (int / long) (Hlong) (Hlong) (Hlong) (Hlong)

Größe der Grauwertmasken.

Defaultwert: 10

Typischer Wertebereich: 3 ≤ MaskSize MaskSize MaskSize MaskSize MaskSize maskSize ≤ 15

Restriktion: MaskSize >= 1

RowMoveRowMoveRowMoveRowMoveRowMoverowMove (input_control)  integer HTupleHTupleHTupleVARIANTHtuple (integer) (int / long) (Hlong) (Hlong) (Hlong) (Hlong)

Mittlere Zeilenverschiebung.

Defaultwert: 0

ColMoveColMoveColMoveColMoveColMovecolMove (input_control)  integer HTupleHTupleHTupleVARIANTHtuple (integer) (int / long) (Hlong) (Hlong) (Hlong) (Hlong)

Mittlere Spaltenverschiebung.

Defaultwert: 0

RowToleranceRowToleranceRowToleranceRowToleranceRowTolerancerowTolerance (input_control)  integer HTupleHTupleHTupleVARIANTHtuple (integer) (int / long) (Hlong) (Hlong) (Hlong) (Hlong)

Halbe Höhe des Suchfensters für das Punktmatching.

Defaultwert: 200

Restriktion: RowTolerance >= 1

ColToleranceColToleranceColToleranceColToleranceColTolerancecolTolerance (input_control)  integer HTupleHTupleHTupleVARIANTHtuple (integer) (int / long) (Hlong) (Hlong) (Hlong) (Hlong)

Halbe Breite des Suchfensters für das Punktmatching.

Defaultwert: 200

Restriktion: ColTolerance >= 1

RotationRotationRotationRotationRotationrotation (input_control)  angle.rad(-array) HTupleHTupleHTupleVARIANTHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong) (double / Hlong) (double / Hlong)

Schätzung für die Rotation des zweiten Bildes relativ zum ersten Bild.

Defaultwert: 0.0

Wertevorschläge: 0.0, 0.1, -0.1, 0.7854, 1.571, 3.142

MatchThresholdMatchThresholdMatchThresholdMatchThresholdMatchThresholdmatchThreshold (input_control)  number HTupleHTupleHTupleVARIANTHtuple (integer / real) (int / long / double) (Hlong / double) (Hlong / double) (Hlong / double) (Hlong / double)

Schwellwert für Grauwertkorrespondenzen.

Defaultwert: 0.7

Wertevorschläge: 0.9, 0.7, 0.5, 10, 20, 50, 100

EstimationMethodEstimationMethodEstimationMethodEstimationMethodEstimationMethodestimationMethod (input_control)  string HTupleHTupleHTupleVARIANTHtuple (string) (string) (HString) (char*) (BSTR) (char*)

Algorithmus zur Berechnung der projektiven Transformationsmatrix.

Defaultwert: 'gold_standard' "gold_standard" "gold_standard" "gold_standard" "gold_standard" "gold_standard"

Werteliste: 'gold_standard'"gold_standard""gold_standard""gold_standard""gold_standard""gold_standard", 'linear'"linear""linear""linear""linear""linear"

DistanceThresholdDistanceThresholdDistanceThresholdDistanceThresholdDistanceThresholddistanceThreshold (input_control)  number HTupleHTupleHTupleVARIANTHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong) (double / Hlong) (double / Hlong)

Schwelle für Konsistenzüberprüfung.

Defaultwert: 1

Restriktion: DistanceThreshold > 0

RandSeedRandSeedRandSeedRandSeedRandSeedrandSeed (input_control)  integer HTupleHTupleHTupleVARIANTHtuple (integer) (int / long) (Hlong) (Hlong) (Hlong) (Hlong)

Startwert für den Zufallszahlengenerator.

Defaultwert: 0

HomMat2DHomMat2DHomMat2DHomMat2DHomMat2DhomMat2D (output_control)  hom_mat2d HHomMat2D, HTupleHTupleHTupleHHomMat2DX, VARIANTHtuple (real) (double) (double) (double) (double) (double)

Berechnete homogene projektive Transformationsmatrix.

KappaKappaKappaKappaKappakappa (output_control)  real HTupleHTupleHTupleVARIANTHtuple (real) (double) (double) (double) (double) (double)

Berechneter Verzeichnungskoeffizient.

ErrorErrorErrorErrorErrorerror (output_control)  real HTupleHTupleHTupleVARIANTHtuple (real) (double) (double) (double) (double) (double)

Mittlerer quadratischer Transformationsfehler.

Points1Points1Points1Points1Points1points1 (output_control)  integer-array HTupleHTupleHTupleVARIANTHtuple (integer) (int / long) (Hlong) (Hlong) (Hlong) (Hlong)

Indizes der zugeordneten Eingabepunkte aus Bild 1.

Points2Points2Points2Points2Points2points2 (output_control)  integer-array HTupleHTupleHTupleVARIANTHtuple (integer) (int / long) (Hlong) (Hlong) (Hlong) (Hlong)

Indizes der zugeordneten Eingabepunkte aus Bild 2.

Beispiel (HDevelop)

points_foerstner (Image1, 1, 2, 3, 50, 0.1, 'gauss', 'true', \
                  Rows1, Cols1, _, _, _, _, _, _, _, _)
points_foerstner (Image2, 1, 2, 3, 50, 0.1, 'gauss', 'true', \
                  Rows2, Cols2, _, _, _, _, _, _, _, _)
get_image_size (Image1, Width, Height)
proj_match_points_distortion_ransac (Image1, Image2, Rows1, Cols1, \
                                     Rows2, Cols2, 'ncc', 10, 0, 0, \
                                     Height, Width, 0, 0.5, \
                                     'gold_standard', 1, 42, \
                                     HomMat2D, Kappa, Error, \
                                     Points1, Points2)
CamParDist := ['area_scan_division',0.0,Kappa,1.0,1.0, \
               0.5*(Width-1),0.5*(Height-1),Width,Height]
change_radial_distortion_cam_par ('fixed', CamParDist, 0, CamPar)
change_radial_distortion_image (Image1, Image1, Image1Rect, \
                                CamParDist, CamPar)
change_radial_distortion_image (Image2, Image2, Image2Rect, \
                                CamParDist, CamPar)
concat_obj (Image1Rect, Image2Rect, ImagesRect)
gen_projective_mosaic (ImagesRect, MosaicImage, 1, 1, 2, HomMat2D, \
                       'default', 'false', MosaicMatrices2D)

Vorgänger

points_foerstnerpoints_foerstnerPointsFoerstnerpoints_foerstnerPointsFoerstnerPointsFoerstner, points_harrispoints_harrisPointsHarrispoints_harrisPointsHarrisPointsHarris

Nachfolger

vector_to_proj_hom_mat2d_distortionvector_to_proj_hom_mat2d_distortionVectorToProjHomMat2dDistortionvector_to_proj_hom_mat2d_distortionVectorToProjHomMat2dDistortionVectorToProjHomMat2dDistortion, change_radial_distortion_cam_parchange_radial_distortion_cam_parChangeRadialDistortionCamParchange_radial_distortion_cam_parChangeRadialDistortionCamParChangeRadialDistortionCamPar, change_radial_distortion_imagechange_radial_distortion_imageChangeRadialDistortionImagechange_radial_distortion_imageChangeRadialDistortionImageChangeRadialDistortionImage, change_radial_distortion_pointschange_radial_distortion_pointsChangeRadialDistortionPointschange_radial_distortion_pointsChangeRadialDistortionPointsChangeRadialDistortionPoints, gen_binocular_proj_rectificationgen_binocular_proj_rectificationGenBinocularProjRectificationgen_binocular_proj_rectificationGenBinocularProjRectificationGenBinocularProjRectification, projective_trans_imageprojective_trans_imageProjectiveTransImageprojective_trans_imageProjectiveTransImageProjectiveTransImage, projective_trans_image_sizeprojective_trans_image_sizeProjectiveTransImageSizeprojective_trans_image_sizeProjectiveTransImageSizeProjectiveTransImageSize, projective_trans_regionprojective_trans_regionProjectiveTransRegionprojective_trans_regionProjectiveTransRegionProjectiveTransRegion, projective_trans_contour_xldprojective_trans_contour_xldProjectiveTransContourXldprojective_trans_contour_xldProjectiveTransContourXldProjectiveTransContourXld, projective_trans_point_2dprojective_trans_point_2dProjectiveTransPoint2dprojective_trans_point_2dProjectiveTransPoint2dProjectiveTransPoint2d, projective_trans_pixelprojective_trans_pixelProjectiveTransPixelprojective_trans_pixelProjectiveTransPixelProjectiveTransPixel

Alternativen

proj_match_points_distortion_ransac_guidedproj_match_points_distortion_ransac_guidedProjMatchPointsDistortionRansacGuidedproj_match_points_distortion_ransac_guidedProjMatchPointsDistortionRansacGuidedProjMatchPointsDistortionRansacGuided

Siehe auch

proj_match_points_ransacproj_match_points_ransacProjMatchPointsRansacproj_match_points_ransacProjMatchPointsRansacProjMatchPointsRansac, proj_match_points_ransac_guidedproj_match_points_ransac_guidedProjMatchPointsRansacGuidedproj_match_points_ransac_guidedProjMatchPointsRansacGuidedProjMatchPointsRansacGuided, hom_vector_to_proj_hom_mat2dhom_vector_to_proj_hom_mat2dHomVectorToProjHomMat2dhom_vector_to_proj_hom_mat2dHomVectorToProjHomMat2dHomVectorToProjHomMat2d, vector_to_proj_hom_mat2dvector_to_proj_hom_mat2dVectorToProjHomMat2dvector_to_proj_hom_mat2dVectorToProjHomMat2dVectorToProjHomMat2d

Literatur

Richard Hartley, Andrew Zisserman: „Multiple View Geometry in Computer Vision“; Cambridge University Press, Cambridge; 2003.
Olivier Faugeras, Quang-Tuan Luong: „The Geometry of Multiple Images: The Laws That Govern the Formation of Multiple Images of a Scene and Some of Their Applications“; MIT Press, Cambridge, MA; 2001.

Modul

Matching


KlassenKlassenKlassenKlassen | | | | Operatoren