You are here: Start » AVL.NET » Function Reference » Computer Vision » Image Analysis » AVL.DetectCorners_CornerResponse

AVL.DetectCorners_CornerResponse

Detects corners using corner response method.

Namespace:AvlNet
Assembly:AVL.NET.dll

Syntax

C++
C#
 
public static void DetectCorners_CornerResponse
(
	AvlNet.Image inMonoImage,
	AvlNet.CornerResponseMethod inCornerResponseMethod,
	int inKernelSize,
	NullableRef<List<AvlNet.Point2D>> outCorners,
	NullableRef<AvlNet.Image> outCornerResponseImage
)

Parameters

Name Type Range Default Description
inMonoImageAvlNet.ImageInput image.
inCornerResponseMethodAvlNet.CornerResponseMethodMethod for computing corner response.
inKernelSizeint<1, 10>3Method kernel size. Default value: 3.
outCornersAvlNet.NullableRef<System.Collections.Generic.List<AvlNet.Point2D>>Found corner points. Can be null to skip this parameter calculation.
outCornerResponseImageAvlNet.NullableRef<AvlNet.Image> Can be null to skip this parameter calculation.

Description

The operation detects corners using either Harris or Kanade-Tomasi corner response method, depending on inCornerResponseMethod. For every square window of size inKernelSize a convolution matrix is computed: \[M = \left(\begin{array}{ccc} \sum g_r^2 & \sum g_c g_r \\ \sum g_c g_r & \sum g_c^2 \end{array} \right) \] where the summation is performed over the whole window and \(g_r, g_c\) denote horizontal and vertical gradient respectively at the point.
Harris' corner response is computed the following way: \[H = \mathrm{det}(M) - k \mathrm{tr}^2(M) \] where k is a constant set to 0.01.
Kanade-Tomasi corner response is given by: \[KT = \mathrm{min}(\lambda_1, \lambda_2)\] where \(\lambda_1, \lambda_2\) are eigenvalues of the convolution matrix.
Values H or KT give corner response image.

Then a few steps are performed in order to extract corner points. First, the normalized corner response function is thresholded with inThreshold with a small hysteresis, then the remained points are split into connected regions (blobs) and the center of each blob is determined.

Examples

DetectCorners_CornerResponse with inThreshold=50, methods Harris and Kanade-Tomasi respectively.

Remarks

Both methods give similar results and are quite fast. However, they tend to be less accurate than DetectCorners_Foerstner.

Errors

List of possible exceptions:

Error type Description
DomainError Unknown algorithm in DetectCorners_CornerResponse.
DomainError Not supported inMonoImage pixel format in DetectCorners_CornerResponse. Supported formats: 1xUInt8, 1xInt8, 1xUInt16, 1xInt16, 1xInt32, 1xReal.

Function Overrides

See also