proj_match_points_distortion_ransac_guidedT_proj_match_points_distortion_ransac_guidedProjMatchPointsDistortionRansacGuidedProjMatchPointsDistortionRansacGuidedproj_match_points_distortion_ransac_guided (Operator)

Name

proj_match_points_distortion_ransac_guidedT_proj_match_points_distortion_ransac_guidedProjMatchPointsDistortionRansacGuidedProjMatchPointsDistortionRansacGuidedproj_match_points_distortion_ransac_guided — 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.

Signatur

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)

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 HImage::ProjMatchPointsDistortionRansacGuided(const HImage& Image2, const HTuple& Rows1, const HTuple& Cols1, const HTuple& Rows2, const HTuple& Cols2, const wchar_t* GrayMatchMethod, Hlong MaskSize, const HHomMat2D& HomMat2DGuide, double KappaGuide, double DistanceTolerance, Hlong MatchThreshold, const wchar_t* EstimationMethod, double DistanceThreshold, Hlong RandSeed, double* Kappa, double* Error, HTuple* Points1, HTuple* Points2) const   (Nur Windows)

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

HHomMat2D HHomMat2D::ProjMatchPointsDistortionRansacGuided(const HImage& Image1, const HImage& Image2, const HTuple& Rows1, const HTuple& Cols1, const HTuple& Rows2, const HTuple& Cols2, const wchar_t* GrayMatchMethod, Hlong MaskSize, double KappaGuide, double DistanceTolerance, Hlong MatchThreshold, const wchar_t* EstimationMethod, double DistanceThreshold, Hlong RandSeed, double* Kappa, double* Error, HTuple* Points1, HTuple* Points2) const   (Nur Windows)

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)

def proj_match_points_distortion_ransac_guided(image_1: HObject, image_2: HObject, rows_1: Sequence[Union[float, int]], cols_1: Sequence[Union[float, int]], rows_2: Sequence[Union[float, int]], cols_2: Sequence[Union[float, int]], gray_match_method: str, mask_size: int, hom_mat_2dguide: Sequence[float], kappa_guide: float, distance_tolerance: float, match_threshold: Union[int, float], estimation_method: str, distance_threshold: Union[float, int], rand_seed: int) -> Tuple[Sequence[float], float, float, Sequence[int], Sequence[int]]

Beschreibung

Ausgehend von einer Menge charakteristischer Punkte (Rows1Rows1Rows1Rows1rows1rows_1,Cols1Cols1Cols1Cols1cols1cols_1) und (Rows2Rows2Rows2Rows2rows2rows_2,Cols2Cols2Cols2Cols2cols2cols_2) in den beiden Eingabebildern Image1Image1Image1Image1image1image_1 und Image2Image2Image2Image2image2image_2, welche dieselbe Größe besitzen müssen, und bekannten Näherungen HomMat2DGuideHomMat2DGuideHomMat2DGuideHomMat2DGuidehomMat2DGuidehom_mat_2dguide und KappaGuideKappaGuideKappaGuideKappaGuidekappaGuidekappa_guide für die Transformation von Image1Image1Image1Image1image1image_1 zu Image2Image2Image2Image2image2image_2 bestimmt proj_match_points_distortion_ransac_guidedproj_match_points_distortion_ransac_guidedProjMatchPointsDistortionRansacGuidedProjMatchPointsDistortionRansacGuidedProjMatchPointsDistortionRansacGuidedproj_match_points_distortion_ransac_guided automatisch die Korrespondenz der Punkte, die homogene projektive Transformationsmatrix HomMat2DHomMat2DHomMat2DHomMat2DhomMat2Dhom_mat_2d 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 Kalibrierung): Hierbei bezeichnen 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_guidedProjMatchPointsDistortionRansacGuidedProjMatchPointsDistortionRansacGuidedProjMatchPointsDistortionRansacGuidedproj_match_points_distortion_ransac_guided 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_parChangeRadialDistortionCamParChangeRadialDistortionCamParChangeRadialDistortionCamParchange_radial_distortion_cam_par, change_radial_distortion_imagechange_radial_distortion_imageChangeRadialDistortionImageChangeRadialDistortionImageChangeRadialDistortionImagechange_radial_distortion_image und change_radial_distortion_pointschange_radial_distortion_pointsChangeRadialDistortionPointsChangeRadialDistortionPointsChangeRadialDistortionPointschange_radial_distortion_points):

