connect_grid_pointsT_connect_grid_pointsConnectGridPointsConnectGridPointsconnect_grid_points连接网格点(算子)
名称
connect_grid_pointsT_connect_grid_pointsConnectGridPointsConnectGridPointsconnect_grid_points — 在校正网格的网格点之间建立连接。
签名
void ConnectGridPoints(const HObject& Image, HObject* ConnectingLines, const HTuple& Row, const HTuple& Column, const HTuple& Sigma, const HTuple& MaxDist)
HXLD HImage::ConnectGridPoints(const HTuple& Row, const HTuple& Column, const HTuple& Sigma, const HTuple& MaxDist) const
HXLD HImage::ConnectGridPoints(const HTuple& Row, const HTuple& Column, Hlong Sigma, double MaxDist) const
static void HOperatorSet.ConnectGridPoints(HObject image, out HObject connectingLines, HTuple row, HTuple column, HTuple sigma, HTuple maxDist)
HXLD HImage.ConnectGridPoints(HTuple row, HTuple column, HTuple sigma, HTuple maxDist)
HXLD HImage.ConnectGridPoints(HTuple row, HTuple column, int sigma, double maxDist)
def connect_grid_points(image: HObject, row: Sequence[float], column: Sequence[float], sigma: MaybeSequence[Union[float, int]], max_dist: Union[float, int]) -> HObject
描述
connect_grid_pointsconnect_grid_pointsConnectGridPointsConnectGridPointsConnectGridPointsconnect_grid_points 在校正网格的网格点(RowRowRowRowrowrow,ColumnColumnColumnColumncolumncolumn)之间搜索连接线。连接线通过边缘检测器、平滑滤波器和线检测器的组合从输入图像 ImageImageImageImageimageimage 中提取,每个滤波器的尺寸均为 。 的使用方式确定如下:当 SigmaSigmaSigmaSigmasigmasigma 中传递单一值时,则使用该值。当传递一个包含三个值的元组('sigma_min'"sigma_min""sigma_min""sigma_min""sigma_min""sigma_min"、'sigma_max'"sigma_max""sigma_max""sigma_max""sigma_max""sigma_max"、'sigma_step'"sigma_step""sigma_step""sigma_step""sigma_step""sigma_step")时,connect_grid_pointsconnect_grid_pointsConnectGridPointsConnectGridPointsConnectGridPointsconnect_grid_points 会测试 'sigma_min'"sigma_min""sigma_min""sigma_min""sigma_min""sigma_min" 到
'sigma_max'"sigma_max""sigma_max""sigma_max""sigma_max""sigma_max" 范围内每个
,步长为 'sigma_step'"sigma_step""sigma_step""sigma_step""sigma_step""sigma_step",并选择能产生最多连接线的
。当仅传递包含两个值 'sigma_min'"sigma_min""sigma_min""sigma_min""sigma_min""sigma_min" 和
'sigma_max'"sigma_max""sigma_max""sigma_max""sigma_max""sigma_max" 的元组时,情况相同。但此时会使用固定步长 0.05。
随后,提取的连接线在网格点处被分割,并选取那些起点和终点均位于网格点的线段。需注意边缘检测器在边缘交点附近通常精度较低,因此连接线通常不会精确对齐网格点。因此,实际筛选出的连接线是那些起点、终点或经过网格点的线段,且与该网格点的最大距离不超过 MaxDistMaxDistMaxDistMaxDistmaxDistmax_dist。这些连接线经过调整,使其起点和终点精确位于对应的网格点上,最终以 XLD 轮廓的形式返回至 ConnectingLinesConnectingLinesConnectingLinesConnectingLinesconnectingLinesconnecting_lines 中。
此外,connect_grid_pointsconnect_grid_pointsConnectGridPointsConnectGridPointsConnectGridPointsconnect_grid_points 会为每个输出 XLD 轮廓计算其过渡类型,并将其存储在全局属性 'bright_dark'"bright_dark""bright_dark""bright_dark""bright_dark""bright_dark" 中。若连接线形成明暗过渡(从起点到终点,由左至右观察),则该属性设为 1.0;否则设为 0.0。有关全局轮廓属性的更多信息,请参阅
get_contour_global_attrib_xldget_contour_global_attrib_xldGetContourGlobalAttribXldGetContourGlobalAttribXldGetContourGlobalAttribXldget_contour_global_attrib_xld。
注意
为可靠地确定明暗过渡类型并进行后续校正,每条连接线必须至少包含三个轮廓点。因此,仅含两个轮廓点的连接线将不予返回。需注意,参数
MaxDistMaxDistMaxDistMaxDistmaxDistmax_dist 对返回连接线的长度具有显著影响——当某条潜在连接线的所有轮廓点与网格点的距离小于 MaxDistMaxDistMaxDistMaxDistmaxDistmax_dist 时,这些点将被替换为单个轮廓点。若 MaxDistMaxDistMaxDistMaxDistmaxDistmax_dist 值设定过大,部分连接线可能因此丢失。
执行信息
- 多线程类型:可重入(与非独占算子并行运行)。
- 多线程作用域:全局(可从任何线程调用)。
- 未采用并行化处理。
参数
ImageImageImageImageimageimage (输入对象) singlechannelimage → objectHImageHObjectHImageHobject (byte / uint2)
输入图像。
ConnectingLinesConnectingLinesConnectingLinesConnectingLinesconnectingLinesconnecting_lines (输出对象) xld-array → objectHXLDHObjectHXLDHobject *
输出轮廓。
RowRowRowRowrowrow (输入控制) point.y-array → HTupleSequence[float]HTupleHtuple (real) (double) (double) (double)
网格点的行坐标。
ColumnColumnColumnColumncolumncolumn (输入控制) point.x-array → HTupleSequence[float]HTupleHtuple (real) (double) (double) (double)
网格点的列坐标。
限制:
number(Column) == number(Row)
SigmaSigmaSigmaSigmasigmasigma (输入控制) number(-array) → HTupleMaybeSequence[Union[float, int]]HTupleHtuple (integer / real) (int / long / double) (Hlong / double) (Hlong / double)
应用高斯函数的尺寸。
元素数量:
1 <= Sigma && Sigma <= 3
默认值:
0.9
建议值:
0.7, 0.9, 1.1, 1.3, 1.5
限制:
0.7 <= Sigma
MaxDistMaxDistMaxDistMaxDistmaxDistmax_dist (输入控制) number → HTupleUnion[float, int]HTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)
连接线与网格点的最大距离。
默认值:
5.5
建议值:
1.5, 3.5, 5.5, 7.5, 9.5
限制:
0.0 <= MaxDist
结果
connect_grid_pointsconnect_grid_pointsConnectGridPointsConnectGridPointsConnectGridPointsconnect_grid_points 在所有参数值正确时返回 2 (H_MSG_TRUE)。如有必要,则抛出异常。
可能的前趋
saddle_points_sub_pixsaddle_points_sub_pixSaddlePointsSubPixSaddlePointsSubPixSaddlePointsSubPixsaddle_points_sub_pix
可能的后继
gen_grid_rectification_mapgen_grid_rectification_mapGenGridRectificationMapGenGridRectificationMapGenGridRectificationMapgen_grid_rectification_map
模块
标定