Discuss About The Variables Measurements Linear Combination?
For tracking, we adopt EKF over linear Kalman filtering because most of the times the state variables and management are not linear combination of state variables, inputs to the system and noise. The key variables used in EKF were state estimate (k x ?) and measurement (k z ) whose relation can be depicted in the figure below . This is the advance research of our previous work so comprehensive explanation of EKF can be seen below And from the above illustration diagram we can come up with algorithms to help come up with the matlab codes (Corke, 2011).
Above algorithms it will be very easy to develop the Matlab codes
Here is the basic program for detecting and tracking moving object from a video (Using colour information). This program first loads the video "singleball.mp4" into workspace and then by using kalman filtering and blob analysis, the moving ball is tracked (Corke, 2011).Therefore the below are the matlab codes for object tracking using colour information.
Matlab Program for Object Tracking:
// Showing the colour information ( video )
videoReader = vision.VideoFileReader('singleball.mp4');
//Initializing the positions of the objects to be tracked
videoPlayer = vision.VideoPlayer('Position',[100,100,500,400]);
foregroundDetector = vision.ForegroundDetector('NumTrainingFrames',10,'InitialVariance',0.05);
// giving the condition or the boundary of tracking of the object, it is false if the minimum Blob area is 70 m.
blobAnalyzer = vision.BlobAnalysis('AreaOutputPort',false,'MinimumBlobArea',70);
kalmanFilter = ; isTrackInitialized = false;
// Introducing a while loop for the video reader.
colorImage = step(videoReader);
// Detecting the foreground object through colour image
foregroundMask = step(foregroundDetector, rgb2gray(colorImage));
detectedLocation = step(blobAnalyzer,foregroundMask);
isObjectDetected = size(detectedLocation, 1) > 0;
// If there is a constant acceleration of the moving object and the detected location within 25 or 10 tracks then marketing track initialized is correct ( the position of the object is correct).
kalmanFilter = configureKalmanFilter('ConstantAcceleration',detectedLocation(1,:), [1 1 1]*1e5, [25, 10, 10], 25);
isTrackInitialized = true;
label = ''; circle = zeros(0,3);
// And since it is located the label will be corrected (If was in wrong direction, it will be directed to the required direction)
trackedLocation = correct(kalmanFilter, detectedLocation(1,:));
label = 'Corrected';
// Therefore the location of the object is the predicted one.
trackedLocation = predict(kalmanFilter);
label = 'Predicted';
circle = [trackedLocation, 5];
colorImage = insertObjectAnnotation(colorImage,'circle',circle,label,'dominant Color','dominant color');
Most Frequent color= Dominant color;
ForEvery Object A;
//New Dominance color is that color after demerging while Previous Dominant color is that color before merging.
ElseIf SameAs A
Else NewObject B;
If( ObjectSizeInFrame J – ObjectSizeInFrame J-1>Threshold);
//The ID is stored if object size in frame J - object size In frame J-1> 1.
End // The execution of the program will end at this point
The above codes will thus help showing a good tracking of moving independent and partial occluded objects. The direction of object was maintained to recover it’s tracking ID after partial merging and past information for 10 frames to re-track object operations after few frames by STGMM. And this can be witnessed from the below diagrams,
Blake, A. (2012). Active Vision . London : Mit press.
Corke, P. (2011). Robotics, Vision and control : Fundermental Algorithms in MATLAB . nursing: Springe