create_sheet_of_light_modelT_create_sheet_of_light_modelCreateSheetOfLightModelCreateSheetOfLightModel (Operator)

Name

create_sheet_of_light_modelT_create_sheet_of_light_modelCreateSheetOfLightModelCreateSheetOfLightModel — Anlegen eines generischen Modells zur Durchführung von 3D-Messungen nach dem Lichtschnittverfahren.

Signatur

create_sheet_of_light_model(ProfileRegion : : GenParamName, GenParamValue : SheetOfLightModelID)

Herror T_create_sheet_of_light_model(const Hobject ProfileRegion, const Htuple GenParamName, const Htuple GenParamValue, Htuple* SheetOfLightModelID)

void CreateSheetOfLightModel(const HObject& ProfileRegion, const HTuple& GenParamName, const HTuple& GenParamValue, HTuple* SheetOfLightModelID)

HSheetOfLightModel HRegion::CreateSheetOfLightModel(const HTuple& GenParamName, const HTuple& GenParamValue) const

HSheetOfLightModel HRegion::CreateSheetOfLightModel(const HString& GenParamName, Hlong GenParamValue) const

HSheetOfLightModel HRegion::CreateSheetOfLightModel(const char* GenParamName, Hlong GenParamValue) const

HSheetOfLightModel HRegion::CreateSheetOfLightModel(const wchar_t* GenParamName, Hlong GenParamValue) const   (Nur Windows)

void HSheetOfLightModel::HSheetOfLightModel(const HRegion& ProfileRegion, const HTuple& GenParamName, const HTuple& GenParamValue)

void HSheetOfLightModel::HSheetOfLightModel(const HRegion& ProfileRegion, const HString& GenParamName, Hlong GenParamValue)

void HSheetOfLightModel::HSheetOfLightModel(const HRegion& ProfileRegion, const char* GenParamName, Hlong GenParamValue)

void HSheetOfLightModel::HSheetOfLightModel(const HRegion& ProfileRegion, const wchar_t* GenParamName, Hlong GenParamValue)   (Nur Windows)

void HSheetOfLightModel::CreateSheetOfLightModel(const HRegion& ProfileRegion, const HTuple& GenParamName, const HTuple& GenParamValue)

void HSheetOfLightModel::CreateSheetOfLightModel(const HRegion& ProfileRegion, const HString& GenParamName, Hlong GenParamValue)

void HSheetOfLightModel::CreateSheetOfLightModel(const HRegion& ProfileRegion, const char* GenParamName, Hlong GenParamValue)

void HSheetOfLightModel::CreateSheetOfLightModel(const HRegion& ProfileRegion, const wchar_t* GenParamName, Hlong GenParamValue)   (Nur Windows)

static void HOperatorSet.CreateSheetOfLightModel(HObject profileRegion, HTuple genParamName, HTuple genParamValue, out HTuple sheetOfLightModelID)

HSheetOfLightModel HRegion.CreateSheetOfLightModel(HTuple genParamName, HTuple genParamValue)

HSheetOfLightModel HRegion.CreateSheetOfLightModel(string genParamName, int genParamValue)

public HSheetOfLightModel(HRegion profileRegion, HTuple genParamName, HTuple genParamValue)

public HSheetOfLightModel(HRegion profileRegion, string genParamName, int genParamValue)

void HSheetOfLightModel.CreateSheetOfLightModel(HRegion profileRegion, HTuple genParamName, HTuple genParamValue)

void HSheetOfLightModel.CreateSheetOfLightModel(HRegion profileRegion, string genParamName, int genParamValue)

Beschreibung

Mit Hilfe von create_sheet_of_light_modelcreate_sheet_of_light_modelCreateSheetOfLightModelCreateSheetOfLightModelCreateSheetOfLightModel wird ein generisches Modell zur Durchführung von 3D-Messungen nach dem Lichtschnittverfahren angelegt.

