PARTICLE FILTER, RODINIA.
The particle filter (PF) is statistical estimator of the location of a target object given noisy measurements of that target's location and an idea of the object's path in a Bayesian framework. The PF has a plethora of applications ranging from video surveillance in the form of tracking vehicles, cells and faces to video compression. This particular implementation is optimized for tracking cells, particularly leukocytes and myocardial cells.
After selecting the target object, the PF begins tracking it by making a series of guesses about the current frame given what is already known from the previous frame. The PF then determines the likelihood of each of those guesses occurring using a predefined likelihood model. Afterwards, the PF normalizes those guesses based on their likelihoods and then sums the normalized guesses to determine the object's current location. Finally, the PF updates the guesses based on the current location of the object before repeating this process for all remaining frames in the video.
V1 of the code interfaces with MATLAB. It allows for the PF to be called from within MATLAB and also for the PF to call a predefined MATLAB implementation of the likelihood function from within the OpenMP/Naive CUDA implementations. However, doing so will cause some slowdown.
Refer: [http://www.cs.virginia.edu/~skadron/Papers/goodrum_eama2010.pdf]
Code Snippetint: Nparticles = 1000, index double: arrayX, arrayY,xj,yj, CDF, ufor(j = 0; j<Nparticles; j++) { int index = -1; for(int x = 0; x < Nparticles; x++) { if(CDF[x] >= u[j]) { index = x; break; } } if(index == -1) { i = Nparticles - 1; } else { i = index; } if(i == -1) { i = Nparticles-1; } xj[j] = arrayX[i]; yj[j] = arrayY[i]; }