points_sojka — 使用索卡(Sojka)算子符查找角点。
points_sojka(Image : : MaskSize, SigmaW, SigmaD, MinGrad, MinApparentness, MinAngle, Subpix : Row, Column)
points_sojka defines a corner as the point of intersection of two
straight, non-collinear gray value edges. To decide whether a point of the
input image Image is a corner or not, a neighborhood of
MaskSize x
MaskSize points is inspected. Only those image regions that are
relevant for the decision are considered. Pixels with a magnitude of the
gradient of less than MinGrad are ignored from the outset.
Furthermore, only those of the remaining points are used that belong to one
of the two gray value edges that form the corner.
For this, the so called Apparentness is calculated,
which is an indicator of the probability that the examined point actually
is a corner point. Essentially, it is determined
by the number of relevant points and their gradients. A point can only be
accepted as a corner when its Apparentness is at least
MinApparentness. Typical values of MinApparentness should
range in the region of a few multiples of MinGrad。
To calculate the Apparentness, each mask point is
weighted according to two criteria:
First, the influence of a mask point is weighted with a Gaussian of size
SigmaW according to its distance from the possible corner point.
SigmaW should be roughly between quarter and half of
MaskSize to obtain a reasonable proportion of the size of the
weighting function to the mask size.
Secondly, the distance of the point from the (assumed) ideal gray value edge
is estimated and the point is weighted with a Gaussian of size
SigmaD according to that distance. I.e., pixels that (due to the
discretization of the input image) lie farther from the ideal gray value
edge have less influence on the result than pixels with a smaller distance.
Typically, it is not necessary to modify the default value 0.75
of SigmaD。
As a further criterion, the angle is calculated, by which
the gray value edges change their direction in the corner point. A point can
only be accepted as a corner when this angle is greater than
MinAngle。
The position of the detected corner points is returned in
(Row, Column). Row and Column are calculated
with subpixel accuracy if Subpix is 'true'. They are
calculated only with pixel accuracy if Subpix is
'false'.
请注意,若使用域缩减后的图像作为输入,滤波器算子可能会返回意外结果。请参阅 滤波器 一章
Image (输入对象) singlechannelimage → object (byte / int1 / int2 / uint2 / int4 / real)
输入图像。
MaskSize (输入控制) integer → (integer)
所需滤波器尺寸。
默认值: 9
值列表: 5, 7, 9, 11, 13
SigmaW (输入控制) number → (real / integer)
Sigma of the weight function according to the distance to the corner candidate.
默认值: 2.5
建议值: 2.0, 2.2, 2.4, 2.5, 2.6, 2.8, 3.0
限制:
2.0 <= SigmaW && SigmaW <= 3.0
SigmaD (输入控制) number → (real / integer)
Sigma of the weight function for the distance to the ideal gray value edge.
默认值: 0.75
建议值: 0.6, 0.7, 0.75, 0.8, 0.9, 1.0
限制:
0.6 <= SigmaD && SigmaD <= 1.0
MinGrad (输入控制) number → (real / integer)
Threshold for the magnitude of the gradient.
默认值: 30.0
建议值: 20.0, 15.0, 30.0, 35.0, 40.0
MinApparentness (输入控制) number → (real / integer)
Threshold for Apparentness.
默认值: 90.0
建议值: 30.0, 60.0, 90.0, 150.0, 300.0, 600.0, 1500.0
MinAngle (输入控制) angle.rad → (real)
Threshold for the direction change in a corner point (radians).
默认值: 0.5
限制:
0.0 <= MinAngle && MinAngle <= pi
Subpix (输入控制) string → (string)
Subpixel precise calculation of the corner points.
默认值: 'false'
值列表: 'false', 'true'
Row (输出控制) point.y-array → (real)
Row coordinates of the detected corner points.
Column (输出控制) point.x-array → (real)
Column coordinates of the detected corner points.
points_sojka returns 2 (H_MSG_TRUE)
if all parameters are correct and
no error occurs during the execution.当输入为空时,可设置行为通过算子 set_system('no_object_result',<Result>)。如有必要,则抛出异常。
Eduard Sojka: “A New and Efficient Algorithm for Detecting the Corners in Digital Images”. Pattern Recognition, Luc Van Gool (Editor), LNCS 2449, pp. 125-132, Springer Verlag, 2002.
基础