Die Näherung HomMat2DGuideHomMat2DGuideHomMat2DGuideHomMat2DGuidehomMat2DGuidehom_mat_2dguide kann z.B. mit proj_match_points_distortion_ransacproj_match_points_distortion_ransacProjMatchPointsDistortionRansacProjMatchPointsDistortionRansacProjMatchPointsDistortionRansacproj_match_points_distortion_ransac auf niedriger aufgelösten Versionen von Image1Image1Image1Image1image1image_1 zu Image2Image2Image2Image2image2image_2 bestimmt werden. Siehe dazu das Beispiel unten.

Das Matchingverfahren beruht auf charakteristischen Punkten, welche mit Punktoperatoren, wie z.B. points_foerstnerpoints_foerstnerPointsFoerstnerPointsFoerstnerPointsFoerstnerpoints_foerstner oder points_harrispoints_harrisPointsHarrisPointsHarrisPointsHarrispoints_harris, 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 MaskSizeMaskSizeMaskSizeMaskSizemaskSizemask_size x MaskSizeMaskSizeMaskSizeMaskSizemaskSizemask_size. Es können drei Metriken für die Korrelation gewählt werden. Hat GrayMatchMethodGrayMatchMethodGrayMatchMethodGrayMatchMethodgrayMatchMethodgray_match_method 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_disparityBinocularDisparityBinocularDisparityBinocularDisparitybinocular_disparity). 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 MatchThresholdMatchThresholdMatchThresholdMatchThresholdmatchThresholdmatch_threshold ('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 HomMat2DGuideHomMat2DGuideHomMat2DGuideHomMat2DGuidehomMat2DGuidehom_mat_2dguide und KappaGuideKappaGuideKappaGuideKappaGuidekappaGuidekappa_guide bestimmt wird. Nur Punkte, die innerhalb eines Abstandes von DistanceToleranceDistanceToleranceDistanceToleranceDistanceTolerancedistanceTolerancedistance_tolerance um die Transformation eines Punktes aus Image1Image1Image1Image1image1image_1 mittelsHomMat2DGuideHomMat2DGuideHomMat2DGuideHomMat2DGuidehomMat2DGuidehom_mat_2dguide und KappaGuideKappaGuideKappaGuideKappaGuidekappaGuidekappa_guide in Image2Image2Image2Image2image2image_2 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 HomMat2DHomMat2DHomMat2DHomMat2DhomMat2Dhom_mat_2d und des radialen Verzeichnungskoeffizienten KappaKappaKappaKappakappakappa benutzt. Dabei wird versucht, diese Parameter so zu wählen, dass sie bezüglich der Schranke DistanceThresholdDistanceThresholdDistanceThresholdDistanceThresholddistanceThresholddistance_threshold zu möglichst vielen Punktpaaren konsistent sind. DistanceThresholdDistanceThresholdDistanceThresholdDistanceThresholddistanceThresholddistance_threshold sollte also kleiner als DistanceToleranceDistanceToleranceDistanceToleranceDistanceTolerancedistanceTolerancedistance_tolerance sein.

Der Parameter EstimationMethodEstimationMethodEstimationMethodEstimationMethodestimationMethodestimation_method gibt an, welches Verfahren zur Berechnung der projektiven Transformationsmatrix angewendet wird. Falls EstimationMethodEstimationMethodEstimationMethodEstimationMethodestimationMethodestimation_method 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 EstimationMethodEstimationMethodEstimationMethodEstimationMethodestimationMethodestimation_method = '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 EstimationMethodEstimationMethodEstimationMethodEstimationMethodestimationMethodestimation_method = '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. Points1Points1Points1Points1points1points_1 enthält die Indizes der zugeordneten Eingabepunkte im ersten Bild, Points2Points2Points2Points2points2points_2 die Indizes der dazu korrespondierenden Punkte im zweiten Bild.

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

Ausführungsinformationen

Parameter

Image1Image1Image1Image1image1image_1 (input_object)  singlechannelimage objectHImageHObjectHImageHobject (byte / uint2)

Eingabebild 1.

Image2Image2Image2Image2image2image_2 (input_object)  singlechannelimage objectHImageHObjectHImageHobject (byte / uint2)

Eingabebild 2.

Rows1Rows1Rows1Rows1rows1rows_1 (input_control)  point.y-array HTupleSequence[Union[float, int]]HTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)

