({{, (RefLink[ImageFeatureTrack, paclet:ref/ImageFeatureTrack])[{(Subscript[image, 1]),(Subscript[image, 2]),…,(Subscript[image, n])}]
tracks features from (Subscript[image, 1]) through (Subscript[image, n]).}, {, (RefLink[ImageFeatureTrack, paclet:ref/ImageFeatureTrack])[{(Subscript[image, 1]),(Subscript[image, 2]),…,(Subscript[image, n])},pts]
tracks features starting from the initial set of points pts in (Subscript[image, 1]).}})

OpenersNotesSection(Spacer1)Details and Options

(RefLink[ImageFeatureTrack, paclet:ref/ImageFeatureTrack]) tracks feature points in a sequence of images. All images must have the same dimensions.

(RefLink[ImageFeatureTrack, paclet:ref/ImageFeatureTrack])[{(Subscript[image, 1]),(Subscript[image, 2]),…,(Subscript[image, n])}] automatically determines a set of feature points in the images to track, and returns a list {(Subscript[pts, 1]),(Subscript[pts, 2]),…,(Subscript[pts, n])}, where (Subscript[pts, i]) is the position of the features in (Subscript[image, i]).

(RefLink[ImageFeatureTrack, paclet:ref/ImageFeatureTrack]) assumes the standard image coordinate system, where x runs from 0 to width and y runs from 0 to height. Position {0,0} corresponds to the bottom-left corner of the image.

If a point is not found in some (Subscript[image, i]), the coordinates are returned as (RefLink[Missing, paclet:ref/Missing])[].

The following options can be specified:

With the setting (RefLink[MaxFeatureDisplacement, paclet:ref/MaxFeatureDisplacement])->{(Subscript[r, 1]),(Subscript[r, 2])}, different search window ranges can be specified for vertical and horizontal directions.

With (RefLink[Masking, paclet:ref/Masking])->roi, the set of points is restricted so that the returned points (Subscript[pts, 1]) of (Subscript[image, 1]) all lie within the region of interest roi.

The tracking between subsequent images is computed by an iterative algorithm. With (RefLink[MaxIterations, paclet:ref/MaxIterations])->n and (RefLink[Tolerance, paclet:ref/Tolerance])->tol, the algorithm terminates when the iterative displacement is less than tol or the number of iterations exceeds n.

OpenersPrimaryExamplesSection(Spacer1)Examples  (9)

OpenersExampleSection0(Spacer1)Basic Examples  (1)

Track specified points from one image to another:

ImageFeatureTrack[{,},{{141,86},{98,83}}]

OpenersExampleSection1(Spacer1)Scope  (2)

Automatically find the initial set of points to track:

ImageFeatureTrack[{,}]

Visualize tracked points:

images={,};
pts=ImageFeatureTrack[images,MaxFeatures->15];
MapThread[HighlightImage,{images,pts}]

OpenersExampleSection2(Spacer1)Options  (2)

OpenersExampleSubsection0(Spacer1)Masking  (1)

Track only the points that are inside of the specified mask:

images={,};mask=;
pts=ImageFeatureTrack[images,Masking->mask,MaxFeatures->15];
MapThread[HighlightImage,{images,pts}]

OpenersExampleSubsection1(Spacer1)MaxFeatures  (1)

Specify a maximum number of points to be tracked:

ImageFeatureTrack[{,},MaxFeatures->5]//MatrixForm

OpenersExampleSection3(Spacer1)Applications  (2)

Show the optical flow of points in two images:

pts=ImageFeatureTrack[{im1=,im2=},MaxFeatures->20];
Show[ImageAssemble[{im1,im2}],Graphics[{Green,PointSize[.02],MapThread[If[#2===Missing[],{Cyan,Point[#1]},Arrow[{#1,#2+{ImageDimensions[im1][[1]],0}}]]&,pts]}]]

Track the image corners between images:

im1=;im2=;
corners=ImageCorners[im1,5,Automatic,15]

ImageFeatureTrack[{im1,im2},corners]

OpenersExampleSection5(Spacer1)Interactive Examples  (1)

Track points in a sequence of images:

i=;
imgs=ImageRotate[i,# Degree,Full,Background->1]&/@Range[0,90,5];
pts=ImageFeatureTrack[imgs,MaxFeatures->10];
ListAnimate[MapThread[HighlightImage,{imgs,pts}]]

Plot the motion of each tracked feature:

ListLinePlot[Transpose@pts]

OpenersExampleSection6(Spacer1)Neat Examples  (1)

Tracking particles:

images={,};
{w,h}=ImageDimensions[images[[1]]];
res=ImageFeatureTrack[images,Flatten[Table[{x,y},{x,.5,w-.5,20},{y,.5,h-.5,20}],1]];

Graphics[{Red,If[FreeQ[#,_Missing],Arrow[{#}]]&/@Transpose[res]}]

({{DocumentationFooterIconsRelatedFunction.png, ({{See Also}, {(RefLink[ImageCorrespondingPoints, paclet:ref/ImageCorrespondingPoints])  ▪  (RefLink[ImageKeypoints, paclet:ref/ImageKeypoints])  ▪  (RefLink[ImageCorners, paclet:ref/ImageCorners])  ▪  (RefLink[FindGeometricTransform, paclet:ref/FindGeometricTransform])}})}})

({{DocumentationFooterIconsRelatedGuide.png, ({{Related Guides}, {▪(RefLinkPlain[Feature Detection, paclet:guide/FeatureDetection])}, {▪(RefLinkPlain[Computer Vision, paclet:guide/ComputerVision])}, {▪(RefLinkPlain[Geometric Operations, paclet:guide/ImageGeometry])}, {▪(RefLinkPlain[Image Processing & Analysis, paclet:guide/ImageProcessing])}, {▪(RefLinkPlain[Image Computation for Microscopy, paclet:guide/ImageComputationForMicroscopy])}, {▪(RefLinkPlain[Computational Photography, paclet:guide/ComputationalPhotography])}})}})