scene_flow_calibT_scene_flow_calibSceneFlowCalibSceneFlowCalibscene_flow_calib (Operator)

Name

scene_flow_calibT_scene_flow_calibSceneFlowCalibSceneFlowCalibscene_flow_calib — 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)

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 HCamPar& CamParamRect1, const HCamPar& 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 HCamPar& CamParamRect1, const HCamPar& 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 HCamPar& CamParamRect1, const HCamPar& 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 wchar_t* GenParamName, const wchar_t* GenParamValue, const HCamPar& CamParamRect1, const HCamPar& CamParamRect2, const HPose& RelPoseRect)   (Nur Windows)

HObjectModel3DArray HCamPar::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 HCamPar& CamParamRect2, const HPose& RelPoseRect) const

HObjectModel3D HCamPar::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 HCamPar& CamParamRect2, const HPose& RelPoseRect) const

HObjectModel3D HCamPar::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 HCamPar& CamParamRect2, const HPose& RelPoseRect) const

HObjectModel3D HCamPar::SceneFlowCalib(const HImage& ImageRect1T1, const HImage& ImageRect2T1, const HImage& ImageRect1T2, const HImage& ImageRect2T2, const HImage& Disparity, double SmoothingFlow, double SmoothingDisparity, const wchar_t* GenParamName, const wchar_t* GenParamValue, const HCamPar& CamParamRect2, const HPose& RelPoseRect) const   (Nur Windows)

HObjectModel3DArray HPose::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 HCamPar& CamParamRect1, const HCamPar& CamParamRect2) const

HObjectModel3D HPose::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 HCamPar& CamParamRect1, const HCamPar& CamParamRect2) const

HObjectModel3D HPose::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 HCamPar& CamParamRect1, const HCamPar& CamParamRect2) const

HObjectModel3D HPose::SceneFlowCalib(const HImage& ImageRect1T1, const HImage& ImageRect2T1, const HImage& ImageRect1T2, const HImage& ImageRect2T2, const HImage& Disparity, double SmoothingFlow, double SmoothingDisparity, const wchar_t* GenParamName, const wchar_t* GenParamValue, const HCamPar& CamParamRect1, const HCamPar& CamParamRect2) const   (Nur Windows)

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, HCamPar camParamRect1, HCamPar camParamRect2, HPose relPoseRect)

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

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

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

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

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

def scene_flow_calib(image_rect_1t1: HObject, image_rect_2t1: HObject, image_rect_1t2: HObject, image_rect_2t2: HObject, disparity: HObject, smoothing_flow: Union[float, int], smoothing_disparity: Union[float, int], gen_param_name: MaybeSequence[str], gen_param_value: MaybeSequence[Union[int, float, str]], cam_param_rect_1: Sequence[Union[float, int, str]], cam_param_rect_2: Sequence[Union[float, int, str]], rel_pose_rect: Sequence[Union[float, int]]) -> Sequence[HHandle]

def scene_flow_calib_s(image_rect_1t1: HObject, image_rect_2t1: HObject, image_rect_1t2: HObject, image_rect_2t2: HObject, disparity: HObject, smoothing_flow: Union[float, int], smoothing_disparity: Union[float, int], gen_param_name: MaybeSequence[str], gen_param_value: MaybeSequence[Union[int, float, str]], cam_param_rect_1: Sequence[Union[float, int, str]], cam_param_rect_2: Sequence[Union[float, int, str]], rel_pose_rect: Sequence[Union[float, int]]) -> HHandle

Beschreibung

scene_flow_calibscene_flow_calibSceneFlowCalibSceneFlowCalibSceneFlowCalibscene_flow_calib 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 ObjectModel3DObjectModel3DObjectModel3DObjectModel3DobjectModel3Dobject_model_3d 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.