Das Lichtschnittverfahren ermöglicht es, die Oberfläche von lichtstreuenden Körpern zu rekonstruieren. Hierfür werden eine Kamera mit Flächensensor und ein Lichtlinienprojektor (typischerweise ein Laserlinienprojektor) benötigt. Der Linienprojektor und die Kamera haben eine feste Anordnung zueinander. Ihre optischen Achsen bilden einen sogenannten Triangulationswinkel, dessen Wert typischerweise zwischen 30° und 60° ausgewählt wird. Die projizierte Lichtlinie beschreibt eine Ebene im Raum. Diese Ebene schneidet die Oberfläche des zu messenden Körpers, so dass ein Profil der Oberfläche für die Kamera sichtbar wird. Durch relative Bewegung des zu messenden Körpers unter dem Messsystem (bestehend aus Kamera und Linienprojektor in fester Anordnung) können nacheinander mehrere Profile aufgenommen werden, und somit die gesamte Oberfläche des Körpers rekonstruiert werden. Je nach Anforderung kann der zu messende Körper unter dem Messsystem bewegt werden oder auch das Messsystem über dem Körper. Bitte bemerken Sie, dass die Profile annähernd waagerecht orientiert sein müssen, weil sie spaltenweise verarbeitet werden.

Wenn die geometrischen Eigenschaften des Messsystems bekannt sind, ist es möglich kalibrierte dreidimensionale Koordinaten der rekonstruierten Oberfläche zu berechnen. Die Referenzdokumentation zum Operator set_sheet_of_light_paramset_sheet_of_light_paramSetSheetOfLightParamSetSheetOfLightParamSetSheetOfLightParam liefert einen Überblick über die hierzu benötigte Information. Sind diese Informationen nicht vorhanden, so wird als Ergebnis der Messung nur ein Disparitätsbild erzeugt, bei welchem die Pixelwerte der subpixel-genauen Position des detektierten Profils entsprechen.

Als Ergebnis liefert der Operator in SheetOfLightModelIDSheetOfLightModelIDSheetOfLightModelIDSheetOfLightModelIDsheetOfLightModelID ein Handle zurück, das für alle weiteren Lichtschnittverfahren-Operationen verwendet wird, beispielsweise um Modelleinstellungen zu ändern, um Profile zu messen, um Kalibriertransformationen anzuwenden oder um auf die Messergebnisse zuzugreifen.

Erforderliche ikonische Eingabeparameter

Der folgende ikonische Parameter muss gesetzt werden, um Messungen durchführen zu können:

ProfileRegionProfileRegionProfileRegionProfileRegionprofileRegion:

definiert die Region des Profilbildes, die durch den Operator measure_profile_sheet_of_lightmeasure_profile_sheet_of_lightMeasureProfileSheetOfLightMeasureProfileSheetOfLightMeasureProfileSheetOfLight verarbeitet wird. Diese Region sollte rechteckig sein und kann zum Beispiel mit Hilfe von gen_rectangle1gen_rectangle1GenRectangle1GenRectangle1GenRectangle1 erzeugt werden. Wenn ProfileRegionProfileRegionProfileRegionProfileRegionprofileRegion nicht rechteckig ist wird ihre kleinste umschließende Region benutzt. ProfileRegionProfileRegionProfileRegionProfileRegionprofileRegion wird nur von dem Operator measure_profile_sheet_of_lightmeasure_profile_sheet_of_lightMeasureProfileSheetOfLightMeasureProfileSheetOfLightMeasureProfileSheetOfLight berücksichtigt und wird bei der Verarbeitung von Disparitätsbildern ignoriert.

Standardeinstellung des Lichtschnitt-Modells

Die Standardeinstellungen des Lichtschnitt-Modells wurden ausgewählt, um Messungen in einer Grundkonfiguration durchführen zu können. Die folgende Liste gibt einen Überblick über die Standardwerte der Modellparameter (siehe set_sheet_of_light_paramset_sheet_of_light_paramSetSheetOfLightParamSetSheetOfLightParamSetSheetOfLightParam für eine detaillierte Beschreibung der Modellparameter):

