KlassenKlassenKlassenKlassen | | | | Operatoren

scene_flow_calibT_scene_flow_calibSceneFlowCalibscene_flow_calibSceneFlowCalibSceneFlowCalib (Operator)

Name

scene_flow_calibT_scene_flow_calibSceneFlowCalibscene_flow_calibSceneFlowCalibSceneFlowCalib — Berechnung des kalibrierten Szenenflusses zwischen zwei Stereobildpaaren.

Signatur

scene_flow_calib(ImageRect1T1, ImageRect2T1, ImageRect1T2, ImageRect2T2, Disparity : : SmoothingFlow, SmoothingDisparity, GenParamName, GenParamValue, CamParamRect1, CamParamRect2, RelPoseRect : ObjectModel3D)

Herror T_scene_flow_calib(const Hobject ImageRect1T1, const Hobject ImageRect2T1, const Hobject ImageRect1T2, const Hobject ImageRect2T2, const Hobject Disparity, const Htuple SmoothingFlow, const Htuple SmoothingDisparity, const Htuple GenParamName, const Htuple GenParamValue, const Htuple CamParamRect1, const Htuple CamParamRect2, const Htuple RelPoseRect, Htuple* ObjectModel3D)

Herror scene_flow_calib(Hobject ImageRect1T1, Hobject ImageRect2T1, Hobject ImageRect1T2, Hobject ImageRect2T2, Hobject Disparity, const HTuple& SmoothingFlow, const HTuple& SmoothingDisparity, const HTuple& GenParamName, const HTuple& GenParamValue, const HTuple& CamParamRect1, const HTuple& CamParamRect2, const HTuple& RelPoseRect, Hlong* ObjectModel3D)

Herror scene_flow_calib(Hobject ImageRect1T1, Hobject ImageRect2T1, Hobject ImageRect1T2, Hobject ImageRect2T2, Hobject Disparity, const HTuple& SmoothingFlow, const HTuple& SmoothingDisparity, const HTuple& GenParamName, const HTuple& GenParamValue, const HTuple& CamParamRect1, const HTuple& CamParamRect2, const HTuple& RelPoseRect, HTuple* ObjectModel3D)

void HObjectModel3D::SceneFlowCalib(const HImageArray& ImageRect1T1, const HImageArray& ImageRect2T1, const HImageArray& ImageRect1T2, const HImageArray& ImageRect2T2, const HImageArray& Disparity, const HTuple& SmoothingFlow, const HTuple& SmoothingDisparity, const HTuple& GenParamName, const HTuple& GenParamValue, const HTuple& CamParamRect1, const HTuple& CamParamRect2, const HTuple& RelPoseRect)

void SceneFlowCalib(const HObject& ImageRect1T1, const HObject& ImageRect2T1, const HObject& ImageRect1T2, const HObject& ImageRect2T2, const HObject& Disparity, const HTuple& SmoothingFlow, const HTuple& SmoothingDisparity, const HTuple& GenParamName, const HTuple& GenParamValue, const HTuple& CamParamRect1, const HTuple& CamParamRect2, const HTuple& RelPoseRect, HTuple* ObjectModel3D)

static HObjectModel3DArray HObjectModel3D::SceneFlowCalib(const HImage& ImageRect1T1, const HImage& ImageRect2T1, const HImage& ImageRect1T2, const HImage& ImageRect2T2, const HImage& Disparity, const HTuple& SmoothingFlow, const HTuple& SmoothingDisparity, const HTuple& GenParamName, const HTuple& GenParamValue, const HTuple& CamParamRect1, const HTuple& CamParamRect2, const HPose& RelPoseRect)

void HObjectModel3D::SceneFlowCalib(const HImage& ImageRect1T1, const HImage& ImageRect2T1, const HImage& ImageRect1T2, const HImage& ImageRect2T2, const HImage& Disparity, double SmoothingFlow, double SmoothingDisparity, const HString& GenParamName, const HString& GenParamValue, const HTuple& CamParamRect1, const HTuple& CamParamRect2, const HPose& RelPoseRect)