Eingabepunkte in Bild 1 (Zeilenkoordinate).

Restriktion: length(Rows1) >= 5

Cols1Cols1Cols1Cols1cols1cols_1 (input_control)  point.x-array HTupleSequence[Union[float, int]]HTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)

Eingabepunkte in Bild 1 (Spaltenkoordinate).

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

Rows2Rows2Rows2Rows2rows2rows_2 (input_control)  point.y-array HTupleSequence[Union[float, int]]HTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)

Eingabepunkte in Bild 2 (Zeilenkoordinate).

Restriktion: length(Rows2) >= 5

Cols2Cols2Cols2Cols2cols2cols_2 (input_control)  point.x-array HTupleSequence[Union[float, int]]HTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)

Eingabepunkte in Bild 2 (Spaltenkoordinate).

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

GrayMatchMethodGrayMatchMethodGrayMatchMethodGrayMatchMethodgrayMatchMethodgray_match_method (input_control)  string HTuplestrHTupleHtuple (string) (string) (HString) (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"

MaskSizeMaskSizeMaskSizeMaskSizemaskSizemask_size (input_control)  integer HTupleintHTupleHtuple (integer) (int / long) (Hlong) (Hlong)

Größe der Grauwertmasken.

Defaultwert: 10

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

Restriktion: MaskSize >= 1

HomMat2DGuideHomMat2DGuideHomMat2DGuideHomMat2DGuidehomMat2DGuidehom_mat_2dguide (input_control)  hom_mat2d HHomMat2D, HTupleSequence[float]HTupleHtuple (real) (double) (double) (double)

Näherung der projektiven Transformationsmatrix zwischen den zwei Bildern.

KappaGuideKappaGuideKappaGuideKappaGuidekappaGuidekappa_guide (input_control)  real HTuplefloatHTupleHtuple (real) (double) (double) (double)

Näherung des radialen Verzeichnungskoeffizienten in den zwei Bildern.

DistanceToleranceDistanceToleranceDistanceToleranceDistanceTolerancedistanceTolerancedistance_tolerance (input_control)  real HTuplefloatHTupleHtuple (real) (double) (double) (double)

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

MatchThresholdMatchThresholdMatchThresholdMatchThresholdmatchThresholdmatch_threshold (input_control)  number HTupleUnion[int, float]HTupleHtuple (integer / real) (int / long / double) (Hlong / double) (Hlong / double)

Schwellenwert für Grauwertkorrespondenzen.

Defaultwert: 0.7

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

EstimationMethodEstimationMethodEstimationMethodEstimationMethodestimationMethodestimation_method (input_control)  string HTuplestrHTupleHtuple (string) (string) (HString) (char*)

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"

DistanceThresholdDistanceThresholdDistanceThresholdDistanceThresholddistanceThresholddistance_threshold (input_control)  number HTupleUnion[float, int]HTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)

Schwelle für die Konsistenzüberprüfung.

Defaultwert: 1

Restriktion: DistanceThreshold > 0

RandSeedRandSeedRandSeedRandSeedrandSeedrand_seed (input_control)  integer HTupleintHTupleHtuple (integer) (int / long) (Hlong) (Hlong)

Startwert für den Zufallszahlengenerator.

Defaultwert: 0

HomMat2DHomMat2DHomMat2DHomMat2DhomMat2Dhom_mat_2d (output_control)  hom_mat2d HHomMat2D, HTupleSequence[float]HTupleHtuple (real) (double) (double) (double)

Berechnete homogene projektive Transformationsmatrix.

KappaKappaKappaKappakappakappa (output_control)  real HTuplefloatHTupleHtuple (real) (double) (double) (double)

