Operator Reference

corner_responsecorner_responseCornerResponseCornerResponsecorner_response (Operator)

corner_responsecorner_responseCornerResponseCornerResponsecorner_response — Searching corners in images.

Signature

corner_response(Image : ImageCorner : Size, Weight : )

Herror corner_response(const Hobject Image, Hobject* ImageCorner, const Hlong Size, double Weight)

Herror T_corner_response(const Hobject Image, Hobject* ImageCorner, const Htuple Size, const Htuple Weight)

void CornerResponse(const HObject& Image, HObject* ImageCorner, const HTuple& Size, const HTuple& Weight)

HImage HImage::CornerResponse(Hlong Size, double Weight) const

static void HOperatorSet.CornerResponse(HObject image, out HObject imageCorner, HTuple size, HTuple weight)

HImage HImage.CornerResponse(int size, double weight)

def corner_response(image: HObject, size: int, weight: float) -> HObject

Description

The operator corner_responsecorner_responseCornerResponseCornerResponsecorner_response extracts gray value corners in an image. The formula for the calculation of the response is:

with I: input image, R: output image of the filter, A, and B: smoothed directional derivatives, C: smoothing of the products of the directional derivatives. The operator gauss_imagegauss_imageGaussImageGaussImagegauss_image is used for smoothing (W), the operator sobel_ampsobel_ampSobelAmpSobelAmpsobel_amp is used for calculating the derivative .

The corner response function is invariant with regard to rotation. In order to achieve a suitable dependency of the function R(x,y) on the local gradient, the parameter WeightWeightWeightweightweight must be set to 0.04. With this, only gray value corners will return positive values for R(x,y), while straight edges will receive negative values. The output image type is identical to the input image type. Therefore, the negative output values are set to 0 if byte images are used as input images. If this is not desired, the input image should be converted into a real or int2 image with convert_image_typeconvert_image_typeConvertImageTypeConvertImageTypeconvert_image_type.

Attention

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

  • Multithreading type: reentrant (runs in parallel with non-exclusive operators).
  • Multithreading scope: global (may be called from any thread).
  • Automatically parallelized on tuple level.
  • Automatically parallelized on channel level.
  • Automatically parallelized on domain level.

Parameters

ImageImageImageimageimage (input_object)  (multichannel-)image(-array) objectHImageHObjectHObjectHobject (byte / uint2 / int2 / real)

Input image.

ImageCornerImageCornerImageCornerimageCornerimage_corner (output_object)  multichannel-image(-array) objectHImageHObjectHObjectHobject * (byte / uint2 / int2 / real)

Result of the filtering.

Number of elements: ImageCorner == Image

SizeSizeSizesizesize (input_control)  integer HTupleintHTupleHtuple (integer) (int / long) (Hlong) (Hlong)

Desired filtersize of the graymask.

Default: 3

Suggested values: 3, 5, 7, 9, 11

WeightWeightWeightweightweight (input_control)  real HTuplefloatHTupleHtuple (real) (double) (double) (double)

Weighting.

Default: 0.04

Value range: 0.0 ≤ Weight Weight Weight weight weight ≤ 0.3

Minimum increment: 0.001

Recommended increment: 0.01

Example (C)

read_image(&Fabrik,"fabrik");
corner_response(Fabrik,&CornerResponse,3,0.04);
local_max(CornerResponse,&LocalMax);
disp_image(Fabrik,WindowHandle);
set_color(WindowHandle,"red");
disp_region(LocalMax,WindowHandle);

Possible Successors

local_maxlocal_maxLocalMaxLocalMaxlocal_max, thresholdthresholdThresholdThresholdthreshold

See also

gauss_filtergauss_filterGaussFilterGaussFiltergauss_filter, sobel_ampsobel_ampSobelAmpSobelAmpsobel_amp, convert_image_typeconvert_image_typeConvertImageTypeConvertImageTypeconvert_image_type

References

C.G. Harris, M.J. Stephens, “A combined corner and edge detector”'; Proc. of the 4th Alvey Vision Conference; August 1988; pp. 147-152.
H. Breit, “Bestimmung der Kameraeigenbewegung und Gewinnung von Tiefendaten aus monokularen Bildfolgen”; Diplomarbeit am Lehrstuhl für Nachrichtentechnik der TU München; 30. September 1990.

Module

Foundation