Operator Reference

points_harrisT_points_harrisPointsHarrisPointsHarrispoints_harris (Operator)

points_harrisT_points_harrisPointsHarrisPointsHarrispoints_harris — Detect points of interest using the Harris operator.

Signature

points_harris(Image : : SigmaGrad, SigmaSmooth, Alpha, Threshold : Row, Column)

Herror T_points_harris(const Hobject Image, const Htuple SigmaGrad, const Htuple SigmaSmooth, const Htuple Alpha, const Htuple Threshold, Htuple* Row, Htuple* Column)

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

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)

def points_harris(image: HObject, sigma_grad: float, sigma_smooth: float, alpha: float, threshold: Union[float, int]) -> Tuple[Sequence[float], Sequence[float]]

Description

points_harrispoints_harrisPointsHarrisPointsHarrispoints_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 SigmaSmoothSigmaSmoothSigmaSmoothsigmaSmoothsigma_smooth and and are the first derivatives of each image channel, computed with Gaussian derivatives of size SigmaGradSigmaGradSigmaGradsigmaGradsigma_grad. The resulting points are the positive local extrema of If necessary, they can be restricted to points with a minimum filter response of ThresholdThresholdThresholdthresholdthreshold. The coordinates of the points are calculated with subpixel accuracy.

Attention

points_harrispoints_harrisPointsHarrisPointsHarrispoints_harris uses a special implementation that is optimized using SSE2 instructions if the system parameter 'sse2_enable'"sse2_enable""sse2_enable""sse2_enable""sse2_enable" is set to '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 RowRowRowrowrow and ColumnColumnColumncolumncolumn 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" to 'false'"false""false""false""false" (using set_systemset_systemSetSystemSetSystemset_system) before you call points_harrispoints_harrisPointsHarrisPointsHarrispoints_harris. This way points_harrispoints_harrisPointsHarrisPointsHarrispoints_harris does not use SSE2 accelerations. Don't forget to set 'sse2_enable'"sse2_enable""sse2_enable""sse2_enable""sse2_enable" back to 'true'"true""true""true""true" afterwards.

points_harrispoints_harrisPointsHarrisPointsHarrispoints_harris can be executed on an OpenCL device if both SigmaGradSigmaGradSigmaGradsigmaGradsigma_grad and SigmaSmoothSigmaSmoothSigmaSmoothsigmaSmoothsigma_smooth 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

ImageImageImageimageimage (input_object)  (multichannel-)image objectHImageHObjectHObjectHobject (byte* / uint2* / real*) *allowed for compute devices

Input image.

SigmaGradSigmaGradSigmaGradsigmaGradsigma_grad (input_control)  real HTuplefloatHTupleHtuple (real) (double) (double) (double)

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

SigmaSmoothSigmaSmoothSigmaSmoothsigmaSmoothsigma_smooth (input_control)  real HTuplefloatHTupleHtuple (real) (double) (double) (double)

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

AlphaAlphaAlphaalphaalpha (input_control)  real HTuplefloatHTupleHtuple (real) (double) (double) (double)

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 Alpha Alpha alpha alpha

Minimum increment: 0.001

Recommended increment: 0.01

ThresholdThresholdThresholdthresholdthreshold (input_control)  number HTupleUnion[float, int]HTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)

Minimum filter response for the points.

Default: 1000.0

Restriction: Threshold >= 0.0

RowRowRowrowrow (output_control)  point.y-array HTupleSequence[float]HTupleHtuple (real) (double) (double) (double)

Row coordinates of the detected points.

ColumnColumnColumncolumncolumn (output_control)  point.x-array HTupleSequence[float]HTupleHtuple (real) (double) (double) (double)

Column coordinates of the detected points.

Result

points_harrispoints_harrisPointsHarrisPointsHarrispoints_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>)set_system("no_object_result",<Result>)SetSystem("no_object_result",<Result>)SetSystem("no_object_result",<Result>)set_system("no_object_result",<Result>). If necessary, an exception is raised.

Possible Successors

gen_cross_contour_xldgen_cross_contour_xldGenCrossContourXldGenCrossContourXldgen_cross_contour_xld

Alternatives

points_foerstnerpoints_foerstnerPointsFoerstnerPointsFoerstnerpoints_foerstner, points_lepetitpoints_lepetitPointsLepetitPointsLepetitpoints_lepetit, points_harris_binomialpoints_harris_binomialPointsHarrisBinomialPointsHarrisBinomialpoints_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