Le calcul de l'échelle, la rotation et la translation de l'Homographie de la matrice
Je suis en train de calculer l'échelle, la rotation et la translation entre deux images consécutives d'une vidéo. Donc, fondamentalement, je les ai trouvé keypoints et ensuite utilisé opencv fonction findHomography()
pour calculer la matrice d'homographie.
homography = findHomography(feature1 , feature2 , CV_RANSAC); //feature1 and feature2 are matched keypoints
Ma question est: Comment puis-je utiliser cette matrice pour calculer l'échelle, la rotation et la translation?.
Quelqu'un peut-il me donner le code ou une explication quant à la façon de le faire?
le mot clé est "homographie de décomposition". Afair vous pouvez extraire la rotation avec une décomposition QR, mais vous devriez mieux que google...
peut-être une (ou des liens) pour vous aider: stackoverflow.com/questions/15420693/...
et celui-ci =) hal.archives-ouvertes.fr/docs/00/17/47/39/PDF/RR-6303.pdf
C'est un problème complexe, mais cette réponse explique très bien cela: stackoverflow.com/questions/7388893/... Vous devriez essayer d'obtenir une compréhension plus profonde de la façon dont la matrice d'Homographie œuvres. En faisant ainsi, vous apprendrez également les avantages et les inconvénients. Vous pouvez aussi rechercher dans d'autres types de transformations comme transformation affine et rigide transformer. Si ils peuvent résoudre votre problème, ils sont plus faciles à utiliser.
peut-être une (ou des liens) pour vous aider: stackoverflow.com/questions/15420693/...
et celui-ci =) hal.archives-ouvertes.fr/docs/00/17/47/39/PDF/RR-6303.pdf
C'est un problème complexe, mais cette réponse explique très bien cela: stackoverflow.com/questions/7388893/... Vous devriez essayer d'obtenir une compréhension plus profonde de la façon dont la matrice d'Homographie œuvres. En faisant ainsi, vous apprendrez également les avantages et les inconvénients. Vous pouvez aussi rechercher dans d'autres types de transformations comme transformation affine et rigide transformer. Si ils peuvent résoudre votre problème, ils sont plus faciles à utiliser.
OriginalL'auteur Lakshya Kejriwal | 2014-09-04
Vous devez vous connecter pour publier un commentaire.
si vous pouvez utiliser opencv 3.0, cette méthode de décomposition est disponible
http://docs.opencv.org/3.0-beta/modules/calib3d/doc/camera_calibration_and_3d_reconstruction.html#decomposehomographymat
OriginalL'auteur Vineet
Pour l'estimation de l'arbre dimensions de rotation et de transformation induite par une homographie, il existe de multiples approches. L'un d'eux fournit fermé formules pour la décomposition de l'homographie, mais ils sont très complexes. Aussi, les solutions ne sont jamais uniques.
Heureusement, OpenCV 3 implémente déjà cette décomposition (decomposeHomographyMat). Etant donnée une homographie et une bonne échelle intrinsèques de la matrice, la fonction fournit un ensemble de quatre rotations et des translations.
OriginalL'auteur Emiswelt
Le droit de réponse est d'utiliser Homographie tel qu'il est défini dst = H . src et d'explorer ce qu'il fait pour les petits segments autour d'un point particulier.
Pour la traduction, il suffit de sélectionner un seul point:
Traduction = dst-H .src
Pour la rotation d'examiner deux points p1 et p2. p1' = H . p1, p2' = H . p2. Maintenant il suffit de calculer l'angle entre les vecteurs p1, p2 et p1'p2'.
Pour l'échelle, vous pouvez utiliser le même truc, mais maintenant, il suffit de comparer la longueur de
|p1 p2| et |p1'p2'|. À tarif utilisez un autre segment perpendiculaire à la première et à la moyenne du résultat. Vous verrez qu'il n'y est pas constante facteur d'échelle ou de traduction. Ils dépendront de la src emplacement.
OriginalL'auteur Vlad
Supposons que les première et deuxième cellules de la troisième rangée sont 0.
La troisième colonne de la matrice contient la traduction en X, traduction dans Y et 1, respectivement.
Comme pour le reste en haut à gauche 2x2 partie de la matrice d'homographie (qui contient du cisaillement, de la mise à l'échelle et rotation), il peut être décomposé suivant différentes méthodes. Un moyen facile et rapide est expliqué ici (cette méthode suppose matrice inversible): https://math.stackexchange.com/questions/78137/decomposition-of-a-nonsquare-affine-matrix
Vous parlez de la matrice affine, qui est différente de la matrice d'homographie.
OriginalL'auteur Parlance
La question semble être d'environ 2D paramètres. Homographie de la matrice des captures distorsion de perspective. Si l'application ne crée pas beaucoup de distorsion de perspective, on peut se rapprocher d'un monde réel de la transformation affine à l'aide de la transformation de la matrice (qui n'utilise que de l'échelle, la rotation, la translation et pas de tonte/retournement). Le lien suivant donnera une idée sur la décomposition d'une transformation affine sur différents paramètres.
https://math.stackexchange.com/questions/612006/decomposing-an-affine-transformation
OriginalL'auteur Vinmean