match__ ( Image, RegionOfInterest, ImageTemplate : ImageMatch : Mode : )

Matching of a template and an image.

The operator match__ matches ImageTemplate and Image within the region of interest RegionOfInterest. Hereby the ImageTemplate will be moved over all points of Image which lie within the RegionOfInterest. With regard to the parameter Mode, a matching criterion will be calculated. The result values will be stored in ImageMatch.

The following matching criteria (Mode) are available:

'norm_correlation'
------------------
                    
ImageMatch[i][j] = 

             SUMu,v {Image[i-u][j-v] * ImageTemplate[l-u][c-v]}
255 * -----------------------------------------------------------------------,
      SQRT{ SUMu,v {Image[i-u][j-v]^2} * SUMu,v {ImageTemplate[l-u][c-v]^2} }
whereby X[i][j] indicates the grayvalue in the ith column and jth row of the image X. (1,c) is the centre of the region of ImageTemplate. u and v are chosen so that all points of the template will be reached, i,j run accross the RegionOfInterest. At the image frame only those parts of ImageTemplate will be considered which lie inside the image (i.e. u and v will be restricted correspondingly). Range of values: 0 - 255 (best fit).
'dfd'
-----

Calculating the average "displaced frame difference":

ImageMatch[i][j] =

 SUMu,v {ABS { Image[i-u][j-v] - ImageTemplate[l-u][c-v] }}     
 ----------------------------------------------------------,
                       AREA ( ImageTemplate )                     
The terms are the same as in 'norm_correlation'. AREA ( X ) means the area of the region X. Range of value 0 (best fit) - 255. To calculate the normalized correlation as well as the "displaced frame difference" is (with regard to the area of ImageTemplate) very time consuming. Therefore it is important to restrict the input region (RegionOfInterest if possible, i.e. to apply the filter only in a very confined "region of interest".

As far as quality is concerned, both modes return comparable results, whereby the mode 'dfd' is faster by a factor of about 3.5.


Parameters

Image (input_object)
image -> object : byte
Input image.

RegionOfInterest (input_object)
region -> object
Area to be searched in the input image.

ImageTemplate (input_object)
image -> object : byte
This area will be "matched" by Image within the RegionOfInterest.

ImageMatch (output_object)
image -> object
Result image: values of the matching criterion.

Mode (input_control)
string -> string
Desired matching criterion.
Default value: 'dfd'
List of values: 'norm_correlation', 'dfd'


Example
read_image(:Image:'affe':) >
disp_image(Image:::) >
draw_rectangle2(:::Row,Column,Phi,Length1,Length2) >
rectangle2(:Rectangle:Row,Column,Phi,Length1,Length2:) >
reduce_domain(Image,Rectangle:Template::) >
match__(Image,Image,Template:ImageMatch:'dfd':) >
invert(ImageMatch:ImageInvert::) >
local_max(Image:Maxima::) >
union1(Maxima:AllMaxima::) >
add_channels(AllMaxima,ImageInvert:FitMaxima::) >
threshold__(FitMaxima:BestFit:230.0,255.0) >
disp_region(BestFit:::).

Result

If the parameter values are correct, the operator match__ returns the value TRUE. If the input is empty (no input images are available) the behaviour can be set via set_system(::'no_object_result',<Result>:). If necessary, an exception is raised.


Possible Predecessors

draw_region, draw_rectangle1


Possible Successors

local_max, threshold__


Alternatives

mg_match__



Copyright © 1996-1997 MVTec Software GmbH