Dado un 3 x 3 matriz de rotación,R, y un 3 x 1 traducción de la matriz,T, me pregunto cómo multiplicar la T y la R matrices a una imagen?

Digamos que el Iplimage img es de 640 x 480.

Lo que quiero hacer es R*(T*img).

Yo estaba pensando en usar cvGemm, pero que no funcionó.

  • ¿La respuesta de ayuda, si no, hágamelo saber, voy a intentar explicar mejor, si sí: gracias a aceptarlo ! Julien
InformationsquelleAutor SeriousTyro | 2011-08-11

1 Comentario

  1. 4

    La función que está buscando es probablemente warpPerspective() : este es un caso de uso…

    //Projection 2D -> 3D matrix
            Mat A1 = (Mat_<double>(4,3) <<
                1, 0, -w/2,
                0, 1, -h/2,
                0, 0,    0,
                0, 0,    1);
    
    //Rotation matrices around the X axis
            Mat R = (Mat_<double>(4, 4) <<
                1,          0,           0, 0,
                0, cos(alpha), -sin(alpha), 0,
                0, sin(alpha),  cos(alpha), 0,
                0,          0,           0, 1);
    
    //Translation matrix on the Z axis 
            Mat T = (Mat_<double>(4, 4) <<
                1, 0, 0, 0,
                0, 1, 0, 0,
                0, 0, 1, dist,
                0, 0, 0, 1);
    
    //Camera Intrisecs matrix 3D -> 2D
            Mat A2 = (Mat_<double>(3,4) <<
                f, 0, w/2, 0,
                0, f, h/2, 0,
                0, 0,   1, 0);
    
    Mat transfo = A2 * (T * (R * A1));
    
    Mat source;
    Mat destination;
    
    warpPerspective(source, destination, transfo, source.size(), INTER_CUBIC | WARP_INVERSE_MAP);
    

    Espero que pueda ayudar,

    Julien

    PS : me dio el ejemplo con una proyección de 2D a 3D, pero se puede utilizar directamente transfo = T* R;

    • He seguido el enlace jepsonsblog.blogspot.en/2012/11/…, pero no sé lo que las entradas tengo que dar. He probado con pocos números, pero no podía tener éxito. Mi intención es la de rotar una imagen determinada a lo largo del eje y.
    • El A1 la matriz está mal aquí, es necesario disponer de otro 1 en la tercera fila. Se esta respuesta: stackoverflow.com/questions/17087446/…
    • Er, lo siento… supongo que a su manera podría funcionar tan bien mientras usted mueve la cámara (o la imagen) de regreso de z=0 con una gran z-traducción…

Dejar respuesta

Please enter your comment!
Please enter your name here