Operator Reference
points_harris (Operator)
points_harris
— Detect points of interest using the Harris operator.
Signature
Description
points_harris
extracts points of interest from an image. The Harris
operator is based upon the smoothed matrix
where stands for a Gaussian smoothing of size
SigmaSmooth
and and are
the first derivatives of each image channel, computed with Gaussian
derivatives of size SigmaGrad
. The resulting points are the
positive local extrema of
If necessary, they can be restricted to points with a minimum filter
response of Threshold
. The coordinates of the points are
calculated with subpixel accuracy.
Attention
points_harris
uses a special implementation that is
optimized using SSE2 instructions if the system
parameter 'sse2_enable' is set to 'true' (which is
default if SSE2 is available on your machine). This implementation is
slightly inaccurate compared to the pure C version due to numerical issues
(for 'byte' images the difference in Row
and Column
is in
order of magnitude of 1.0e-5). If you prefer accuracy over performance
you can set 'sse2_enable' to 'false' (using
set_system
) before you call points_harris
. This way
points_harris
does not use SSE2 accelerations. Don't forget to set
'sse2_enable' back to 'true' afterwards.
points_harris
can be executed on an OpenCL device if both
SigmaGrad
and SigmaSmooth
induce a filter size of no more
than 129 pixels. This corresponds to a value of less than 20.7 for
both parameters. As with the SSE2 version, the results of the OpenCL
implementation may diverge slightly from that of pure C version due to
numerical issues.
Note that filter operators may return unexpected results if an image with a reduced domain is used as input. Please refer to the chapter Filters.
Execution Information
- Supports OpenCL compute devices.
- Multithreading type: reentrant (runs in parallel with non-exclusive operators).
- Multithreading scope: global (may be called from any thread).
- Automatically parallelized on internal data level.
Parameters
Image
(input_object) (multichannel-)image →
object (byte* / uint2* / real*) *allowed for compute devices
Input image.
SigmaGrad
(input_control) real →
(real)
Amount of smoothing used for the calculation of the gradient.
Default: 0.7
Suggested values: 0.7, 0.8, 0.9, 1.0, 1.2, 1.5, 2.0, 3.0
Recommended increment: 0.1
Restriction:
SigmaGrad > 0.0
SigmaSmooth
(input_control) real →
(real)
Amount of smoothing used for the integration of the gradients.
Default: 2.0
Suggested values: 0.7, 0.8, 0.9, 1.0, 1.2, 1.5, 2.0, 3.0
Recommended increment: 0.1
Restriction:
SigmaSmooth > 0.0
Alpha
(input_control) real →
(real)
Weight of the squared trace of the squared gradient matrix.
Default: 0.08
Suggested values: 0.02, 0.03, 0.04, 0.05, 0.06, 0.07, 0.08
Value range:
0.0
≤
Alpha
Minimum increment: 0.001
Recommended increment: 0.01
Threshold
(input_control) number →
(real / integer)
Minimum filter response for the points.
Default: 1000.0
Restriction:
Threshold >= 0.0
Row
(output_control) point.y-array →
(real)
Row coordinates of the detected points.
Column
(output_control) point.x-array →
(real)
Column coordinates of the detected points.
Result
points_harris
returns 2 (
H_MSG_TRUE)
if all parameters are correct
and no error occurs during the execution. If the input is empty the
behavior can be set via
set_system('no_object_result',<Result>)
. If
necessary, an exception is raised.
Possible Successors
Alternatives
points_foerstner
,
points_lepetit
,
points_harris_binomial
References
C. Harris, M. Stephens: “A combined corner and edge
detector”. Proceedings of the 4th Alvey Vision Conference,
pp. 147-151, 1988.
V. Gouet, N.Boujemaa: “Object-based queries using color points of
interest”. IEEE Workshop on Content-Based Access of Image and Video
Libraries, CVPR/CBAIVL 2001, Hawaii, USA, 2001.
Module
Foundation