Name
proj_match_points_ransac T_proj_match_points_ransac ProjMatchPointsRansac proj_match_points_ransac ProjMatchPointsRansac ProjMatchPointsRansac — Bestimmt eine projektive Transformationsmatrix automatisch
durch Zuordnung von Punkten zwischen zwei Bildern.
proj_match_points_ransac (Image1 , Image2 : : Rows1 , Cols1 , Rows2 , Cols2 , GrayMatchMethod , MaskSize , RowMove , ColMove , RowTolerance , ColTolerance , Rotation , MatchThreshold , EstimationMethod , DistanceThreshold , RandSeed : HomMat2D , Points1 , Points2 )
Herror T_proj_match_points_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* Points1 , Htuple* Points2 )
Herror proj_match_points_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* Points1 , HTuple* Points2 )
HTuple HImage ::ProjMatchPointsRansac (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* Points1 , HTuple* Points2 ) const
void ProjMatchPointsRansac (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* Points1 , HTuple* Points2 )
HHomMat2D HImage ::ProjMatchPointsRansac (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 , double DistanceThreshold , Hlong RandSeed , HTuple* Points1 , HTuple* Points2 ) const
HHomMat2D HImage ::ProjMatchPointsRansac (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 , HTuple* Points1 , HTuple* Points2 ) const
HHomMat2D HImage ::ProjMatchPointsRansac (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 , HTuple* Points1 , HTuple* Points2 ) const
HTuple HHomMat2D ::ProjMatchPointsRansac (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 , double DistanceThreshold , Hlong RandSeed , HTuple* Points2 )
HTuple HHomMat2D ::ProjMatchPointsRansac (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 , HTuple* Points2 )
HTuple HHomMat2D ::ProjMatchPointsRansac (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 , HTuple* Points2 )
void HOperatorSetX .ProjMatchPointsRansac ( [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* Points1 , [out] VARIANT* Points2 )
IHHomMat2DX* HImageX .ProjMatchPointsRansac ( [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] double DistanceThreshold , [in] Hlong RandSeed , [out] VARIANT* Points1 , [out] VARIANT* Points2 )
VARIANT HHomMat2DX .ProjMatchPointsRansac ( [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] double DistanceThreshold , [in] Hlong RandSeed , [out] VARIANT* Points2 )
static void HOperatorSet .ProjMatchPointsRansac (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 points1 , out HTuple points2 )
HHomMat2D HImage .ProjMatchPointsRansac (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 , double distanceThreshold , int randSeed , out HTuple points1 , out HTuple points2 )
HHomMat2D HImage .ProjMatchPointsRansac (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 HTuple points1 , out HTuple points2 )
HTuple HHomMat2D .ProjMatchPointsRansac (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 , double distanceThreshold , int randSeed , out HTuple points2 )
HTuple HHomMat2D .ProjMatchPointsRansac (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 HTuple points2 )
Ausgehend von einer Menge charakteristischer Punkte
(Cols1 Cols1 Cols1 Cols1 Cols1 cols1 ,Rows1 Rows1 Rows1 Rows1 Rows1 rows1 ) und
(Cols2 Cols2 Cols2 Cols2 Cols2 cols2 ,Rows2 Rows2 Rows2 Rows2 Rows2 rows2 ) in den beiden Eingabebildern
Image1 Image1 Image1 Image1 Image1 image1 und Image2 Image2 Image2 Image2 Image2 image2 bestimmt
proj_match_points_ransac proj_match_points_ransac ProjMatchPointsRansac proj_match_points_ransac ProjMatchPointsRansac ProjMatchPointsRansac automatisch die Korrespondenz der
Punkte und die homogene projektive Transformationsmatrix
HomMat2D HomMat2D HomMat2D HomMat2D HomMat2D homMat2D , die die korrespondierenden Punkte in den beiden
Bildern am besten ineinander überführt. Die charakteristischen
Punkte können z.B. mit points_foerstner points_foerstner PointsFoerstner points_foerstner PointsFoerstner PointsFoerstner oder
points_harris points_harris PointsHarris points_harris PointsHarris PointsHarris extrahiert werden.
Die Bestimmung der Transformation erfolgt in 2 Schritten: Zuerst
werden die Grauwertkorrelationen von Umgebungen der Eingabepunkte im
ersten und zweiten Bild bestimmt und anhand dieser ein initiales
Matching zwischen den Punkten ermittelt. Die Größe dieser
Grauwertfenster beträgt MaskSize MaskSize MaskSize MaskSize MaskSize maskSize x MaskSize MaskSize MaskSize MaskSize MaskSize maskSize . Es
können drei Metriken für die Korrelation gewählt werden. Hat
GrayMatchMethod GrayMatchMethod GrayMatchMethod GrayMatchMethod GrayMatchMethod grayMatchMethod 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_disparity binocular_disparity BinocularDisparity binocular_disparity BinocularDisparity BinocularDisparity ).
Diese Metrik wird über alle
Punktepaare minimiert ('ssd' "ssd" "ssd" "ssd" "ssd" "ssd" , 'sad' "sad" "sad" "sad" "sad" "sad" ) bzw.
maximiert ('ncc' "ncc" "ncc" "ncc" "ncc" "ncc" ), ein so gefundenes Matching wird aber nur
akzeptiert, falls der Wert der Metrik unter dem Wert von
MatchThreshold MatchThreshold MatchThreshold MatchThreshold MatchThreshold matchThreshold ('ssd' "ssd" "ssd" "ssd" "ssd" "ssd" , 'sad' "sad" "sad" "sad" "sad" "sad" ) bzw. über
demselben ('ncc' "ncc" "ncc" "ncc" "ncc" "ncc" ) liegt.
Zur Performanzsteigerung kann der Suchbereich für die Matchings
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 RowMove RowMove RowMove RowMove RowMove rowMove und
ColMove ColMove ColMove ColMove ColMove colMove bestimmt.
Enthält die gesuchte Transformation eine Drehung, ist also das eine
gegenüber dem anderen Bild gedreht, so kann im Parameter
Rotation Rotation Rotation Rotation Rotation rotation 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.
Je größer das angegebene Winkelintervall, desto langsamer läuft
der Operator, denn für alle relevanten (endlich vielen) 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
Transformationsmatrix HomMat2D HomMat2D HomMat2D HomMat2D HomMat2D homMat2D benutzt. Dabei wird
versucht die Matrix so zu wählen, dass sie bezüglich der Schranke
DistanceThreshold DistanceThreshold DistanceThreshold DistanceThreshold DistanceThreshold distanceThreshold zu möglichst vielen Punktpaaren
konsistent ist.
Ist eine solche Auswahl getroffen, wird die zugehörige Matrix unter
Einbeziehung aller konsistenten Punkte nochmals optimiert. Dabei
kann mit EstimationMethod EstimationMethod EstimationMethod EstimationMethod EstimationMethod estimationMethod zwischen der langsameren, dafür
aber mathematisch optimalen 'gold_standard' "gold_standard" "gold_standard" "gold_standard" "gold_standard" "gold_standard" Methode und der
schnelleren 'normalized_dlt' "normalized_dlt" "normalized_dlt" "normalized_dlt" "normalized_dlt" "normalized_dlt" gewählt werden. Dabei werden
die Verfahren von vector_to_proj_hom_mat2d vector_to_proj_hom_mat2d VectorToProjHomMat2d vector_to_proj_hom_mat2d VectorToProjHomMat2d VectorToProjHomMat2d verwendet.
Punktepaare, die die Konsistenzbedingung für diese endgültige
Transformation immer noch verletzen, werden aussortiert, der Rest
als Steuerparameter zurückgeliefert. Points1 Points1 Points1 Points1 Points1 points1 enthält die
Indizes der gematchten Eingabepunkte im ersten Bild,
Points2 Points2 Points2 Points2 Points2 points2 die Indizes der dazu korrespondierenden Punkte im
zweiten Bild.
Der Parameter RandSeed RandSeed RandSeed RandSeed RandSeed randSeed kann benutzt werden, um das
randomisierte Verhalten des RANSAC-Verfahrens zu kontrollieren und
somit reproduzierbare Ergebnisse zu erhalten. Wird
RandSeed RandSeed RandSeed RandSeed RandSeed randSeed auf einen positiven Wert gesetzt, so liefert der
Operator bei jedem Aufruf mit denselben Parametern auch dasselbe
Resultat, da der intern verwendete Zufallsgenerator mit dem
angegebenen Startwert initialisiert wird. Ist RandSeed RandSeed RandSeed RandSeed RandSeed randSeed =
0 , so wird der Zufallsgenerator mit der aktuellen Zeit
initialisiert. Daher sind in diesem Fall die Ergebnisse unter
Umständen nicht reproduzierbar.
Multithreading-Typ: reentrant (läuft parallel zu nicht-exklusiven Operatoren).
Multithreading-Bereich: global (kann von jedem Thread aufgerufen werden).
Wird ohne Parallelisierung verarbeitet.
Zeilenkoordinaten charakteristischer Punkte
in Bild 1.
Spaltenkoordinaten charakteristischer Punkte
in Bild 1.
Zeilenkoordinaten charakteristischer Punkte
in Bild 2.
Spaltenkoordinaten charakteristischer Punkte
in Bild 2.
Metrik für den Vergleich der Grauwerte.
Defaultwert:
'ssd'
"ssd"
"ssd"
"ssd"
"ssd"
"ssd"
Werteliste: 'ncc' "ncc" "ncc" "ncc" "ncc" "ncc" , 'sad' "sad" "sad" "sad" "sad" "sad" , 'ssd' "ssd" "ssd" "ssd" "ssd" "ssd"
Größe der Grauwertmaske.
Defaultwert: 10
Typischer Wertebereich:
MaskSize
MaskSize
MaskSize
MaskSize
MaskSize
maskSize
≤
90
Mittlere Zeilenverschiebung.
Defaultwert: 0
Mittlere Spaltenverschiebung.
Defaultwert: 0
Halbe Höhe des Suchfensters für das Punktmatching.
Defaultwert: 256
Halbe Breite des Suchfensters für das Punktmatching.
Defaultwert: 256
Drehwinkelbereich.
Defaultwert: 0.0
Wertevorschläge: 0.0, 0.7854, 1.571, 3.142
Schwellwert für Grauwertkorrespondenzen.
Defaultwert: 10
Wertevorschläge: 10, 20, 50, 100, 0.9, 0.7
Schätzalgorithmus für Transformationsmatrix.
Defaultwert:
'normalized_dlt'
"normalized_dlt"
"normalized_dlt"
"normalized_dlt"
"normalized_dlt"
"normalized_dlt"
Werteliste: 'gold_standard' "gold_standard" "gold_standard" "gold_standard" "gold_standard" "gold_standard" , 'normalized_dlt' "normalized_dlt" "normalized_dlt" "normalized_dlt" "normalized_dlt" "normalized_dlt"
Schwelle für Konsistenzüberprüfung.
Defaultwert: 0.2
Startwert für den Zufallszahlengenerator.
Defaultwert: 0
Homogene projektive Transformationsmatrix.
Indizes der akzeptierten Eingabepunkte aus Bild 1.
Indizes der akzeptierten Eingabepunkte aus Bild 2.
points_foerstner points_foerstner PointsFoerstner points_foerstner PointsFoerstner PointsFoerstner ,
points_harris points_harris PointsHarris points_harris PointsHarris PointsHarris
projective_trans_image projective_trans_image ProjectiveTransImage projective_trans_image ProjectiveTransImage ProjectiveTransImage ,
projective_trans_image_size projective_trans_image_size ProjectiveTransImageSize projective_trans_image_size ProjectiveTransImageSize ProjectiveTransImageSize ,
projective_trans_region projective_trans_region ProjectiveTransRegion projective_trans_region ProjectiveTransRegion ProjectiveTransRegion ,
projective_trans_contour_xld projective_trans_contour_xld ProjectiveTransContourXld projective_trans_contour_xld ProjectiveTransContourXld ProjectiveTransContourXld ,
projective_trans_point_2d projective_trans_point_2d ProjectiveTransPoint2d projective_trans_point_2d ProjectiveTransPoint2d ProjectiveTransPoint2d ,
projective_trans_pixel projective_trans_pixel ProjectiveTransPixel projective_trans_pixel ProjectiveTransPixel ProjectiveTransPixel
hom_vector_to_proj_hom_mat2d hom_vector_to_proj_hom_mat2d HomVectorToProjHomMat2d hom_vector_to_proj_hom_mat2d HomVectorToProjHomMat2d HomVectorToProjHomMat2d ,
vector_to_proj_hom_mat2d vector_to_proj_hom_mat2d VectorToProjHomMat2d vector_to_proj_hom_mat2d VectorToProjHomMat2d VectorToProjHomMat2d
proj_match_points_ransac_guided proj_match_points_ransac_guided ProjMatchPointsRansacGuided proj_match_points_ransac_guided ProjMatchPointsRansacGuided ProjMatchPointsRansacGuided
Richard Hartley, Andrew Zisserman: „Multiple View Geometry in
Computer Vision“; Cambridge University Press, Cambridge; 2000.
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.
Matching