MatchDescriptorsKnnBF

Match descriptors (k nearest neighbors) using a brute force approach.
Can use available TwinCAT Job Tasks for executing parallel code regions.

Syntax

Definition:

HRESULT MatchDescriptorsKnnBF(
    HRESULT                hrPrev,
    ITcVnImage*            ipQueryDescriptors,
    ITcVnImage*            ipTrainDescriptors,
    ITcVnContainer*&       ipMatches,
    ULONG                  nK,
    ITcVnImage*            ipMask = nullptr,
    bool                   bCompactResult = false,
    ETcVnNormalizationType eNormType = NT_L2,
    bool                   bCrossCheck = false
)

Parameters

Name

Type

Default

Description

hrPrev

HRESULT

 

HRESULT indicating the result of previous operations (If SUCCEEDED(hrPrev) equals false, no operation is executed.)

ipQueryDescriptors

ITcVnImage*

 

Query descriptors (i.e. descriptors of a reference/template image)

ipTrainDescriptors

ITcVnImage*

 

Training descriptors (i.e. descriptors of a source/input image)

ipMatches

ITcVnContainer*&

 

Returns a container which is filled with the descriptor matches (ContainerType_Vector_Vector_TcVnDMatch; Non-zero interface pointers are reused.)

nK

ULONG

 

Number of required best train matches for each query descriptor (i.e. nk := 2)

ipMask

ITcVnImage*

nullptr

Mask to specify permissable matches, i.e. query[i] can be matched with train[j] only if mask[i][j] != 0 (set to 0 if no mask required)

bCompactResult

bool

false

If true, matches vector does not contain entries for fully masked-out query descriptors

eNormType

ETcVnNormalizationType

NT_L2

Normalization type (only L1, L2, L2SQR, HAMMING, HAMMING2 supported). HAMMING2 should be used for ORB descriptors if the ORB nBriefPoints parameter is 3 or 4)

bCrossCheck

bool

false

If true, only consistent matches are returned, i.e. query->train and train->query detect the same match (only used if nK = 1)

MatchDescriptorsKnnBF 1: Return value

HRESULT

Required License

TC3 Vision Matching

System Requirements

Development environment

Target platform

PLC libraries to include

TwinCAT V3.1.4024.54 or later

PC or CX (x64) with PL50, e.g. Intel 4-core Atom CPU

Tc3_Vision