Name
proj_match_points_distortion_ransac_guidedT_proj_match_points_distortion_ransac_guidedProjMatchPointsDistortionRansacGuidedproj_match_points_distortion_ransac_guidedProjMatchPointsDistortionRansacGuidedProjMatchPointsDistortionRansacGuided — Automatische Bestimmung der projektiven Transformationsmatrix
zwischen zwei Bildern und des radialen Verzeichnungskoeffizienten
durch Zuordnung von Bildpunkten basierend auf bekannten Näherungen
der projektiven Transformationsmatrix und des radialen
Verzeichnungskoeffizienten.
proj_match_points_distortion_ransac_guided(Image1, Image2 : : Rows1, Cols1, Rows2, Cols2, GrayMatchMethod, MaskSize, HomMat2DGuide, KappaGuide, DistanceTolerance, MatchThreshold, EstimationMethod, DistanceThreshold, RandSeed : HomMat2D, Kappa, Error, Points1, Points2)
Herror T_proj_match_points_distortion_ransac_guided(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 HomMat2DGuide, const Htuple KappaGuide, const Htuple DistanceTolerance, 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_guided(Hobject Image1, Hobject Image2, const HTuple& Rows1, const HTuple& Cols1, const HTuple& Rows2, const HTuple& Cols2, const HTuple& GrayMatchMethod, const HTuple& MaskSize, const HTuple& HomMat2DGuide, const HTuple& KappaGuide, const HTuple& DistanceTolerance, const HTuple& MatchThreshold, const HTuple& EstimationMethod, const HTuple& DistanceThreshold, const HTuple& RandSeed, HTuple* HomMat2D, HTuple* Kappa, HTuple* Error, HTuple* Points1, HTuple* Points2)
HTuple HImage::ProjMatchPointsDistortionRansacGuided(const HImage& Image2, const HTuple& Rows1, const HTuple& Cols1, const HTuple& Rows2, const HTuple& Cols2, const HTuple& GrayMatchMethod, const HTuple& MaskSize, const HTuple& HomMat2DGuide, const HTuple& KappaGuide, const HTuple& DistanceTolerance, const HTuple& MatchThreshold, const HTuple& EstimationMethod, const HTuple& DistanceThreshold, const HTuple& RandSeed, HTuple* Kappa, HTuple* Error, HTuple* Points1, HTuple* Points2) const
void ProjMatchPointsDistortionRansacGuided(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& HomMat2DGuide, const HTuple& KappaGuide, const HTuple& DistanceTolerance, const HTuple& MatchThreshold, const HTuple& EstimationMethod, const HTuple& DistanceThreshold, const HTuple& RandSeed, HTuple* HomMat2D, HTuple* Kappa, HTuple* Error, HTuple* Points1, HTuple* Points2)
HHomMat2D HImage::ProjMatchPointsDistortionRansacGuided(const HImage& Image2, const HTuple& Rows1, const HTuple& Cols1, const HTuple& Rows2, const HTuple& Cols2, const HString& GrayMatchMethod, Hlong MaskSize, const HHomMat2D& HomMat2DGuide, double KappaGuide, double DistanceTolerance, const HTuple& MatchThreshold, const HString& EstimationMethod, const HTuple& DistanceThreshold, Hlong RandSeed, double* Kappa, double* Error, HTuple* Points1, HTuple* Points2) const
HHomMat2D HImage::ProjMatchPointsDistortionRansacGuided(const HImage& Image2, const HTuple& Rows1, const HTuple& Cols1, const HTuple& Rows2, const HTuple& Cols2, const HString& GrayMatchMethod, Hlong MaskSize, const HHomMat2D& HomMat2DGuide, double KappaGuide, double DistanceTolerance, Hlong MatchThreshold, const HString& EstimationMethod, double DistanceThreshold, Hlong RandSeed, double* Kappa, double* Error, HTuple* Points1, HTuple* Points2) const
HHomMat2D HImage::ProjMatchPointsDistortionRansacGuided(const HImage& Image2, const HTuple& Rows1, const HTuple& Cols1, const HTuple& Rows2, const HTuple& Cols2, const char* GrayMatchMethod, Hlong MaskSize, const HHomMat2D& HomMat2DGuide, double KappaGuide, double DistanceTolerance, Hlong MatchThreshold, const char* EstimationMethod, double DistanceThreshold, Hlong RandSeed, double* Kappa, double* Error, HTuple* Points1, HTuple* Points2) const
HHomMat2D HHomMat2D::ProjMatchPointsDistortionRansacGuided(const HImage& Image1, const HImage& Image2, const HTuple& Rows1, const HTuple& Cols1, const HTuple& Rows2, const HTuple& Cols2, const HString& GrayMatchMethod, Hlong MaskSize, double KappaGuide, double DistanceTolerance, const HTuple& MatchThreshold, const HString& EstimationMethod, const HTuple& DistanceThreshold, Hlong RandSeed, double* Kappa, double* Error, HTuple* Points1, HTuple* Points2) const
HHomMat2D HHomMat2D::ProjMatchPointsDistortionRansacGuided(const HImage& Image1, const HImage& Image2, const HTuple& Rows1, const HTuple& Cols1, const HTuple& Rows2, const HTuple& Cols2, const HString& GrayMatchMethod, Hlong MaskSize, double KappaGuide, double DistanceTolerance, Hlong MatchThreshold, const HString& EstimationMethod, double DistanceThreshold, Hlong RandSeed, double* Kappa, double* Error, HTuple* Points1, HTuple* Points2) const
HHomMat2D HHomMat2D::ProjMatchPointsDistortionRansacGuided(const HImage& Image1, const HImage& Image2, const HTuple& Rows1, const HTuple& Cols1, const HTuple& Rows2, const HTuple& Cols2, const char* GrayMatchMethod, Hlong MaskSize, double KappaGuide, double DistanceTolerance, Hlong MatchThreshold, const char* EstimationMethod, double DistanceThreshold, Hlong RandSeed, double* Kappa, double* Error, HTuple* Points1, HTuple* Points2) const
void HOperatorSetX.ProjMatchPointsDistortionRansacGuided(
[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 HomMat2dGuide, [in] VARIANT KappaGuide, [in] VARIANT DistanceTolerance, [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.ProjMatchPointsDistortionRansacGuided(
[in] IHImageX* Image2, [in] VARIANT Rows1, [in] VARIANT Cols1, [in] VARIANT Rows2, [in] VARIANT Cols2, [in] BSTR GrayMatchMethod, [in] Hlong MaskSize, [in] IHHomMat2DX* HomMat2dGuide, [in] double KappaGuide, [in] double DistanceTolerance, [in] VARIANT MatchThreshold, [in] BSTR EstimationMethod, [in] VARIANT DistanceThreshold, [in] Hlong RandSeed, [out] double* Kappa, [out] double* Error, [out] VARIANT* Points1, [out] VARIANT* Points2)
IHHomMat2DX* HHomMat2DX.ProjMatchPointsDistortionRansacGuided(
[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] double KappaGuide, [in] double DistanceTolerance, [in] VARIANT MatchThreshold, [in] BSTR EstimationMethod, [in] VARIANT DistanceThreshold, [in] Hlong RandSeed, [out] double* Kappa, [out] double* Error, [out] VARIANT* Points1, [out] VARIANT* Points2)
static void HOperatorSet.ProjMatchPointsDistortionRansacGuided(HObject image1, HObject image2, HTuple rows1, HTuple cols1, HTuple rows2, HTuple cols2, HTuple grayMatchMethod, HTuple maskSize, HTuple homMat2DGuide, HTuple kappaGuide, HTuple distanceTolerance, 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.ProjMatchPointsDistortionRansacGuided(HImage image2, HTuple rows1, HTuple cols1, HTuple rows2, HTuple cols2, string grayMatchMethod, int maskSize, HHomMat2D homMat2DGuide, double kappaGuide, double distanceTolerance, HTuple matchThreshold, string estimationMethod, HTuple distanceThreshold, int randSeed, out double kappa, out double error, out HTuple points1, out HTuple points2)
HHomMat2D HImage.ProjMatchPointsDistortionRansacGuided(HImage image2, HTuple rows1, HTuple cols1, HTuple rows2, HTuple cols2, string grayMatchMethod, int maskSize, HHomMat2D homMat2DGuide, double kappaGuide, double distanceTolerance, int matchThreshold, string estimationMethod, double distanceThreshold, int randSeed, out double kappa, out double error, out HTuple points1, out HTuple points2)
HHomMat2D HHomMat2D.ProjMatchPointsDistortionRansacGuided(HImage image1, HImage image2, HTuple rows1, HTuple cols1, HTuple rows2, HTuple cols2, string grayMatchMethod, int maskSize, double kappaGuide, double distanceTolerance, HTuple matchThreshold, string estimationMethod, HTuple distanceThreshold, int randSeed, out double kappa, out double error, out HTuple points1, out HTuple points2)
HHomMat2D HHomMat2D.ProjMatchPointsDistortionRansacGuided(HImage image1, HImage image2, HTuple rows1, HTuple cols1, HTuple rows2, HTuple cols2, string grayMatchMethod, int maskSize, double kappaGuide, double distanceTolerance, int matchThreshold, string estimationMethod, double distanceThreshold, int randSeed, out double kappa, out double error, out HTuple points1, out HTuple points2)
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, und bekannten Näherungen HomMat2DGuideHomMat2DGuideHomMat2DGuideHomMat2DGuideHomMat2DGuidehomMat2DGuide und
KappaGuideKappaGuideKappaGuideKappaGuideKappaGuidekappaGuide für die Transformation von Image1Image1Image1Image1Image1image1 zu
Image2Image2Image2Image2Image2image2 bestimmt
proj_match_points_distortion_ransac_guidedproj_match_points_distortion_ransac_guidedProjMatchPointsDistortionRansacGuidedproj_match_points_distortion_ransac_guidedProjMatchPointsDistortionRansacGuidedProjMatchPointsDistortionRansacGuided automatisch die
Korrespondenz der Punkte, die homogene projektive
Transformationsmatrix HomMat2DHomMat2DHomMat2DHomMat2DHomMat2DhomMat2D und den radialen
Verzeichnungskoeffizienten KappaKappaKappaKappaKappakappa, welche die
folgende Gleichung am besten erfüllen:
/ r2 \ / r1 \
| c2 | = HomMat2D * | c1 |.
\ 1 / \ 1 /
Hierbei sind (r1,c1) und
(r2,c2) Bildpunkte, die durch Entzerrung der Eingabebildpunkte mit
dem Divisionsmodell entstehen (siehe calibrate_camerascalibrate_camerasCalibrateCamerascalibrate_camerasCalibrateCamerasCalibrateCameras):
r = r' / (1+Kappa*(r'^2+c'^2)
c = c' / (1+Kappa*(r'^2+c'^2)
Hierbei bezeichnen (r1',c1') =
(Rows1Rows1Rows1Rows1Rows1rows1-0.5*(h-1),Cols1Cols1Cols1Cols1Cols1cols1-0.5*(w-1)) und (r2',c2') =
(Rows2Rows2Rows2Rows2Rows2rows2-0.5*(h-1),Cols2Cols2Cols2Cols2Cols2cols2-0.5*(w-1)) die verzerrten
Bildpunkte relativ zum Bildmittelpunkt und w und h die Breite
und Höhe der Eingabebilder.
proj_match_points_distortion_ransac_guidedproj_match_points_distortion_ransac_guidedProjMatchPointsDistortionRansacGuidedproj_match_points_distortion_ransac_guidedProjMatchPointsDistortionRansacGuidedProjMatchPointsDistortionRansacGuided 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):
CamPar = [0.0,KappaKappaKappaKappaKappakappa,1.0,1.0,0.5*(w-1),0.5*(h-1),w,h]
Die Näherung HomMat2DGuideHomMat2DGuideHomMat2DGuideHomMat2DGuideHomMat2DGuidehomMat2DGuide kann z.B. mit
proj_match_points_distortion_ransacproj_match_points_distortion_ransacProjMatchPointsDistortionRansacproj_match_points_distortion_ransacProjMatchPointsDistortionRansacProjMatchPointsDistortionRansac auf niedriger
aufgelösten Versionen von Image1Image1Image1Image1Image1image1 zu Image2Image2Image2Image2Image2image2
bestimmt werden. Siehe dazu das Beispiel unten.
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 von 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 Performanzsteigerung wird der Suchbereich für die
Match-Kandidaten basierend auf der Näherung der Transformation
eingeschränkt, die durch HomMat2DGuideHomMat2DGuideHomMat2DGuideHomMat2DGuideHomMat2DGuidehomMat2DGuide und
KappaGuideKappaGuideKappaGuideKappaGuideKappaGuidekappaGuide bestimmt wird. Nur Punkte, die innerhalb eines
Abstandes von DistanceToleranceDistanceToleranceDistanceToleranceDistanceToleranceDistanceTolerancedistanceTolerance um die Transformation eines
Punktes aus Image1Image1Image1Image1Image1image1 mittelsHomMat2DGuideHomMat2DGuideHomMat2DGuideHomMat2DGuideHomMat2DGuidehomMat2DGuide und
KappaGuideKappaGuideKappaGuideKappaGuideKappaGuidekappaGuide in Image2Image2Image2Image2Image2image2 liegen, werden für das
Matching in Betracht gezogen.
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 sind. DistanceThresholdDistanceThresholdDistanceThresholdDistanceThresholdDistanceThresholddistanceThreshold sollte also kleiner als
DistanceToleranceDistanceToleranceDistanceToleranceDistanceToleranceDistanceTolerancedistanceTolerance sein.
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.
- Multithreading-Typ: reentrant (läuft parallel zu nicht-exklusiven Operatoren).
- Multithreading-Bereich: global (kann von jedem Thread aufgerufen werden).
- Wird ohne Parallelisierung verarbeitet.
Eingabepunkte in Bild 1 (Zeilenkoordinate).
Restriktion: length(Rows1) >= 5
Eingabepunkte in Bild 1 (Spaltenkoordinate).
Restriktion: length(Cols1) == length(Rows1)
Eingabepunkte in Bild 2 (Zeilenkoordinate).
Restriktion: length(Rows2) >= 5
Eingabepunkte in Bild 2 (Spaltenkoordinate).
Restriktion: length(Cols2) == length(Rows2)
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"
Größe der Grauwertmasken.
Defaultwert: 10
Typischer Wertebereich: 3
≤
MaskSize
MaskSize
MaskSize
MaskSize
MaskSize
maskSize
≤
15
Restriktion: MaskSize >= 1
Näherung der projektiven Transformationsmatrix
zwischen den zwei Bildern.
Näherung des radialen Verzeichnungskoeffizienten
in den zwei Bildern.
Toleranz des Suchfensters für das Punktmatching.
Defaultwert: 20.0
Wertevorschläge: 0.2, 0.5, 1.0, 2.0, 3.0, 5.0, 10.0, 20.0, 50.0
Restriktion: DistanceTolerance > 0
Schwellwert für Grauwertkorrespondenzen.
Defaultwert: 0.7
Wertevorschläge: 0.9, 0.7, 0.5, 10, 20, 50, 100
Schätzalgorithmus für die 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"
Schwelle für die Konsistenzüberprüfung.
Defaultwert: 1
Restriktion: DistanceThreshold > 0
Startwert für den Zufallszahlengenerator.
Defaultwert: 0
Berechnete homogene projektive Transformationsmatrix.
Berechneter Verzeichnungskoeffizient.
Mittlerer quadratischer Transformationsfehler.
Indizes der zugeordneten Eingabepunkte aus Bild 1.
Indizes der zugeordneten Eingabepunkte aus Bild 2.
Factor := 0.5
zoom_image_factor (Image1, Image1Zoomed, Factor, Factor, 'constant')
zoom_image_factor (Image2, Image2Zoomed, Factor, Factor, 'constant')
points_foerstner (Image1Zoomed, 1, 2, 3, 200, 0.3, 'gauss', 'true', \
Rows1, Cols1, _, _, _, _, _, _, _, _)
points_foerstner (Image2Zoomed, 1, 2, 3, 200, 0.3, 'gauss', 'true', \
Rows2, Cols2, _, _, _, _, _, _, _, _)
get_image_size (Image1Zoomed, Width, Height)
proj_match_points_distortion_ransac (Image1Zoomed, Image2Zoomed, \
Rows1, Cols1, Rows2, Cols2, \
'ncc', 10, 0, 0, Height, Width, \
0, 0.5, 'gold_standard', 2, 0, \
HomMat2D, Kappa, Error, \
Points1, Points2)
hom_mat2d_scale_local (HomMat2D, Factor, Factor, HomMat2DGuide)
hom_mat2d_scale (HomMat2DGuide, 1.0/Factor, 1.0/Factor, 0, 0, \
HomMat2DGuide)
KappaGuide := Kappa*Factor*Factor
points_foerstner (Image1, 1, 2, 3, 200, 0.3, 'gauss', 'true', \
Rows1, Cols1, _, _, _, _, _, _, _, _)
points_foerstner (Image2, 1, 2, 3, 200, 0.3, 'gauss', 'true', \
Rows2, Cols2, _, _, _, _, _, _, _, _)
proj_match_points_distortion_ransac_guided (Image1, Image2, \
Rows1, Cols1, \
Rows2, Cols2, \
'ncc', 10, \
HomMat2DGuide, \
KappaGuide, 5, 0.5, \
'gold_standard', 2, 0, \
HomMat2D, Kappa, \
Error, Points1, Points2)
get_image_size (Image1, Width, Height)
CamParDist := [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)
points_foerstnerpoints_foerstnerPointsFoerstnerpoints_foerstnerPointsFoerstnerPointsFoerstner,
points_harrispoints_harrisPointsHarrispoints_harrisPointsHarrisPointsHarris
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
proj_match_points_distortion_ransacproj_match_points_distortion_ransacProjMatchPointsDistortionRansacproj_match_points_distortion_ransacProjMatchPointsDistortionRansacProjMatchPointsDistortionRansac
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
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.
Matching