create_deformable_surface_modelT_create_deformable_surface_modelCreateDeformableSurfaceModelCreateDeformableSurfaceModelcreate_deformable_surface_model创建可变形表面模型(算子)

名称

create_deformable_surface_modelT_create_deformable_surface_modelCreateDeformableSurfaceModelCreateDeformableSurfaceModelcreate_deformable_surface_model — 创建执行基于可变形表面的匹配所需的数据结构。

签名

create_deformable_surface_model( : : ObjectModel3D, RelSamplingDistance, GenParamName, GenParamValue : DeformableSurfaceModel)

Herror T_create_deformable_surface_model(const Htuple ObjectModel3D, const Htuple RelSamplingDistance, const Htuple GenParamName, const Htuple GenParamValue, Htuple* DeformableSurfaceModel)

void CreateDeformableSurfaceModel(const HTuple& ObjectModel3D, const HTuple& RelSamplingDistance, const HTuple& GenParamName, const HTuple& GenParamValue, HTuple* DeformableSurfaceModel)

HDeformableSurfaceModel HObjectModel3D::CreateDeformableSurfaceModel(double RelSamplingDistance, const HTuple& GenParamName, const HTuple& GenParamValue) const

HDeformableSurfaceModel HObjectModel3D::CreateDeformableSurfaceModel(double RelSamplingDistance, const HString& GenParamName, const HString& GenParamValue) const

HDeformableSurfaceModel HObjectModel3D::CreateDeformableSurfaceModel(double RelSamplingDistance, const char* GenParamName, const char* GenParamValue) const

HDeformableSurfaceModel HObjectModel3D::CreateDeformableSurfaceModel(double RelSamplingDistance, const wchar_t* GenParamName, const wchar_t* GenParamValue) const   ( Windows only)

void HDeformableSurfaceModel::HDeformableSurfaceModel(const HObjectModel3D& ObjectModel3D, double RelSamplingDistance, const HTuple& GenParamName, const HTuple& GenParamValue)

void HDeformableSurfaceModel::HDeformableSurfaceModel(const HObjectModel3D& ObjectModel3D, double RelSamplingDistance, const HString& GenParamName, const HString& GenParamValue)

void HDeformableSurfaceModel::HDeformableSurfaceModel(const HObjectModel3D& ObjectModel3D, double RelSamplingDistance, const char* GenParamName, const char* GenParamValue)

void HDeformableSurfaceModel::HDeformableSurfaceModel(const HObjectModel3D& ObjectModel3D, double RelSamplingDistance, const wchar_t* GenParamName, const wchar_t* GenParamValue)   ( Windows only)

void HDeformableSurfaceModel::CreateDeformableSurfaceModel(const HObjectModel3D& ObjectModel3D, double RelSamplingDistance, const HTuple& GenParamName, const HTuple& GenParamValue)

void HDeformableSurfaceModel::CreateDeformableSurfaceModel(const HObjectModel3D& ObjectModel3D, double RelSamplingDistance, const HString& GenParamName, const HString& GenParamValue)

void HDeformableSurfaceModel::CreateDeformableSurfaceModel(const HObjectModel3D& ObjectModel3D, double RelSamplingDistance, const char* GenParamName, const char* GenParamValue)

void HDeformableSurfaceModel::CreateDeformableSurfaceModel(const HObjectModel3D& ObjectModel3D, double RelSamplingDistance, const wchar_t* GenParamName, const wchar_t* GenParamValue)   ( Windows only)

static void HOperatorSet.CreateDeformableSurfaceModel(HTuple objectModel3D, HTuple relSamplingDistance, HTuple genParamName, HTuple genParamValue, out HTuple deformableSurfaceModel)

HDeformableSurfaceModel HObjectModel3D.CreateDeformableSurfaceModel(double relSamplingDistance, HTuple genParamName, HTuple genParamValue)

HDeformableSurfaceModel HObjectModel3D.CreateDeformableSurfaceModel(double relSamplingDistance, string genParamName, string genParamValue)

public HDeformableSurfaceModel(HObjectModel3D objectModel3D, double relSamplingDistance, HTuple genParamName, HTuple genParamValue)

public HDeformableSurfaceModel(HObjectModel3D objectModel3D, double relSamplingDistance, string genParamName, string genParamValue)

void HDeformableSurfaceModel.CreateDeformableSurfaceModel(HObjectModel3D objectModel3D, double relSamplingDistance, HTuple genParamName, HTuple genParamValue)