void HObjectModel3D::SceneFlowCalib(const HImage& ImageRect1T1, const HImage& ImageRect2T1, const HImage& ImageRect1T2, const HImage& ImageRect2T2, const HImage& Disparity, double SmoothingFlow, double SmoothingDisparity, const char* GenParamName, const char* GenParamValue, const HTuple& CamParamRect1, const HTuple& CamParamRect2, const HPose& RelPoseRect)

void HOperatorSetX.SceneFlowCalib(
[in] IHUntypedObjectX* ImageRect1T1, [in] IHUntypedObjectX* ImageRect2T1, [in] IHUntypedObjectX* ImageRect1T2, [in] IHUntypedObjectX* ImageRect2T2, [in] IHUntypedObjectX* Disparity, [in] VARIANT SmoothingFlow, [in] VARIANT SmoothingDisparity, [in] VARIANT GenParamName, [in] VARIANT GenParamValue, [in] VARIANT CamParamRect1, [in] VARIANT CamParamRect2, [in] VARIANT RelPoseRect, [out] VARIANT* ObjectModel3D)

void HObjectModel3DX.SceneFlowCalib(
[in] IHImageX* ImageRect1T1, [in] IHImageX* ImageRect2T1, [in] IHImageX* ImageRect1T2, [in] IHImageX* ImageRect2T2, [in] IHImageX* Disparity, [in] VARIANT SmoothingFlow, [in] VARIANT SmoothingDisparity, [in] VARIANT GenParamName, [in] VARIANT GenParamValue, [in] VARIANT CamParamRect1, [in] VARIANT CamParamRect2, [in] VARIANT RelPoseRect)

static void HOperatorSet.SceneFlowCalib(HObject imageRect1T1, HObject imageRect2T1, HObject imageRect1T2, HObject imageRect2T2, HObject disparity, HTuple smoothingFlow, HTuple smoothingDisparity, HTuple genParamName, HTuple genParamValue, HTuple camParamRect1, HTuple camParamRect2, HTuple relPoseRect, out HTuple objectModel3D)

static HObjectModel3D[] HObjectModel3D.SceneFlowCalib(HImage imageRect1T1, HImage imageRect2T1, HImage imageRect1T2, HImage imageRect2T2, HImage disparity, HTuple smoothingFlow, HTuple smoothingDisparity, HTuple genParamName, HTuple genParamValue, HTuple camParamRect1, HTuple camParamRect2, HPose relPoseRect)

void HObjectModel3D.SceneFlowCalib(HImage imageRect1T1, HImage imageRect2T1, HImage imageRect1T2, HImage imageRect2T2, HImage disparity, double smoothingFlow, double smoothingDisparity, string genParamName, string genParamValue, HTuple camParamRect1, HTuple camParamRect2, HPose relPoseRect)

Beschreibung

scene_flow_calibscene_flow_calibSceneFlowCalibscene_flow_calibSceneFlowCalibSceneFlowCalib berechnet den kalibrierten Szenenfluss zwischen zwei rektifizierten aufeinanderfolgenden Stereobildpaaren. Der Szenenfluss ist die dreidimensionale Position und Bewegung von Oberflächenpunkten in einer dynamischen Szene. Die Bewegung in den Bildern kann dadurch verursacht werden, dass sich Objekte oder die Kamera (oder beides) in der Welt zwischen den Aufnahmen der beiden Stereobilder bewegen.

Der Szenenfluss wird in dem 3D-Objektmodell ObjectModel3DObjectModel3DObjectModel3DObjectModel3DObjectModel3DobjectModel3D zurückgegeben. Das 3D-Objektmodell enthält die Koordinaten der rekonstruierten 3D-Punkte. Zusätzlich wird der 3D-Fluss in dem 3D-Objektmodell durch die Attribute '&flow_x'"&flow_x""&flow_x""&flow_x""&flow_x""&flow_x", '&flow_y'"&flow_y""&flow_y""&flow_y""&flow_y""&flow_y" und '&flow_z'"&flow_z""&flow_z""&flow_z""&flow_z""&flow_z" kodiert. Es ist zu beachten, dass der Speicher eines 3D-Objektmodells mittels clear_object_model_3dclear_object_model_3dClearObjectModel3dclear_object_model_3dClearObjectModel3dClearObjectModel3d freigegeben werden muss, falls es nicht mehr verwendet wird.