Berechneter Verzeichnungskoeffizient.

ErrorErrorErrorErrorerrorerror (output_control)  real HTuplefloatHTupleHtuple (real) (double) (double) (double)

Mittlerer quadratischer Transformationsfehler.

Points1Points1Points1Points1points1points_1 (output_control)  integer-array HTupleSequence[int]HTupleHtuple (integer) (int / long) (Hlong) (Hlong)

Indizes der zugeordneten Eingabepunkte aus Bild 1.

Points2Points2Points2Points2points2points_2 (output_control)  integer-array HTupleSequence[int]HTupleHtuple (integer) (int / long) (Hlong) (Hlong)

Indizes der zugeordneten Eingabepunkte aus Bild 2.

Beispiel (HDevelop)

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 := ['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_foerstnerPointsFoerstnerPointsFoerstnerPointsFoerstnerpoints_foerstner, points_harrispoints_harrisPointsHarrisPointsHarrisPointsHarrispoints_harris

Nachfolger

vector_to_proj_hom_mat2d_distortionvector_to_proj_hom_mat2d_distortionVectorToProjHomMat2dDistortionVectorToProjHomMat2dDistortionVectorToProjHomMat2dDistortionvector_to_proj_hom_mat2d_distortion, change_radial_distortion_cam_parchange_radial_distortion_cam_parChangeRadialDistortionCamParChangeRadialDistortionCamParChangeRadialDistortionCamParchange_radial_distortion_cam_par, change_radial_distortion_imagechange_radial_distortion_imageChangeRadialDistortionImageChangeRadialDistortionImageChangeRadialDistortionImagechange_radial_distortion_image, change_radial_distortion_pointschange_radial_distortion_pointsChangeRadialDistortionPointsChangeRadialDistortionPointsChangeRadialDistortionPointschange_radial_distortion_points, gen_binocular_proj_rectificationgen_binocular_proj_rectificationGenBinocularProjRectificationGenBinocularProjRectificationGenBinocularProjRectificationgen_binocular_proj_rectification, projective_trans_imageprojective_trans_imageProjectiveTransImageProjectiveTransImageProjectiveTransImageprojective_trans_image, projective_trans_image_sizeprojective_trans_image_sizeProjectiveTransImageSizeProjectiveTransImageSizeProjectiveTransImageSizeprojective_trans_image_size, projective_trans_regionprojective_trans_regionProjectiveTransRegionProjectiveTransRegionProjectiveTransRegionprojective_trans_region, projective_trans_contour_xldprojective_trans_contour_xldProjectiveTransContourXldProjectiveTransContourXldProjectiveTransContourXldprojective_trans_contour_xld, projective_trans_point_2dprojective_trans_point_2dProjectiveTransPoint2dProjectiveTransPoint2dProjectiveTransPoint2dprojective_trans_point_2d, projective_trans_pixelprojective_trans_pixelProjectiveTransPixelProjectiveTransPixelProjectiveTransPixelprojective_trans_pixel

Alternativen

proj_match_points_distortion_ransacproj_match_points_distortion_ransacProjMatchPointsDistortionRansacProjMatchPointsDistortionRansacProjMatchPointsDistortionRansacproj_match_points_distortion_ransac

Siehe auch

proj_match_points_ransacproj_match_points_ransacProjMatchPointsRansacProjMatchPointsRansacProjMatchPointsRansacproj_match_points_ransac, proj_match_points_ransac_guidedproj_match_points_ransac_guidedProjMatchPointsRansacGuidedProjMatchPointsRansacGuidedProjMatchPointsRansacGuidedproj_match_points_ransac_guided, hom_vector_to_proj_hom_mat2dhom_vector_to_proj_hom_mat2dHomVectorToProjHomMat2dHomVectorToProjHomMat2dHomVectorToProjHomMat2dhom_vector_to_proj_hom_mat2d, vector_to_proj_hom_mat2dvector_to_proj_hom_mat2dVectorToProjHomMat2dVectorToProjHomMat2dVectorToProjHomMat2dvector_to_proj_hom_mat2d

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