'method'"method""method""method""method"

wird auf 'center_of_gravity'"center_of_gravity""center_of_gravity""center_of_gravity""center_of_gravity" gesetzt

'min_gray'"min_gray""min_gray""min_gray""min_gray":

wird auf 100 gesetzt

'num_profiles'"num_profiles""num_profiles""num_profiles""num_profiles"

wird auf 512 gesetzt

'ambiguity_solving'"ambiguity_solving""ambiguity_solving""ambiguity_solving""ambiguity_solving"

wird auf 'first'"first""first""first""first" gesetzt

'score_type'"score_type""score_type""score_type""score_type"

wird auf 'none'"none""none""none""none" gesetzt

'calibration'"calibration""calibration""calibration""calibration"

wird auf 'none'"none""none""none""none" gesetzt

Ändern der Modelleinstellung

Wir empfehlen die Modelleinstellungen an die konkrete Messaufgabe anzupassen, um die Qualität der Messung zu erhöhen oder um die Laufzeit zu verkürzen. Eine Änderung der Modelleinstellung ist ebenfalls erforderlich, um kalibrierte Messwerte zu ermitteln.

Mit Hilfe der generischen Parameter GenParamNameGenParamNameGenParamNameGenParamNamegenParamName und GenParamValueGenParamValueGenParamValueGenParamValuegenParamValue ist es möglich die Standardwerte des Lichtschnitt-Modells zu ändern. Diese Änderungen können ebenfalls mit dem Operator set_sheet_of_light_paramset_sheet_of_light_paramSetSheetOfLightParamSetSheetOfLightParamSetSheetOfLightParam durchgeführt werden. Bei diesem Operator kann jedoch nur ein einziger Parameter verändert werden, während mit create_sheet_of_light_modelcreate_sheet_of_light_modelCreateSheetOfLightModelCreateSheetOfLightModelCreateSheetOfLightModel mehrere Parameter mit einem Aufruf verändert werden können. set_sheet_of_light_paramset_sheet_of_light_paramSetSheetOfLightParamSetSheetOfLightParamSetSheetOfLightParam liefert eine detaillierte Beschreibung der Modellparameter.

Bitte beachten Sie, dass die folgenden Modellparameter nicht mit dem Operator create_sheet_of_light_modelcreate_sheet_of_light_modelCreateSheetOfLightModelCreateSheetOfLightModelCreateSheetOfLightModel, sondern nur mit dem Operator set_sheet_of_light_paramset_sheet_of_light_paramSetSheetOfLightParamSetSheetOfLightParamSetSheetOfLightParam gesetzt werden können: 'camera_parameter'"camera_parameter""camera_parameter""camera_parameter""camera_parameter", 'camera_pose'"camera_pose""camera_pose""camera_pose""camera_pose", 'lightplane_pose'"lightplane_pose""lightplane_pose""lightplane_pose""lightplane_pose", und 'movement_pose'"movement_pose""movement_pose""movement_pose""movement_pose".

In jedem Fall können die aktuell eingestellten Modellparameter mit get_sheet_of_light_paramget_sheet_of_light_paramGetSheetOfLightParamGetSheetOfLightParamGetSheetOfLightParam ausgelesen werden. Die Namen der Parameter, die für das konkrete Modell gesetzt bzw. abgefragt werden können, liefert query_sheet_of_light_paramsquery_sheet_of_light_paramsQuerySheetOfLightParamsQuerySheetOfLightParamsQuerySheetOfLightParams.

Verwendung des vereinfachten Parameter des Lichtschnitt-Modells

Wenn ein einfacher Aufbau vorliegt oder keine metrische Messung nötig ist, können die Disparitäten mit einem stark vereinfachten Parametersatz in 3D umgewandelt werden.

