Feature tracking by template matchingYou provide templatematch with two images (A and B) and a set of coordinates in A that should be tracked. Templatematch will then cut out small templates around each point and calculate the similarity within a search region in image B. The measure of similarity will typically be normalized cross correlation. The 'optimal' displacement xy will be returned with sub-pixel precision. In its simplest form you can use templatematch thus: [du, dv, peakCorr, meanAbsCorr, pu, pv] = templatematch(A,B) Note: u,v refers to pixel coordinates in the code below. USAGE: [du, dv, peakCorr, meanAbsCorr, pu, pv] = templatematch(A,B[,pu,pv][,parameter-value-pairs]) INPUTS A,B: images pu,pv: pixel coordinates in A that should be located in B. (Default is a regular grid) NAMED PARAMETERS: TemplateWidth,TemplateHeight: Size of templates in A (Default: 21). SearchWidth,SearchHeight: Size of search region in B (Default: TemplateWidth+40). SuperSample: super sampling factor of input images for improved subpixel accuracy. (default=1) Initialdu,Initialdv: initial guess of the displacement between A & B super: supersampling factor (input to imresize) ShowProgress: Boolean or cell-array of strings. true (default) is used for a text progress bar. A cell of strings is used to name the A & B images in a progress figure. Method: 'NCC'(default), 'NORMXCORR2' or 'PC' (normalized cross correlation or phase correlation) OUTPUTS: du,dv: displacement of each point in pu,pv. [A(pu,pv) has moved to B(pu+du,pv+dv)] peakCorr: correlation coefficient of the matched template. meanAbsCorr: The mean absolute correlation coefficitent over the search region is an estimate of the noise level. pu,pv: actual pixel centers of templates in A (may differ slightly from inputs because of rounding). TODO: update figure so that it uses u,v for pixel coordinates rather than x,y. pu and pv are used to specify the pixel coordinates of the features in A that should be tracked. If none is specified then templatematch will drape a regular grid over the entire image. Template Width / Height:The template size is controlled with the TemplateWidth/TemplateHeight input parameters. You can specify different template sizes for each row in points. There is no choice that works well in all situations and there are trade-offs to consider. Pros of a large template size are:
Cons of a large template size;
So I recommend considering what is the desired output resolution and then also simply looking at the image to see what template size you would expect should work. Finally i would experiment with different template sizes to find what works best in the particular situation. Search region size (SearchWidth/SearchHeight):The search region size is controlled with the SearchWidth & SearchHeight input parameters. Generally you want to make that as small as possible to minimize the probability of false matches. I recommend using SearchWidth=TemplateWidth+max_expected_displacement . Here, you want to be generous with the max_expected_displacement, so as to not exclude the possibility you may be wrong. Sometimes there may be an advantage to choosing an even larger search region as it allows for more accurate calculation of the signal to noise ratio: One of the outputs is the average absolute correlation inside the search region. This is normally used as the noise level in a calculation of the signal to noise ratio. Super-sampling:You can specify a super sampling factor which will resample the template and search images in order to improve the sub-pixel precision. This super sampling factor can also be used to downsample the images (when super<1) to coarser resolution if you want to speed up the calculation at the expense of precision. This approach is used in the 'rock matching' of the Engabreen example. The good performance of super-sampling to achieve sub-pixel precision can be seen in Gilo and Kääb (2011). Initial guess of displacement (initialdu/initialdv):The larger the search region, the greater the chances are that other features will be visually similar to the template image being sought. Therefore it is generally a good idea to reduce the search region to being as small as possible. However, at the same time the search region has to be sufficiently wide to allow for the true displacement. By providing an initial guess for the displacement then you can reduce the search window size. Advanced TIP: you can use progressively finer scales with initial displacements taken from the preceding coarse scale matches. This approach will be similar to pyramidal approaches to feature tracking. Initialdu/initialdv can also be used as a mask by inserting nans at locations whereShowprogressThe showprogress input parameter can be used to open a window where the progress of the feature tracking can be followed as it is being done. The showprogress parameter can switch between three modes:
MethodsCurrently normalized cross correlation and phase correlation are the only two similarity measures implemented. These measures do not allow for rotation of the template. It should, however, be relatively easy to expand with additional similarity measures. Phase correlation is still experimental, and it is strongly biased towards integer pixel displacements. NCC is therefore recommended. In my opinion it is better to use image filters to flatten the spectrum or emphasize short scale features to achieve similar response. OutputsDisplacement (du,dv)For each point in points a "correlation" maximum within the search region is found and the corresponding displacement is returned in du,dv. This will have the same dimensions as the du, dv inputs. Match quality (peakCorr, meanAbsCorr)peakCorr is the maximum correlation coefficient found at the location of each match.meanAbsCorr is the average or typical correlation coefficient over the entire search window. The ratio peakCorr./meanAbsCorr can be interpreted as a signal-to-noise ratio and can be used to filter false matches. Advanced tip: Sometimes it works better to spatially smooth meanAbsCorr before evaluating the signal-to-noise ratio . Pre-processing imagesIn some cases you may improve the feature tracking by pre-processing the images. This FAQ page has a few suggestions for how you might pre-process the images. |
Documentation > Functions >