Die aufeinanderfolgenden Stereobildpaare werden in ImageRect1T1ImageRect1T1ImageRect1T1ImageRect1T1ImageRect1T1imageRect1T1, ImageRect2T1ImageRect2T1ImageRect2T1ImageRect2T1ImageRect2T1imageRect2T1, ImageRect1T2ImageRect1T2ImageRect1T2ImageRect1T2ImageRect1T2imageRect1T2 und ImageRect2T2ImageRect2T2ImageRect2T2ImageRect2T2ImageRect2T2imageRect2T2 übergeben. Jedes Stereobildpaar muss rektifiziert sein. Die Bildpaare können mit den Operatoren calibrate_camerascalibrate_camerasCalibrateCamerascalibrate_camerasCalibrateCamerasCalibrateCameras, gen_binocular_rectification_mapgen_binocular_rectification_mapGenBinocularRectificationMapgen_binocular_rectification_mapGenBinocularRectificationMapGenBinocularRectificationMap und map_imagemap_imageMapImagemap_imageMapImageMapImage rektifiziert werden.

Die Kamerageometrie des rektifizierten binokularen Kamerasystems wird durch die internen Kameraparameter CamParamRect1CamParamRect1CamParamRect1CamParamRect1CamParamRect1camParamRect1 der rektifizierten Kamera 1 und CamParamRect2CamParamRect2CamParamRect2CamParamRect2CamParamRect2camParamRect2 der rektifizierten Kamera 2 und die Pose RelPoseRectRelPoseRectRelPoseRectRelPoseRectRelPoseRectrelPoseRect bestimmt, welche die Lage des rektifizierten Kamerasystems 2 bezüglich des rektifizierten Kamerasystems 1 beschreibt. Die Werte für diese Kameraparameter können mit den Operatoren calibrate_camerascalibrate_camerasCalibrateCamerascalibrate_camerasCalibrateCamerasCalibrateCameras und gen_binocular_rectification_mapgen_binocular_rectification_mapGenBinocularRectificationMapgen_binocular_rectification_mapGenBinocularRectificationMapGenBinocularRectificationMap bestimmt werden. Die Brennweite und Pixelgröße der rektifizierten Kamerasysteme 1 und 2 müssen gleich sein.

Außerdem wird ein einkanaliges Disparitätsbild DisparityDisparityDisparityDisparityDisparitydisparity benötigt, welches für jedes Pixel (r,c1) des Bildes ImageRect1T1ImageRect1T1ImageRect1T1ImageRect1T1ImageRect1T1imageRect1T1 ein homologes Pixel (r,c2) im Bild ImageRect2T1ImageRect2T1ImageRect2T1ImageRect2T1ImageRect2T1imageRect2T1 festlegt. Hierbei gilt c2=c1+d(r,c1), wobei d(r,c) die Disparitäit in DisparityDisparityDisparityDisparityDisparitydisparity am Pixel (r,c) ist. Die Disparität kann mit binocular_disparitybinocular_disparityBinocularDisparitybinocular_disparityBinocularDisparityBinocularDisparity oder binocular_disparity_mgbinocular_disparity_mgBinocularDisparityMgbinocular_disparity_mgBinocularDisparityMgBinocularDisparityMg berechnet werden.

Um den kalibrierten Szenenfluss zu berechnen, wird intern zunächst scene_flow_uncalibscene_flow_uncalibSceneFlowUncalibscene_flow_uncalibSceneFlowUncalibSceneFlowUncalib ausgeführt. Die Ergebnisse werden dann unter Verwendung der oben beschriebenen Stereokamera-Geometrie-Parameter in 3D-Punkte und 3D-Flussvektoren umgerechnet.

