Bonjour
Je souhaiterai manipuler des images de façon à extirper d'une image d'une autre grâce à une matrice de transformation.
Voici ce que j'ai effectuer. Je place 4 points autour de la zone que je cherche à extraire sur l'image de gauche G. Et j'obtient l'image de droite D avec une matrice de transformation que j'ai passé dans le CSS avec la propriété suivante.
matrix3d(1.5456325781948308,1.6561987730956724,0,0.0012239101773909712,-0.4663849104791486,2.218793881308064,0,0.0009095626603861196,0,0,1,0,12.247969030166722,-17.754955132517754,0,0.9951722722714726)
Voici la matrice M de transformation 4x4
[[1.5456325781948308, 1.6561987730956724, 0, 0.0012239101773909712],
[-0.4663849104791486, 2.218793881308064, 0, 0.0009095626603861196],
[0, 0, 1, 0],
[12.247969030166722, -17.754955132517754, 0, 0.9951722722714726]]
Je cherche à obtenir chaque coordonnée de pixel en passant par le calcul de l'image D vers l'image G.
Exemple, je demande le pixel (0,0) sur l'image D alors j'obtient la coordonnée (53,193) sur l'image source G.
Pour cela j'applique un calcul qui ne fonctionne visiblement pas. Soit P le point de l'image D et P' le point sur l'image G:
M * P = P'
P est définie tel que :
[[x],
[y],
[0],
[1]]
Un exemple pour (x, y) = (0,0)
[[1.5456325781948308, 1.6561987730956724, 0, 0.0012239101773909712],
[-0.4663849104791486, 2.218793881308064, 0, 0.0009095626603861196],
[0, 0, 1, 0],
[12.247969030166722, -17.754955132517754, 0, 0.9951722722714726]]
X
[[0],
[0],
[0],
[1]]
=
[[0.0012239101773909712],
[0.0009095626603861196],
[0],
[0.9951722722714726]]
Les deux première composante de P' ne me semble pas cohérente, le résultat est bien trop petit comparé à la position sur le screen.
Pouvez vous m'aidez à trouver le calcul correcte permettant de faire la transformation d'une coordonnée de l'image D vers G s'il vous plait?
Cordialement
MatrixCuriosity
Partager