ClassesClassesClassesClasses | | | | Operators

corner_responsecorner_responseCornerResponsecorner_responseCornerResponseCornerResponse (Operator)

Name

corner_responsecorner_responseCornerResponsecorner_responseCornerResponseCornerResponse — 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)

Herror corner_response(Hobject Image, Hobject* ImageCorner, const HTuple& Size, const HTuple& Weight)

HImage HImage::CornerResponse(const HTuple& Size, const HTuple& Weight) const

HImageArray HImageArray::CornerResponse(const HTuple& Size, const HTuple& Weight) const

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

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

void HOperatorSetX.CornerResponse(
[in] IHUntypedObjectX* Image, [out] IHUntypedObjectX*ImageCorner, [in] VARIANT Size, [in] VARIANT Weight)

IHImageX* HImageX.CornerResponse(
[in] Hlong Size, [in] double Weight)

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

HImage HImage.CornerResponse(int size, double weight)

Description

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

   R(x,y) = A(x,y) B(x,y) - C^2(x,y) - Weight (A(x,y) + B(x,y))^2

                      __         2
   A(x,y) = W(u,v) * (\/x I(x,y))

                      __         2
   B(x,y) = W(u,v) * (\/y I(x,y))

                      __         __
   C(c,y) = W(u,v) * (\/x I(x,y) \/y I(x,y))

   A and B are the smoothed directional derivatives and
   C is the smoothing of the products of the directional derivatives,

where I is the input image and R the output image of the filter. The operator gauss_imagegauss_imageGaussImagegauss_imageGaussImageGaussImage is used for smoothing (W), the operator sobel_ampsobel_ampSobelAmpsobel_ampSobelAmpSobelAmp 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_typeConvertImageTypeconvert_image_typeConvertImageTypeConvertImageType.

Parallelization

Parameters

ImageImageImageImageImageimage (input_object)  (multichannel-)image(-array) objectHImageHImageHImageHImageXHobject (byte / uint2 / int2 / real)

Input image.

ImageCornerImageCornerImageCornerImageCornerImageCornerimageCorner (output_object)  multichannel-image(-array) objectHImageHImageHImageHImageXHobject * (byte / uint2 / int2 / real)

Result of the filtering.

Number of elements: ImageCorner == Image

SizeSizeSizeSizeSizesize (input_control)  integer HTupleHTupleHTupleVARIANTHtuple (integer) (int / long) (Hlong) (Hlong) (Hlong) (Hlong)

Desired filtersize of the graymask.

Default value: 3

List of values: 3, 5, 7, 9, 11

WeightWeightWeightWeightWeightweight (input_control)  real HTupleHTupleHTupleVARIANTHtuple (real) (double) (double) (double) (double) (double)

Weighting.

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)

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_maxLocalMaxlocal_maxLocalMaxLocalMax, thresholdthresholdThresholdthresholdThresholdThreshold

See also

gauss_imagegauss_imageGaussImagegauss_imageGaussImageGaussImage, sobel_ampsobel_ampSobelAmpsobel_ampSobelAmpSobelAmp, convert_image_typeconvert_image_typeConvertImageTypeconvert_image_typeConvertImageTypeConvertImageType

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


ClassesClassesClassesClasses | | | | Operators