Operators

corner_response (Operator)

Name

corner_response — Searching corners in images.

Signature

corner_response(Image : ImageCorner : Size, Weight : )

Description

The operator corner_response 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_image is used for smoothing (W), the operator sobel_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 Weight 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_type.

Parallelization

• Multithreading type: reentrant (runs in parallel with non-exclusive operators).
• Automatically parallelized on tuple level.
• Automatically parallelized on channel level.
• Automatically parallelized on domain level.

Parameters

Image (input_object)  (multichannel-)image(-array) object (byte / uint2 / int2 / real)

Input image.

ImageCorner (output_object)  multichannel-image(-array) object (byte / uint2 / int2 / real)

Result of the filtering.

Number of elements: ImageCorner == Image

Size (input_control)  integer (integer)

Default value: 3

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

Weight (input_control)  real (real)

Weighting.

Default value: 0.04

Typical range of values: 0.0 ≤ Weight ≤ 0.3

Minimum increment: 0.001

Recommended increment: 0.01

Example (C)

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