void HDeformableSurfaceModel.CreateDeformableSurfaceModel(HObjectModel3D objectModel3D, double relSamplingDistance, string genParamName, string genParamValue)

def create_deformable_surface_model(object_model_3d: HHandle, rel_sampling_distance: float, gen_param_name: MaybeSequence[str], gen_param_value: MaybeSequence[Union[str, float, int]]) -> HHandle

描述

算子 create_deformable_surface_modelcreate_deformable_surface_modelCreateDeformableSurfaceModelCreateDeformableSurfaceModelCreateDeformableSurfaceModelcreate_deformable_surface_model 为存储在三维对象模型 ObjectModel3DObjectModel3DObjectModel3DObjectModel3DobjectModel3Dobject_model_3d 中的三维对象创建可变形表面匹配模型。该三维对象模型可通过 read_object_model_3dread_object_model_3dReadObjectModel3dReadObjectModel3dReadObjectModel3dread_object_model_3d 从文件读取,或使用 xyz_to_object_model_3dxyz_to_object_model_3dXyzToObjectModel3dXyzToObjectModel3dXyzToObjectModel3dxyz_to_object_model_3d 创建。生成的表面模型将通过 DeformableSurfaceModelDeformableSurfaceModelDeformableSurfaceModelDeformableSurfaceModeldeformableSurfaceModeldeformable_surface_model 返回。

可变形表面模型的创建要求三维对象模型包含点和法线。可采用以下组合形式:

请注意:模型法线的方向与朝向(内向或外向)对匹配过程至关重要。

可变形表面模型是通过以特定距离对三维对象模型进行采样而创建的。采样距离需在参数 RelSamplingDistanceRelSamplingDistanceRelSamplingDistanceRelSamplingDistancerelSamplingDistancerel_sampling_distance 中指定,该参数以三维对象模型轴平行包围框的直径为基准进行参数化。例如,若将 RelSamplingDistanceRelSamplingDistanceRelSamplingDistanceRelSamplingDistancerelSamplingDistancerel_sampling_distance 设为 0.05 且 ObjectModel3DObjectModel3DObjectModel3DObjectModel3DobjectModel3Dobject_model_3d 的直径为 10 厘米,则从对象表面采样的点间距约为 5 毫米。可通过算子 get_deformable_surface_model_paramget_deformable_surface_model_paramGetDeformableSurfaceModelParamGetDeformableSurfaceModelParamGetDeformableSurfaceModelParamget_deformable_surface_model_param 并使用值 'sampled_model'"sampled_model""sampled_model""sampled_model""sampled_model""sampled_model" 获取采样点。需注意应避免对象模型中的异常点,否则会导致直径计算失真。缩小 RelSamplingDistanceRelSamplingDistanceRelSamplingDistanceRelSamplingDistancerelSamplingDistancerel_sampling_distance 将增加采样点数量,从而获得更稳定但速度较慢的匹配结果。增大 RelSamplingDistanceRelSamplingDistanceRelSamplingDistanceRelSamplingDistancerelSamplingDistancerel_sampling_distance 则减少采样点数量,获得稳定性较低但速度较快的匹配结果。

( 1) ( 2) ( 3) ( 4)

默认情况下,使用 create_deformable_surface_modelcreate_deformable_surface_modelCreateDeformableSurfaceModelCreateDeformableSurfaceModelCreateDeformableSurfaceModelcreate_deformable_surface_model 创建的可变形表面模型能够处理中等程度的变形。可通过算子 add_deformable_surface_model_sampleadd_deformable_surface_model_sampleAddDeformableSurfaceModelSampleAddDeformableSurfaceModelSampleAddDeformableSurfaceModelSampleadd_deformable_surface_model_sample 添加额外的训练样本,从而扩展可能的变形范围。可通过泛型参数 'scale_min'"scale_min""scale_min""scale_min""scale_min""scale_min"'scale_max'"scale_max""scale_max""scale_max""scale_max""scale_max"'bending_max'"bending_max""bending_max""bending_max""bending_max""bending_max"(详见下文)控制可识别的变形幅度。

泛型参数对 GenParamNameGenParamNameGenParamNameGenParamNamegenParamNamegen_param_nameGenParamValueGenParamValueGenParamValueGenParamValuegenParamValuegen_param_value 用于为模型生成设置附加参数。GenParamNameGenParamNameGenParamNameGenParamNamegenParamNamegen_param_name 包含待设置的参数名称元组,GenParamValueGenParamValueGenParamValueGenParamValuegenParamValuegen_param_value 包含对应的数值。GenParamNameGenParamNameGenParamNameGenParamNamegenParamNamegen_param_name 可取以下值:

'model_invert_normals'"model_invert_normals""model_invert_normals""model_invert_normals""model_invert_normals""model_invert_normals"

反转模型表面法线的朝向。生成模型时需要确定法线方向。若模型与场景采用相同设置采集,法线方向将保持一致。若模型从 CAD 文件加载,法线方向可能相反。若遇到模型出现在场景表面“外部”的情况,且该模型源自 CAD 文件,请尝试将此参数设为 'true'"true""true""true""true""true"。同时确保 CAD 文件中的法线均指向外部或内部,即保持一致的方向性。

可能值: 'false'"false""false""false""false""false", 'true'"true""true""true""true""true"

默认值: 'false'"false""false""false""false""false"

'scale_min'"scale_min""scale_min""scale_min""scale_min""scale_min"'scale_max'"scale_max""scale_max""scale_max""scale_max""scale_max"

模型的最小和最大允许缩放范围。请注意,若设置其中一个参数,则必须同时设置另一个参数。

建议值: 0.8, 1, 1.2

默认值: No scaling

断言: 0 < 'scale_min'"scale_min""scale_min""scale_min""scale_min""scale_min" < 'scale_max'"scale_max""scale_max""scale_max""scale_max""scale_max"

'bending_max'"bending_max""bending_max""bending_max""bending_max""bending_max"

控制模型的最大自动变形量。模型将通过弯曲变形,其角度不超过 'bending_max'"bending_max""bending_max""bending_max""bending_max""bending_max" 的数值。这使得变形结果能够保持在此弯曲范围内。角度以度为单位传递。

建议值: 5, 10, 30

默认值: 20

断言: 0 <= 'bending_max'"bending_max""bending_max""bending_max""bending_max""bending_max" < 90

'stiffness'"stiffness""stiffness""stiffness""stiffness""stiffness"

在执行模型细化时控制其刚度。该参数数值越大,模型刚度越高,变形程度越小;数值越小,模型刚度越低,允许更大的变形。

建议值: 0.2, 0.5, 0.8

默认值: 0.5

断言: 0 < 'stiffness'"stiffness""stiffness""stiffness""stiffness""stiffness" <= 1

执行信息

此算子返回一个句柄。请注意,即使该句柄被用作特定算子的输入参数,这些算子仍可能改变此句柄类型的实例状态。

此算子支持取消超时和中断。

参数

ObjectModel3DObjectModel3DObjectModel3DObjectModel3DobjectModel3Dobject_model_3d (输入控制)  object_model_3d HObjectModel3D, HTupleHHandleHTupleHtuple (handle) (IntPtr) (HHandle) (handle)

3D 对象模型的句柄。

RelSamplingDistanceRelSamplingDistanceRelSamplingDistanceRelSamplingDistancerelSamplingDistancerel_sampling_distance (输入控制)  real HTuplefloatHTupleHtuple (real) (double) (double) (double)

采样距离相对于对象直径的比率。

默认值: 0.05

建议值: 0.1, 0.05, 0.03, 0.02, 0.01

限制: 0 < RelSamplingDistance < 1

GenParamNameGenParamNameGenParamNameGenParamNamegenParamNamegen_param_name (输入控制)  attribute.name(-array) HTupleMaybeSequence[str]HTupleHtuple (string) (string) (HString) (char*)

泛型参数的名称。

默认值: []

建议值: 'model_invert_normals'"model_invert_normals""model_invert_normals""model_invert_normals""model_invert_normals""model_invert_normals", 'scale_min'"scale_min""scale_min""scale_min""scale_min""scale_min", 'scale_max'"scale_max""scale_max""scale_max""scale_max""scale_max", 'bending_max'"bending_max""bending_max""bending_max""bending_max""bending_max", 'stiffness'"stiffness""stiffness""stiffness""stiffness""stiffness"

GenParamValueGenParamValueGenParamValueGenParamValuegenParamValuegen_param_value (输入控制)  attribute.value(-array) HTupleMaybeSequence[Union[str, float, int]]HTupleHtuple (string / real / integer) (string / double / int / long) (HString / double / Hlong) (char* / double / Hlong)

泛型参数的值。

默认值: []

建议值: 'true'"true""true""true""true""true", 'false'"false""false""false""false""false", 1, 0.9, 1.1, 5, 10, 20, 30, 0.05, 0.1, 0.2