Durch das Setzen der Kalibrierung mit Hilfe von set_sheet_of_light_paramset_sheet_of_light_paramSetSheetOfLightParamSetSheetOfLightParamSetSheetOfLightParam auf den Wert 'offset_scale'"offset_scale""offset_scale""offset_scale""offset_scale" werden die Kameraparameter und Posen des Lichschnitt-Modells so gesetzt, dass Pixel als Maßstab für eine Überführung in 3D genutzt werden können. Das erlaubt das erzeugen von 3D Modellen und 3D Bildern aus einem unkalibrierten Aufbau.

Die sechs vereinfachten Parameter, die die Transformation von Disparitäten in 3D steuern sind: 'scale_x'"scale_x""scale_x""scale_x""scale_x", 'scale_y'"scale_y""scale_y""scale_y""scale_y", 'scale_z'"scale_z""scale_z""scale_z""scale_z", 'offset_x'"offset_x""offset_x""offset_x""offset_x", 'offset_y'"offset_y""offset_y""offset_y""offset_y",'offset_z'"offset_z""offset_z""offset_z""offset_z". Die Beschreibung von set_sheet_of_light_paramset_sheet_of_light_paramSetSheetOfLightParamSetSheetOfLightParamSetSheetOfLightParam enthält detaillierte Informationen über diese Parameter.

Verwendung des Handles in mehreren Threads

Es ist zu beachten, dass man bei der Verwendung eines Lichtschnitt-Modells 'SheetOfLightModelID'"SheetOfLightModelID""SheetOfLightModelID""SheetOfLightModelID""SheetOfLightModelID" in mehreren Threads sorgfältig umgehen muss. Ein und dasselbe Handle kann nicht gleichzeitig von unterschiedlichen Threads verwendet werden, wenn diese das Handle modifizieren. Somit muss man besonders vorsichtig sein, wenn die Threads solche Operatoren aufrufen, die Änderungen an den Daten des Handles vornehmen. Ein entsprechender Hinweis ist in dem 'Attention' Abschnitt der Operatoren zu finden. Falls man trotzdem dasselbe Handle in Operatoren verwenden möchte, die gleichzeitig in unterschiedlichen Threads das Handle modifizieren, müssen die Threads synchronisiert werden. Damit wird sichergestellt, dass die Threads keinen gleichzeitigen Zugriff auf das Handle haben. Wenn man nicht sicher ist, ob die Verwendung eines Handles thread-safe ist, kann man im 'Attention' Abschnitt des entsprechenden Operatoreintrags im Referenzhandbuch nachsehen, ob es eine Warnung gibt, die auf dieses Problem hinweist. Unterschiedliche Handles hingegen können unabhängig und sicher in unterschiedlichen Threads verwendet werden.

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

ProfileRegionProfileRegionProfileRegionProfileRegionprofileRegion (input_object)  region objectHRegionHRegionHobject

Region in welcher die zu detektierenden Profile gesucht werden. Wenn diese Region nicht rechteckig ist, wird die kleinste umschließende rechteckige Region verwendet.

GenParamNameGenParamNameGenParamNameGenParamNamegenParamName (input_control)  attribute.name(-array) HTupleHTupleHtuple (string) (string) (HString) (char*)

Namen der generischen Parameter, die für die Detektion des Profils eingestellt werden können.

Defaultwert: 'min_gray' "min_gray" "min_gray" "min_gray" "min_gray"

Werteliste: 'ambiguity_solving'"ambiguity_solving""ambiguity_solving""ambiguity_solving""ambiguity_solving", 'calibration'"calibration""calibration""calibration""calibration", 'method'"method""method""method""method", 'min_gray'"min_gray""min_gray""min_gray""min_gray", 'num_profiles'"num_profiles""num_profiles""num_profiles""num_profiles", 'offset_x'"offset_x""offset_x""offset_x""offset_x", 'offset_y'"offset_y""offset_y""offset_y""offset_y", 'offset_z'"offset_z""offset_z""offset_z""offset_z", 'scale'"scale""scale""scale""scale", 'scale_x'"scale_x""scale_x""scale_x""scale_x", 'scale_y'"scale_y""scale_y""scale_y""scale_y", 'scale_z'"scale_z""scale_z""scale_z""scale_z", 'score_type'"score_type""score_type""score_type""score_type"

