There are a few things you can try but it still is not going to be an easy task. In general, in the absence of data you would be trying to exploit extraneous information by models or assumptions.
1. Try to make sense of the particles: The reason I asked about the particles was to understand if they are are symmetrical. If they are, then you could try a Gaussian filter adapted to the particle size, which would give you "high outputs" for anything that resembles a blob at that size. If they are not and they are "tumbling", then this would need to be taken into account. A single frame output filtered at 6 pixels looks like this:
Not very useful. The basic idea here would be to create a model of the particle so that you can somehow discriminate it amidst the noise. The Gaussian here is trying to match the particle but other features in the image look like the particle too (blob-like density variation). Which brings us to:
2. Try to get rid of the background: There are various ways you can do that. One of them is to average (or median) all of your frames into one. The median is more powerful in terms of discriminating relatively static parts of the image. One "master" frame obtained in this way looks like this:
Which is great because now you can see some more detail that is not exactly visible from the individual frames.
Now we try to subtract this background image from each frame of the sequence to get rid of the background and (hopefully) see remaining blobs flying around. Not exactly what was expected, but the sequence now looks like this:
Maybe I am not getting the timing right here but I don't see any particles flying around (?).
From this point onwards, you can combine approaches. For example, you can now apply the filter on the background-subtracted sequence of frames and then try to track the filter output (the blobs).
Or, you could try subtracting two successive frames and then try to track the gradient blobs. Assuming that the frame rate is sufficiently high (compared to the velocity of the particles), subtracting two successive frames will give you a gradient-like blob towards the direction of movement for each particle. This is expected to be consistent for moving particles and affected (to some extent) by noise. Which would then lead us to:
3. Try to track particles along specific routes: Assuming that you know approximately the routes on which the particles are supposed to be moving, you can create a model of that and use it, during your tracking, to decide if you are tracking a possibly "positive target" or some noise blob that by chance looked like a particle. But that now is way high up in the complexity scale and it assumes that you have a relatively good estimate of what a particle is.
Of course, all of the above would benefit from an increase in the amount of data you are capturing.
Hope this helps.