1 | initial version |
There's no way to answer definitively without a system that completely understands the image and everything in it, but we can come close.
Basically, if the camera is moving, everything you see in the image is undergoing the same apparent motion plus whatever real motion those objects are taking. So your basic effort is to match points between frames, then calculate the camera motion that would cause them to align. That would be the findEssentialMat function. Then, if the motion is large, the camera is moving.
Obviously, if there are many objects moving in a consistent manner that will throw off the calculation, but depending on the application, you should be able to filter or otherwise deal with it. Many objects moving in different ways should not cause a problem, as the RANSAC or LMED methods would throw them out of consideration.
And of course, you can use time in your favor as well. If the motion changes with every frame, it might not be real, but if it's consistent, then it is real. Kalman filters are your friend for this.
It's not an easy problem, so good luck.