1) Le (Vx, Vy) obtenu à la fin correspond-t-il bien au flux optique au point p ?
Oui "the local image flow (velocity) vector (Vx,Vy)"
2) Le calcul de (Vx, Vy) doit-il être effectué pour chaque point de l'image ?
Oui le calcul est local en cahque point. Si tu veux une flux optique dense alors il faudra le calculer pour chaque pixel (ou alors faire de l'interpolation)
3) Actuellement pour le calcul de Ix (et de Iy) les dérivées partielles, soit P(x, y) le pixel aux coordonnées (x, y), si je suis en x = 0 je dis Ix = P(x + 1, y) - P(x, y), si je suis en x = width Ix = P(x, y) - P(x - 1, y), et sinon Ix = 1/2 * (P(x + 1, y) - P(x - 1, y)), est-ce que c'est la bonne méthode ?
Ix = (P(x,y) - P(x-1),y)
il s'agit d'un gradient basique d'intensité. Qui n'est pas valable pour la première ligne/colone de pixel.
Pour info, tu peux aussi utiliser des filtres de convolutions (prewit par exemple) pour calculer tes gradient directionels sur un plus grand voisinage.
4) Pour It, je prends ma seconde image P2 et ma première image P1 et je calcul It = P2(x, y) - P1(x, Y), c'est bon ?
oui, c'est la diférence d'intensité temporelle d'un meme pixel
5) Quelle forme et quelle taille doit-avoir la fenêtre autour du point p (ensemble {q1, ..., qn}) pour obtenir de bons résultats ?
Ca c'est la question a 1million d'euros.
En gros il n'y a pas de bonne réponse, ça dépend directement de la taille de tes mouvements entre deux images (en pixel). Information dont tu ne disposes pas a priori.
De plus comme expliqué dans le dernier paragraphe de la page wikipedia, cette méthode est basé sur une hypothèse de déplacements très petits (moins grands que les pixels) donc si tu lances directement cet algo sur deux frames successives de ta webcam ça va pas le faire. En général cette méthode est utilisée dans le cadre d'une approche multi-echelle (coarse to fine). C'est a dire que l'on construit une pyramide d'image de résolution de plus en plus faible (jusqu'a qq pixels de largeur). Cette méthode permet de retrouver les grands mouvement dans les images au niveaux de faibles résolution et de les propager lors du calcul des détails du déplacement aux résolution plus grandes.
L'implémentation de cet algo dans OpenCV utilise cette approche pyramidale.
http://opencv.willowgarage.com/documentation/cpp/video_motion_analysis_and_object_tracking.html?highlight=lk#calcOpticalFlowPyrLK