GenParamValueGenParamValueGenParamValueGenParamValuegenParamValue (input_control)  attribute.value(-array) HTupleHTupleHtuple (integer / real / string) (int / long / double / string) (Hlong / double / HString) (Hlong / double / char*)

Wert der generischen Parameter, die für die Detektion des Profils eingestellt werden können.

Defaultwert: 50

Wertevorschläge: 'default'"default""default""default""default", 'center_of_gravity'"center_of_gravity""center_of_gravity""center_of_gravity""center_of_gravity", 'last'"last""last""last""last", 'first'"first""first""first""first", 'brightest'"brightest""brightest""brightest""brightest", 'none'"none""none""none""none", 'intensity'"intensity""intensity""intensity""intensity", 'width'"width""width""width""width", 'offset_scale'"offset_scale""offset_scale""offset_scale""offset_scale", 50, 100, 150, 180

SheetOfLightModelIDSheetOfLightModelIDSheetOfLightModelIDSheetOfLightModelIDsheetOfLightModelID (output_control)  sheet_of_light_model HSheetOfLightModel, HTupleHTupleHtuple (handle) (IntPtr) (HHandle) (handle)

Handle für den Zugriff auf das Lichtschnitt-Modell

Beispiel (HDevelop)

* Create the rectangular region in which the profiles are measured.
gen_rectangle1 (ProfileRegion, 120, 75, 195, 710)
*
* Create a model in order to measure profiles according to
* the sheet-of-light technique. Simultaneously set some
* parameters for the model.
create_sheet_of_light_model (ProfileRegion, ['min_gray','num_profiles', \
                             'ambiguity_solving','score_type'], \
                             [70,290,'first','width'], \
  SheetOfLightModelID)
*
* Measure the profile from successive images
for Index := 1 to 290 by 1
    read_image (ProfileImage, 'sheet_of_light/connection_rod_'+Index$'.3')
    dev_display (ProfileImage)
    dev_display (ProfileRegion)
    measure_profile_sheet_of_light (ProfileImage, SheetOfLightModelID, [])
endfor
*
* Get the resulting disparity and score images
get_sheet_of_light_result (Disparity, SheetOfLightModelID, 'disparity')
get_sheet_of_light_result (Score, SheetOfLightModelID, 'score')
*
* Close the sheet-of-light handle once the measurement
* has been performed

Ergebnis

create_sheet_of_light_modelcreate_sheet_of_light_modelCreateSheetOfLightModelCreateSheetOfLightModelCreateSheetOfLightModel liefert den Wert 2 (H_MSG_TRUE), wenn die übergebenen Parameter korrekt sind, und das Model angelegt werden kann. Ansonsten wird eine Fehlerbehandlung durchgeführt.

Vorgänger

gen_rectangle1gen_rectangle1GenRectangle1GenRectangle1GenRectangle1

Nachfolger

set_sheet_of_light_paramset_sheet_of_light_paramSetSheetOfLightParamSetSheetOfLightParamSetSheetOfLightParam, measure_profile_sheet_of_lightmeasure_profile_sheet_of_lightMeasureProfileSheetOfLightMeasureProfileSheetOfLightMeasureProfileSheetOfLight

Siehe auch

clear_sheet_of_light_modelclear_sheet_of_light_modelClearSheetOfLightModelClearSheetOfLightModelClearSheetOfLightModel, calibrate_sheet_of_lightcalibrate_sheet_of_lightCalibrateSheetOfLightCalibrateSheetOfLightCalibrateSheetOfLight

Modul

3D Metrology