Für eine Beschreibung der weiteren Parameter von scene_flow_calibscene_flow_calibSceneFlowCalibscene_flow_calibSceneFlowCalibSceneFlowCalib wird auf scene_flow_uncalibscene_flow_uncalibSceneFlowUncalibscene_flow_uncalibSceneFlowUncalibSceneFlowUncalib verwiesen.

Parallelisierung

Dieser Operator liefert ein Handle zurück. Es ist zu beachten, dass der Zustand einer Instanz dieses Handletyps durch bestimmte Operatoren geändert werden kann, obwohl das Handle als Eingabeparameter in diesen Operatoren verwendet wird.

Parameter

ImageRect1T1ImageRect1T1ImageRect1T1ImageRect1T1ImageRect1T1imageRect1T1 (input_object)  singlechannelimage(-array) objectHImageHImageHImageHImageXHobject (byte / uint2 / real)

Eingabebild 1 zum Zeitpunkt .

ImageRect2T1ImageRect2T1ImageRect2T1ImageRect2T1ImageRect2T1imageRect2T1 (input_object)  singlechannelimage(-array) objectHImageHImageHImageHImageXHobject (byte / uint2 / real)

Eingabebild 2 zum Zeitpunkt .

ImageRect1T2ImageRect1T2ImageRect1T2ImageRect1T2ImageRect1T2imageRect1T2 (input_object)  singlechannelimage(-array) objectHImageHImageHImageHImageXHobject (byte / uint2 / real)

Eingabebild 1 zum Zeitpunkt .

ImageRect2T2ImageRect2T2ImageRect2T2ImageRect2T2ImageRect2T2imageRect2T2 (input_object)  singlechannelimage(-array) objectHImageHImageHImageHImageXHobject (byte / uint2 / real)

Eingabebild 2 zum Zeitpunkt .

DisparityDisparityDisparityDisparityDisparitydisparity (input_object)  singlechannelimage(-array) objectHImageHImageHImageHImageXHobject (real)

Dispartät zwischen Eingabebild 1 und 2 zum Zeitpunkt .

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

Gewicht des Regularisierungsterms relativ zum Datenterm (Ableitungen des optischen Flusses).

Defaultwert: 40.0

Wertevorschläge: 10.0, 20.0, 30.0, 40.0, 50.0, 60.0, 70.0, 80.0, 90.0, 100.0

Restriktion: SmoothingFlow > 0.0

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

Gewicht des Regularisierungsterms relativ zum Datenterm (Ableitungen der Änderung der Disparität).

Defaultwert: 40.0

Wertevorschläge: 10.0, 20.0, 30.0, 40.0, 50.0, 60.0, 70.0, 80.0, 90.0, 100.0

Restriktion: SmoothingDisparity > 0.0

GenParamNameGenParamNameGenParamNameGenParamNameGenParamNamegenParamName (input_control)  attribute.name(-array) HTupleHTupleHTupleVARIANTHtuple (string) (string) (HString) (char*) (BSTR) (char*)

Parametername(n) für den Algorithmus.

Defaultwert: 'default_parameters' "default_parameters" "default_parameters" "default_parameters" "default_parameters" "default_parameters"

Wertevorschläge: 'default_parameters'"default_parameters""default_parameters""default_parameters""default_parameters""default_parameters", 'warp_levels'"warp_levels""warp_levels""warp_levels""warp_levels""warp_levels", 'warp_zoom_factor'"warp_zoom_factor""warp_zoom_factor""warp_zoom_factor""warp_zoom_factor""warp_zoom_factor", 'warp_last_level'"warp_last_level""warp_last_level""warp_last_level""warp_last_level""warp_last_level", 'outer_iter'"outer_iter""outer_iter""outer_iter""outer_iter""outer_iter", 'inner_iter'"inner_iter""inner_iter""inner_iter""inner_iter""inner_iter", 'sor_iter'"sor_iter""sor_iter""sor_iter""sor_iter""sor_iter", 'omega'"omega""omega""omega""omega""omega"