Die aufeinanderfolgenden Stereobildpaare werden in ImageRect1T1ImageRect1T1ImageRect1T1ImageRect1T1imageRect1T1image_rect_1t1, ImageRect2T1ImageRect2T1ImageRect2T1ImageRect2T1imageRect2T1image_rect_2t1, ImageRect1T2ImageRect1T2ImageRect1T2ImageRect1T2imageRect1T2image_rect_1t2 und ImageRect2T2ImageRect2T2ImageRect2T2ImageRect2T2imageRect2T2image_rect_2t2 übergeben. Jedes Stereobildpaar muss rektifiziert sein. Die Bildpaare können mit den Operatoren calibrate_camerascalibrate_camerasCalibrateCamerasCalibrateCamerasCalibrateCamerascalibrate_cameras, gen_binocular_rectification_mapgen_binocular_rectification_mapGenBinocularRectificationMapGenBinocularRectificationMapGenBinocularRectificationMapgen_binocular_rectification_map und map_imagemap_imageMapImageMapImageMapImagemap_image rektifiziert werden.

Die Kamerageometrie des rektifizierten binokularen Kamerasystems wird durch die internen Kameraparameter CamParamRect1CamParamRect1CamParamRect1CamParamRect1camParamRect1cam_param_rect_1 der rektifizierten Kamera 1 und CamParamRect2CamParamRect2CamParamRect2CamParamRect2camParamRect2cam_param_rect_2 der rektifizierten Kamera 2 und die Pose RelPoseRectRelPoseRectRelPoseRectRelPoseRectrelPoseRectrel_pose_rect 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_camerasCalibrateCamerasCalibrateCamerasCalibrateCamerascalibrate_cameras und gen_binocular_rectification_mapgen_binocular_rectification_mapGenBinocularRectificationMapGenBinocularRectificationMapGenBinocularRectificationMapgen_binocular_rectification_map 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 ImageRect1T1ImageRect1T1ImageRect1T1ImageRect1T1imageRect1T1image_rect_1t1 ein homologes Pixel (r,c2) im Bild ImageRect2T1ImageRect2T1ImageRect2T1ImageRect2T1imageRect2T1image_rect_2t1 festlegt. Hierbei gilt c2=c1+d(r,c1), wobei d(r,c) die Disparität in DisparityDisparityDisparityDisparitydisparitydisparity am Pixel (r,c) ist. Die Disparität kann mit binocular_disparitybinocular_disparityBinocularDisparityBinocularDisparityBinocularDisparitybinocular_disparity oder binocular_disparity_mgbinocular_disparity_mgBinocularDisparityMgBinocularDisparityMgBinocularDisparityMgbinocular_disparity_mg berechnet werden.

Um den kalibrierten Szenenfluss zu berechnen, wird intern zunächst scene_flow_uncalibscene_flow_uncalibSceneFlowUncalibSceneFlowUncalibSceneFlowUncalibscene_flow_uncalib 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_calibSceneFlowCalibSceneFlowCalibSceneFlowCalibscene_flow_calib wird auf scene_flow_uncalibscene_flow_uncalibSceneFlowUncalibSceneFlowUncalibSceneFlowUncalibscene_flow_uncalib verwiesen.

Ausführungsinformationen

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

ImageRect1T1ImageRect1T1ImageRect1T1ImageRect1T1imageRect1T1image_rect_1t1 (input_object)  singlechannelimage(-array) objectHImageHObjectHImageHobject (byte / uint2 / real)

Eingabebild 1 zum Zeitpunkt .

ImageRect2T1ImageRect2T1ImageRect2T1ImageRect2T1imageRect2T1image_rect_2t1 (input_object)  singlechannelimage(-array) objectHImageHObjectHImageHobject (byte / uint2 / real)

Eingabebild 2 zum Zeitpunkt .

ImageRect1T2ImageRect1T2ImageRect1T2ImageRect1T2imageRect1T2image_rect_1t2 (input_object)  singlechannelimage(-array) objectHImageHObjectHImageHobject (byte / uint2 / real)

Eingabebild 1 zum Zeitpunkt .

