corner_responsecorner_responseCornerResponseCornerResponsecorner_response (Operator)


corner_responsecorner_responseCornerResponseCornerResponsecorner_response — Searching corners in images.


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


The operator corner_responsecorner_responseCornerResponseCornerResponseCornerResponsecorner_response extracts gray value corners in an image. The formula for the calculation of the response is: where I is the input image and R the output image of the filter. The operator gauss_imagegauss_imageGaussImageGaussImageGaussImagegauss_image is used for smoothing (W), the operator sobel_ampsobel_ampSobelAmpSobelAmpSobelAmpsobel_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 WeightWeightWeightWeightweightweight 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_typeConvertImageTypeConvertImageTypeConvertImageTypeconvert_image_type.


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


ImageImageImageImageimageimage (input_object)  (multichannel-)image(-array) objectHImageHObjectHImageHobject (byte / uint2 / int2 / real)

Input image.

ImageCornerImageCornerImageCornerImageCornerimageCornerimage_corner (output_object)  multichannel-image(-array) objectHImageHObjectHImageHobject * (byte / uint2 / int2 / real)

Result of the filtering.

Number of elements: ImageCorner == Image

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

Desired filtersize of the graymask.

Default value: 3

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

WeightWeightWeightWeightweightweight (input_control)  real HTuplefloatHTupleHtuple (real) (double) (double) (double)


Default value: 0.04

Typical range of values: 0.0 ≤ Weight Weight Weight Weight weight weight ≤ 0.3

Minimum increment: 0.001

Recommended increment: 0.01

Example (C)


Possible Successors

local_maxlocal_maxLocalMaxLocalMaxLocalMaxlocal_max, thresholdthresholdThresholdThresholdThresholdthreshold

See also

gauss_filtergauss_filterGaussFilterGaussFilterGaussFiltergauss_filter, sobel_ampsobel_ampSobelAmpSobelAmpSobelAmpsobel_amp, convert_image_typeconvert_image_typeConvertImageTypeConvertImageTypeConvertImageTypeconvert_image_type


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.