Name
points_harrisT_points_harrisPointsHarrispoints_harrisPointsHarrisPointsHarris — Detect points of interest using the Harris operator.
Herror points_harris(Hobject Image, const HTuple& SigmaGrad, const HTuple& SigmaSmooth, const HTuple& Alpha, const HTuple& Threshold, HTuple* Row, HTuple* Column)
HTuple HImage::PointsHarris(const HTuple& SigmaGrad, const HTuple& SigmaSmooth, const HTuple& Alpha, const HTuple& Threshold, HTuple* Column) const
void PointsHarris(const HObject& Image, const HTuple& SigmaGrad, const HTuple& SigmaSmooth, const HTuple& Alpha, const HTuple& Threshold, HTuple* Row, HTuple* Column)
void HImage::PointsHarris(double SigmaGrad, double SigmaSmooth, double Alpha, const HTuple& Threshold, HTuple* Row, HTuple* Column) const
void HImage::PointsHarris(double SigmaGrad, double SigmaSmooth, double Alpha, double Threshold, HTuple* Row, HTuple* Column) const
void HOperatorSetX.PointsHarris(
[in] IHUntypedObjectX* Image, [in] VARIANT SigmaGrad, [in] VARIANT SigmaSmooth, [in] VARIANT Alpha, [in] VARIANT Threshold, [out] VARIANT* Row, [out] VARIANT* Column)
VARIANT HImageX.PointsHarris(
[in] double SigmaGrad, [in] double SigmaSmooth, [in] double Alpha, [in] VARIANT Threshold, [out] VARIANT* Column)
static void HOperatorSet.PointsHarris(HObject image, HTuple sigmaGrad, HTuple sigmaSmooth, HTuple alpha, HTuple threshold, out HTuple row, out HTuple column)
void HImage.PointsHarris(double sigmaGrad, double sigmaSmooth, double alpha, HTuple threshold, out HTuple row, out HTuple column)
void HImage.PointsHarris(double sigmaGrad, double sigmaSmooth, double alpha, double threshold, out HTuple row, out HTuple column)
points_harrispoints_harrisPointsHarrispoints_harrisPointsHarrisPointsHarris extracts points of interest from an image. The Harris
operator is based upon the smoothed matrix
/ n n \
| --- --- |
| \ 2 \ |
| / Ix,c / Ix,c Iy,c |
| --- --- |
| c=1 c=1 |
M = G * | |,
| n n |
| --- --- |
| \ \ 2 |
| / Ix,c Iy,c / Iy,c |
| --- --- |
\ c=1 c=1 /
where G stands for a Gaussian smoothing of size
SigmaSmoothSigmaSmoothSigmaSmoothSigmaSmoothSigmaSmoothsigmaSmooth and Ix,c and Iy,c are
the first derivatives of each image channel, computed with Gaussian
derivatives of size SigmaGradSigmaGradSigmaGradSigmaGradSigmaGradsigmaGrad. The resulting points are the
positive local extrema of
2
Det(M) - AlphaAlphaAlphaAlphaAlphaalpha*(Trace(M)) .
If necessary, they can be restricted to points with a minimum filter
response of ThresholdThresholdThresholdThresholdThresholdthreshold. The coordinates of the points are
calculated with subpixel accuracy.
points_harrispoints_harrisPointsHarrispoints_harrisPointsHarrisPointsHarris uses a special implementation that is
optimized using SSE2 instructions if the system
parameter 'sse2_enable'"sse2_enable""sse2_enable""sse2_enable""sse2_enable""sse2_enable" is set to 'true'"true""true""true""true""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 RowRowRowRowRowrow and ColumnColumnColumnColumnColumncolumn is in
order of magnitude of 1.0e-5). If you prefer accuracy over performance
you can set 'sse2_enable'"sse2_enable""sse2_enable""sse2_enable""sse2_enable""sse2_enable" to 'false'"false""false""false""false""false" (using
set_systemset_systemSetSystemset_systemSetSystemSetSystem) before you call points_harrispoints_harrisPointsHarrispoints_harrisPointsHarrisPointsHarris. This way
points_harrispoints_harrisPointsHarrispoints_harrisPointsHarrisPointsHarris does not use SSE2 accelerations. Don't forget to set
'sse2_enable'"sse2_enable""sse2_enable""sse2_enable""sse2_enable""sse2_enable" back to 'true'"true""true""true""true""true" afterwards.
points_harrispoints_harrisPointsHarrispoints_harrisPointsHarrisPointsHarris can be executed on an OpenCL device if both
SigmaGradSigmaGradSigmaGradSigmaGradSigmaGradsigmaGrad and SigmaSmoothSigmaSmoothSigmaSmoothSigmaSmoothSigmaSmoothsigmaSmooth 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.
- 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.
Amount of smoothing used for the calculation of the
gradient.
Default value: 0.7
Suggested values: 0.7, 0.8, 0.9, 1.0, 1.2, 1.5, 2.0, 3.0
Typical range of values: 0.7
≤
SigmaGrad
SigmaGrad
SigmaGrad
SigmaGrad
SigmaGrad
sigmaGrad
≤
50.0
Recommended increment: 0.1
Restriction: SigmaGrad > 0.0
Amount of smoothing used for the integration of the
gradients.
Default value: 2.0
Suggested values: 0.7, 0.8, 0.9, 1.0, 1.2, 1.5, 2.0, 3.0
Typical range of values: 0.7
≤
SigmaSmooth
SigmaSmooth
SigmaSmooth
SigmaSmooth
SigmaSmooth
sigmaSmooth
≤
50.0
Recommended increment: 0.1
Restriction: SigmaSmooth > 0.0
Weight of the squared trace of the squared gradient
matrix.
Default value: 0.08
Suggested values: 0.02, 0.03, 0.04, 0.05, 0.06, 0.07, 0.08
Typical range of values: 0.001
≤
Alpha
Alpha
Alpha
Alpha
Alpha
alpha
≤
0.1
Minimum increment: 0.001
Recommended increment: 0.01
Restriction: Alpha > 0.0
Minimum filter response for the points.
Default value: 1000.0
Restriction: Threshold >= 0.0
Row coordinates of the detected points.
Column coordinates of the detected points.
points_harrispoints_harrisPointsHarrispoints_harrisPointsHarrisPointsHarris 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>)set_system("no_object_result",<Result>)SetSystem("no_object_result",<Result>)set_system("no_object_result",<Result>)SetSystem("no_object_result",<Result>)SetSystem("no_object_result",<Result>). If
necessary, an exception is raised.
gen_cross_contour_xldgen_cross_contour_xldGenCrossContourXldgen_cross_contour_xldGenCrossContourXldGenCrossContourXld
points_foerstnerpoints_foerstnerPointsFoerstnerpoints_foerstnerPointsFoerstnerPointsFoerstner,
points_lepetitpoints_lepetitPointsLepetitpoints_lepetitPointsLepetitPointsLepetit,
points_harris_binomialpoints_harris_binomialPointsHarrisBinomialpoints_harris_binomialPointsHarrisBinomialPointsHarrisBinomial
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.
Foundation