Bonjour,

J'aurais besoin d'aide pour un problème assez simple, mais pas facile à résoudre avec un code pas très gourmand :

J'ai reconstruit une image de grande dimension à partir de nombreuses images (selon des règles pré-établies pour les régions où il y a superposition), et j'obtiens au final une image mosaïquée que je souhaite re-découper selon la contribution de chaque image d'origine (c'est tordu comme approche, mais j'en ai besoin ).

Par exemple, j'ai 4 images :

Im1 = [A1 A2 A3; A4 A5 A6; A7 A8 A9; A10 A11 A12]
Im2 = [B1 B2 B3; B4 B5 B6; B7 B8 B9; B10 B11 B12]
Im3 = [C1 C2 C3; C4 C5 C6; C7 C8 C9; C10 C11 C12]
Im4 = [D1 D2 D3; D4 D5 D6; D7 D8 D9; D10 D11 D12]

et une image finale : Imtot = [A1 A2 C3; B4 D5 C6; B7 B8 D9; A10 B11 C12]

Et bien je voudrais générer 4 nouvelles images de la forme :

Im1' = [A1 A2 0; 0 0 0; 0 0 0; A10 0 0]
Im2' = [0 0 0; B4 0 0; B7 B8 0; 0 B11 0]
Im3' = [0 0 C3; 0 0 C6; 0 0 0; 0 0 C12]
Im4' = [0 0 0; 0 D5 0; 0 0 D9; 0 0 0]


Pour l'instant ce que je fais c'est que je créer une matrice qui enregistre pour chaque pixel de l'image totale, l'image qui y a contribué. Par exemple avec l'image totale précédente : Matrice = [1 1 3; 2 4 3; 2 2 4; 1 2 3]
Et ensuite je boucle sur mon nombre d'images, et je créé des masques binaires en fonction des indices de chaque image dans cette matrice.
En reprenant l'exemple précédent :
Masque1 = [1 1 0; 0 0 0; 0 0 0; 1 0 0]
Masque2 = [0 0 0; 1 0 0; 1 1 0; 0 1 0]
Masque3 = [0 0 1; 0 0 1; 0 0 0; 0 0 1]
Masque4 = [0 0 0; 0 1 0; 0 0 1; 0 0 0]
Et au final j'obtiens mes nouvelles images en les multipliant avec leurs masques respectifs.
Bon, ça marche mais c'est assez merdique car sur un lot de 400 images 5000*5000 il me faut 1 semaine pour obtenir mes images (et encore, quand Octave ne plante pas en cours de route )

Voilà, donc je ne sais pas si il y a moyen de trouver une méthode plus rapide pour faire ce que je souhaite, aussi j'en appelle à votre aide.

Merci