create_distance_transform_xldT_create_distance_transform_xldCreateDistanceTransformXldCreateDistanceTransformXldcreate_distance_transform_xld创建距离变换扩展线描述(算子)

名称

create_distance_transform_xldT_create_distance_transform_xldCreateDistanceTransformXldCreateDistanceTransformXldcreate_distance_transform_xld — 创建 XLD 距离变换。

签名

create_distance_transform_xld(Contour : : Mode, MaxDistance : DistanceTransformID)

Herror T_create_distance_transform_xld(const Hobject Contour, const Htuple Mode, const Htuple MaxDistance, Htuple* DistanceTransformID)

void CreateDistanceTransformXld(const HObject& Contour, const HTuple& Mode, const HTuple& MaxDistance, HTuple* DistanceTransformID)

void HXLDDistTrans::HXLDDistTrans(const HXLDCont& Contour, const HString& Mode, const HTuple& MaxDistance)

void HXLDDistTrans::HXLDDistTrans(const HXLDCont& Contour, const HString& Mode, double MaxDistance)

void HXLDDistTrans::HXLDDistTrans(const HXLDCont& Contour, const char* Mode, double MaxDistance)

void HXLDDistTrans::HXLDDistTrans(const HXLDCont& Contour, const wchar_t* Mode, double MaxDistance)   ( Windows only)

void HXLDDistTrans::CreateDistanceTransformXld(const HXLDCont& Contour, const HString& Mode, const HTuple& MaxDistance)

void HXLDDistTrans::CreateDistanceTransformXld(const HXLDCont& Contour, const HString& Mode, double MaxDistance)

void HXLDDistTrans::CreateDistanceTransformXld(const HXLDCont& Contour, const char* Mode, double MaxDistance)

void HXLDDistTrans::CreateDistanceTransformXld(const HXLDCont& Contour, const wchar_t* Mode, double MaxDistance)   ( Windows only)

static void HOperatorSet.CreateDistanceTransformXld(HObject contour, HTuple mode, HTuple maxDistance, out HTuple distanceTransformID)

public HXLDDistTrans(HXLDCont contour, string mode, HTuple maxDistance)

public HXLDDistTrans(HXLDCont contour, string mode, double maxDistance)

void HXLDDistTrans.CreateDistanceTransformXld(HXLDCont contour, string mode, HTuple maxDistance)

void HXLDDistTrans.CreateDistanceTransformXld(HXLDCont contour, string mode, double maxDistance)

def create_distance_transform_xld(contour: HObject, mode: str, max_distance: Union[int, float]) -> HHandle

描述

create_distance_transform_xldcreate_distance_transform_xldCreateDistanceTransformXldCreateDistanceTransformXldCreateDistanceTransformXldcreate_distance_transform_xld 创建参考轮廓 ContourContourContourContourcontourcontour 的 XLD 距离变换,并将生成的句柄返回至 DistanceTransformIDDistanceTransformIDDistanceTransformIDDistanceTransformIDdistanceTransformIDdistance_transform_id

创建 XLD 距离变换后,算子 apply_distance_transform_xldapply_distance_transform_xldApplyDistanceTransformXldApplyDistanceTransformXldApplyDistanceTransformXldapply_distance_transform_xld 将计算测试轮廓到参考轮廓 ContourContourContourContourcontourcontour 的逐点距离。更精确地说,对于测试轮廓的每个点,都会计算其到 ContourContourContourContourcontourcontour 中轮廓的最小距离。

参数 ModeModeModeModemodemode 决定 apply_distance_transform_xldapply_distance_transform_xldApplyDistanceTransformXldApplyDistanceTransformXldApplyDistanceTransformXldapply_distance_transform_xld 计算的距离类型: 'point_to_point'"point_to_point""point_to_point""point_to_point""point_to_point""point_to_point" 计算到 ContourContourContourContourcontourcontour 轮廓基点的最小距离。而 'point_to_segment'"point_to_segment""point_to_segment""point_to_segment""point_to_segment""point_to_segment" 则计算到轮廓 ContourContourContourContourcontourcontour 中各轮廓段的最小距离(见下图)。

虚线标示了从左侧测试轮廓点 1 开始计算的距离。距离 对应 'point_to_point'"point_to_point""point_to_point""point_to_point""point_to_point""point_to_point" 模式,而距离 对应 'point_to_segment'"point_to_segment""point_to_segment""point_to_segment""point_to_segment""point_to_segment" 模式。灰色区域表示围绕参考轮廓、距离计算范围为 MaxDistanceMaxDistanceMaxDistanceMaxDistancemaxDistancemax_distance 范围内的区域。测试轮廓中点 2 的距离将被设为 MaxDistanceMaxDistanceMaxDistanceMaxDistancemaxDistancemax_distance,因为该点位于该区域之外。

参数 MaxDistanceMaxDistanceMaxDistanceMaxDistancemaxDistancemax_distance 指定调用方感兴趣的参考轮廓 ContourContourContourContourcontourcontour 的最大距离。若测试轮廓某点到参考轮廓的距离超过 MaxDistanceMaxDistanceMaxDistanceMaxDistancemaxDistancemax_distance,则 apply_distance_transform_xldapply_distance_transform_xldApplyDistanceTransformXldApplyDistanceTransformXldApplyDistanceTransformXldapply_distance_transform_xld 的输出距离将被设置为 MaxDistanceMaxDistanceMaxDistanceMaxDistancemaxDistancemax_distance