ImageRect2T2ImageRect2T2ImageRect2T2ImageRect2T2imageRect2T2image_rect_2t2 (input_object)  singlechannelimage(-array) objectHImageHObjectHImageHobject (byte / uint2 / real)

Eingabebild 2 zum Zeitpunkt .

DisparityDisparityDisparityDisparitydisparitydisparity (input_object)  singlechannelimage(-array) objectHImageHObjectHImageHobject (real)

Disparität zwischen Eingabebild 1 und 2 zum Zeitpunkt .

SmoothingFlowSmoothingFlowSmoothingFlowSmoothingFlowsmoothingFlowsmoothing_flow (input_control)  number HTupleUnion[float, int]HTupleHtuple (real / integer) (double / int / long) (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

SmoothingDisparitySmoothingDisparitySmoothingDisparitySmoothingDisparitysmoothingDisparitysmoothing_disparity (input_control)  number HTupleUnion[float, int]HTupleHtuple (real / integer) (double / int / long) (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

GenParamNameGenParamNameGenParamNameGenParamNamegenParamNamegen_param_name (input_control)  attribute.name(-array) HTupleMaybeSequence[str]HTupleHtuple (string) (string) (HString) (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"

GenParamValueGenParamValueGenParamValueGenParamValuegenParamValuegen_param_value (input_control)  attribute.value(-array) HTupleMaybeSequence[Union[int, float, str]]HTupleHtuple (string / integer / real) (string / int / long / double) (HString / 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

CamParamRect1CamParamRect1CamParamRect1CamParamRect1camParamRect1cam_param_rect_1 (input_control)  campar HCamPar, HTupleSequence[Union[float, int, str]]HTupleHtuple (real / integer / string) (double / int / long / string) (double / Hlong / HString) (double / Hlong / char*)

Interne Kameraparameter der projektiven Kamera 1.

CamParamRect2CamParamRect2CamParamRect2CamParamRect2camParamRect2cam_param_rect_2 (input_control)  campar HCamPar, HTupleSequence[Union[float, int, str]]HTupleHtuple (real / integer / string) (double / int / long / string) (double / Hlong / HString) (double / Hlong / char*)

Interne Kameraparameter der projektiven Kamera 2.

RelPoseRectRelPoseRectRelPoseRectRelPoseRectrelPoseRectrel_pose_rect (input_control)  pose HPose, HTupleSequence[Union[float, int]]HTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)

Lage der zweiten Kamera bzgl. der ersten.

Parameteranzahl: 7

ObjectModel3DObjectModel3DObjectModel3DObjectModel3DobjectModel3Dobject_model_3d (output_control)  object_model_3d(-array) HObjectModel3D, HTupleSequence[HHandle]HTupleHtuple (handle) (IntPtr) (HHandle) (handle)

Handle des erstellten 3D-Objektmodells.

Ergebnis

Sind die Parameterwerte korrekt, dann liefert scene_flow_calibscene_flow_calibSceneFlowCalibSceneFlowCalibSceneFlowCalibscene_flow_calib den Wert TRUE. Das Verhalten bei leerer Eingabe (keine Eingabebilder vorhanden) lässt sich mittels set_system('no_object_result',<Result>)set_system("no_object_result",<Result>)SetSystem("no_object_result",<Result>)SetSystem("no_object_result",<Result>)SetSystem("no_object_result",<Result>)set_system("no_object_result",<Result>) festlegen. Gegebenenfalls wird eine Fehlerbehandlung durchgeführt.

Vorgänger

binocular_disparitybinocular_disparityBinocularDisparityBinocularDisparityBinocularDisparitybinocular_disparity, binocular_disparity_mgbinocular_disparity_mgBinocularDisparityMgBinocularDisparityMgBinocularDisparityMgbinocular_disparity_mg

Alternativen

scene_flow_uncalibscene_flow_uncalibSceneFlowUncalibSceneFlowUncalibSceneFlowUncalibscene_flow_uncalib, optical_flow_mgoptical_flow_mgOpticalFlowMgOpticalFlowMgOpticalFlowMgoptical_flow_mg

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