GenParamValueGenParamValueGenParamValueGenParamValueGenParamValuegenParamValue (input_control)  attribute.value(-array) HTupleHTupleHTupleVARIANTHtuple (string / integer / real) (string / int / long / double) (HString / Hlong / double) (char* / Hlong / double) (BSTR / Hlong / double) (char* / Hlong / double)

Parameterwert(e) für den Algorithmus.

Defaultwert: 'accurate' "accurate" "accurate" "accurate" "accurate" "accurate"

Wertevorschläge: 'very_accurate'"very_accurate""very_accurate""very_accurate""very_accurate""very_accurate", 'accurate'"accurate""accurate""accurate""accurate""accurate", 'fast'"fast""fast""fast""fast""fast", 'very_fast'"very_fast""very_fast""very_fast""very_fast""very_fast", 0, 1, 2, 3, 4, 5, 6, 0.5, 0.6, 0.7, 0.75, 3, 5, 7, 2, 3, 1.9

CamParamRect1CamParamRect1CamParamRect1CamParamRect1CamParamRect1camParamRect1 (input_control)  number-array HTupleHTupleHTupleVARIANTHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong) (double / Hlong) (double / Hlong)

Interne Kameraparameter der projektiven Kamera 1.

Parameteranzahl: CamParamRect1 == 8 || CamParamRect1 == 12

CamParamRect2CamParamRect2CamParamRect2CamParamRect2CamParamRect2camParamRect2 (input_control)  number-array HTupleHTupleHTupleVARIANTHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong) (double / Hlong) (double / Hlong)

Interne Kameraparameter der projektiven Kamera 2.

Parameteranzahl: CamParamRect2 == 8 || CamParamRect2 == 12

RelPoseRectRelPoseRectRelPoseRectRelPoseRectRelPoseRectrelPoseRect (input_control)  pose HPose, HTupleHTupleHTupleHPoseX, VARIANTHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong) (double / Hlong) (double / Hlong)

Lage der zweiten Kamera bzgl. der ersten.

Parameteranzahl: 7

ObjectModel3DObjectModel3DObjectModel3DObjectModel3DObjectModel3DobjectModel3D (output_control)  object_model_3d(-array) HObjectModel3D, HTupleHTupleHObjectModel3D, HTupleHObjectModel3DX, VARIANTHtuple (integer) (IntPtr) (Hlong) (Hlong) (Hlong) (Hlong)

Handle des erstellten 3D-Objektmodells.

Ergebnis

If the parameter values are correct, the operator scene_flow_calibscene_flow_calibSceneFlowCalibscene_flow_calibSceneFlowCalibSceneFlowCalib returns the value 2 (H_MSG_TRUE). If the input is empty (no input images are available) the behavior can be set via set_system('no_object_result',<Result>)set_system("no_object_result",<Result>)SetSystem("no_object_result",<Result>)set_system("no_object_result",<Result>)SetSystem("no_object_result",<Result>)SetSystem("no_object_result",<Result>). If necessary, an exception is raised.

Vorgänger

binocular_disparitybinocular_disparityBinocularDisparitybinocular_disparityBinocularDisparityBinocularDisparity, binocular_disparity_mgbinocular_disparity_mgBinocularDisparityMgbinocular_disparity_mgBinocularDisparityMgBinocularDisparityMg

Alternativen

scene_flow_uncalibscene_flow_uncalibSceneFlowUncalibscene_flow_uncalibSceneFlowUncalibSceneFlowUncalib, optical_flow_mgoptical_flow_mgOpticalFlowMgoptical_flow_mgOpticalFlowMgOpticalFlowMg

Literatur

A. Wedel, C. Rabe, T. Vaudrey, T. Brox, U. Franke and D. Cremers: „Efficient dense scene flow from sparse or dense stereo data“; In: Proceedings of the 10th European Conference on Computer Vision: Part I, pages 739-751. Springer-Verlag, 2008.

Modul

Foundation


KlassenKlassenKlassenKlassen | | | | Operatoren