当参考轮廓需要反复使用时,create_distance_transform_xldcreate_distance_transform_xldCreateDistanceTransformXldCreateDistanceTransformXldCreateDistanceTransformXldcreate_distance_transform_xldapply_distance_transform_xldapply_distance_transform_xldApplyDistanceTransformXldApplyDistanceTransformXldApplyDistanceTransformXldapply_distance_transform_xld 算子可替代 distance_contours_xlddistance_contours_xldDistanceContoursXldDistanceContoursXldDistanceContoursXlddistance_contours_xldcreate_distance_transform_xldcreate_distance_transform_xldCreateDistanceTransformXldCreateDistanceTransformXldCreateDistanceTransformXldcreate_distance_transform_xldContourContourContourContourcontourcontour 周边相关区域内的每个像素存储其最近的参考轮廓 ContourContourContourContourcontourcontour 点或线段(取决于 ModeModeModeModemodemode)。 这使得 apply_distance_transform_xldapply_distance_transform_xldApplyDistanceTransformXldApplyDistanceTransformXldApplyDistanceTransformXldapply_distance_transform_xld 能快速计算距离,且计算速度几乎不受参考轮廓点数/线段数、ModeModeModeModemodemode 以及测试轮廓点位置的影响。然而,XLD 距离变换的准备过程可能需要数秒至数分钟,具体取决于参考轮廓的点或线段数量,以及 ContourContourContourContourcontourcontour 周围受 MaxDistanceMaxDistanceMaxDistanceMaxDistancemaxDistancemax_distance 影响的相关区域。此外,若将 ModeModeModeModemodemode 设置为 'point_to_point' 模式,create_distance_transform_xldcreate_distance_transform_xldCreateDistanceTransformXldCreateDistanceTransformXldCreateDistanceTransformXldcreate_distance_transform_xld 的运行速度将更快。

get_distance_transform_xld_contourget_distance_transform_xld_contourGetDistanceTransformXldContourGetDistanceTransformXldContourGetDistanceTransformXldContourget_distance_transform_xld_contourget_distance_transform_xld_paramget_distance_transform_xld_paramGetDistanceTransformXldParamGetDistanceTransformXldParamGetDistanceTransformXldParamget_distance_transform_xld_param 可用于获取 XLD 距离变换 DistanceTransformIDDistanceTransformIDDistanceTransformIDDistanceTransformIDdistanceTransformIDdistance_transform_id 的参考轮廓和参数。

执行信息

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

参数

ContourContourContourContourcontourcontour (输入对象)  xld_cont(-array) objectHXLDContHObjectHXLDContHobject

参考轮廓。

ModeModeModeModemodemode (输入控制)  string HTuplestrHTupleHtuple (string) (string) (HString) (char*)

计算到点之间的距离('point_to_point') 或到整个线段之间的距离('point_to_segment')。

默认值: 'point_to_point' "point_to_point" "point_to_point" "point_to_point" "point_to_point" "point_to_point"

值列表: 'point_to_point'"point_to_point""point_to_point""point_to_point""point_to_point""point_to_point", 'point_to_segment'"point_to_segment""point_to_segment""point_to_segment""point_to_segment""point_to_segment"

MaxDistanceMaxDistanceMaxDistanceMaxDistancemaxDistancemax_distance (输入控制)  real HTupleUnion[int, float]HTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)

最大感兴趣的距离。

默认值: 20.0

DistanceTransformIDDistanceTransformIDDistanceTransformIDDistanceTransformIDdistanceTransformIDdistance_transform_id (输出控制)  xld_dist_trans HXLDDistTrans, HTupleHHandleHTupleHtuple (handle) (IntPtr) (HHandle) (handle)

XLD 距离变换的句柄。

结果

如果所有参数都正确,算子返回值 2 (H_MSG_TRUE)。否则,将抛出异常。

可能的后继

apply_distance_transform_xldapply_distance_transform_xldApplyDistanceTransformXldApplyDistanceTransformXldApplyDistanceTransformXldapply_distance_transform_xld, write_distance_transform_xldwrite_distance_transform_xldWriteDistanceTransformXldWriteDistanceTransformXldWriteDistanceTransformXldwrite_distance_transform_xld, serialize_distance_transform_xldserialize_distance_transform_xldSerializeDistanceTransformXldSerializeDistanceTransformXldSerializeDistanceTransformXldserialize_distance_transform_xld, clear_distance_transform_xldclear_distance_transform_xldClearDistanceTransformXldClearDistanceTransformXldClearDistanceTransformXldclear_distance_transform_xld

另见

distance_contours_xlddistance_contours_xldDistanceContoursXldDistanceContoursXldDistanceContoursXlddistance_contours_xld, get_distance_transform_xld_contourget_distance_transform_xld_contourGetDistanceTransformXldContourGetDistanceTransformXldContourGetDistanceTransformXldContourget_distance_transform_xld_contour, read_distance_transform_xldread_distance_transform_xldReadDistanceTransformXldReadDistanceTransformXldReadDistanceTransformXldread_distance_transform_xld, deserialize_distance_transform_xlddeserialize_distance_transform_xldDeserializeDistanceTransformXldDeserializeDistanceTransformXldDeserializeDistanceTransformXlddeserialize_distance_transform_xld, get_distance_transform_xld_paramget_distance_transform_xld_paramGetDistanceTransformXldParamGetDistanceTransformXldParamGetDistanceTransformXldParamget_distance_transform_xld_param, set_distance_transform_xld_paramset_distance_transform_xld_paramSetDistanceTransformXldParamSetDistanceTransformXldParamSetDistanceTransformXldParamset_distance_transform_xld_param

模块

基础