DeformableSurfaceModelDeformableSurfaceModelDeformableSurfaceModelDeformableSurfaceModeldeformableSurfaceModeldeformable_surface_model (输出控制)  deformable_surface_model HDeformableSurfaceModel, HTupleHHandleHTupleHtuple (handle) (IntPtr) (HHandle) (handle)

可变形表面模型的句柄。

结果

create_deformable_surface_modelcreate_deformable_surface_modelCreateDeformableSurfaceModelCreateDeformableSurfaceModelCreateDeformableSurfaceModelcreate_deformable_surface_model 在所有参数正确时返回 2 (H_MSG_TRUE)。如有必要,则抛出异常。

可能的前趋

read_object_model_3dread_object_model_3dReadObjectModel3dReadObjectModel3dReadObjectModel3dread_object_model_3d, xyz_to_object_model_3dxyz_to_object_model_3dXyzToObjectModel3dXyzToObjectModel3dXyzToObjectModel3dxyz_to_object_model_3d, get_object_model_3d_paramsget_object_model_3d_paramsGetObjectModel3dParamsGetObjectModel3dParamsGetObjectModel3dParamsget_object_model_3d_params

可能的后继

add_deformable_surface_model_sampleadd_deformable_surface_model_sampleAddDeformableSurfaceModelSampleAddDeformableSurfaceModelSampleAddDeformableSurfaceModelSampleadd_deformable_surface_model_sample, add_deformable_surface_model_reference_pointadd_deformable_surface_model_reference_pointAddDeformableSurfaceModelReferencePointAddDeformableSurfaceModelReferencePointAddDeformableSurfaceModelReferencePointadd_deformable_surface_model_reference_point, find_deformable_surface_modelfind_deformable_surface_modelFindDeformableSurfaceModelFindDeformableSurfaceModelFindDeformableSurfaceModelfind_deformable_surface_model, refine_deformable_surface_modelrefine_deformable_surface_modelRefineDeformableSurfaceModelRefineDeformableSurfaceModelRefineDeformableSurfaceModelrefine_deformable_surface_model, get_deformable_surface_model_paramget_deformable_surface_model_paramGetDeformableSurfaceModelParamGetDeformableSurfaceModelParamGetDeformableSurfaceModelParamget_deformable_surface_model_param, write_deformable_surface_modelwrite_deformable_surface_modelWriteDeformableSurfaceModelWriteDeformableSurfaceModelWriteDeformableSurfaceModelwrite_deformable_surface_model, clear_deformable_surface_modelclear_deformable_surface_modelClearDeformableSurfaceModelClearDeformableSurfaceModelClearDeformableSurfaceModelclear_deformable_surface_model

替代

read_deformable_surface_modelread_deformable_surface_modelReadDeformableSurfaceModelReadDeformableSurfaceModelReadDeformableSurfaceModelread_deformable_surface_model

另见

find_deformable_surface_modelfind_deformable_surface_modelFindDeformableSurfaceModelFindDeformableSurfaceModelFindDeformableSurfaceModelfind_deformable_surface_model, refine_deformable_surface_modelrefine_deformable_surface_modelRefineDeformableSurfaceModelRefineDeformableSurfaceModelRefineDeformableSurfaceModelrefine_deformable_surface_model, read_deformable_surface_modelread_deformable_surface_modelReadDeformableSurfaceModelReadDeformableSurfaceModelReadDeformableSurfaceModelread_deformable_surface_model, add_deformable_surface_model_sampleadd_deformable_surface_model_sampleAddDeformableSurfaceModelSampleAddDeformableSurfaceModelSampleAddDeformableSurfaceModelSampleadd_deformable_surface_model_sample, add_deformable_surface_model_reference_pointadd_deformable_surface_model_reference_pointAddDeformableSurfaceModelReferencePointAddDeformableSurfaceModelReferencePointAddDeformableSurfaceModelReferencePointadd_deformable_surface_model_reference_point, write_deformable_surface_modelwrite_deformable_surface_modelWriteDeformableSurfaceModelWriteDeformableSurfaceModelWriteDeformableSurfaceModelwrite_deformable_surface_model, clear_deformable_surface_modelclear_deformable_surface_modelClearDeformableSurfaceModelClearDeformableSurfaceModelClearDeformableSurfaceModelclear_deformable_surface_model

参考文献

Bertram Drost, Slobodan Ilic: “Graph-Based Deformable 3D Object Matching.” Proceedings of the 37th German Conference on Pattern Recognition, pp. 222-233, 2015.

模块

三维计量