Bonsoir,
Voilà, alors je suis débutant en matlab et là j'ai un projet en traitement d'images où je dois effectuer divers effets comme l'érosion par exemple.
Je voudrais utiliser l'algorithme suivant :
Pour tous les pixels (x, y) de image_1 Faire :
Début
Tab1(x, y) = Faux
Tab2(x, y) = Faux
Si image_1 >0 Alors Tab1(x, y) = VRAI
Fin
Pour tous les pixels (x, y) Faire
Début
Si Tab1(x-1, y-1) est VRAI
ET Tab1(x-1, y)
ET Tab1(x-1, y+1)
ET Tab1(x+1, y-1)
ET Tab1(x+1, y)
ET Tab1(x+1, y+1)
Alors Tab2(x, y) = Tab1(x, y)
Sinon Tab2(x, y) = FAUX
Fin
Pour tous les pixels (x, y) Faire
Début
Si Tab2(x, y) est VRAI alors image_1 = 255
Sinon image_1 = 0
Fin
Seulement voilà, je n'arrive pas à le traduire en matlab, je patauge complètement. Donc si vous pouviez m'y aider, ça serait sympa...
Après de nombreuses tentatives qui ne donnent strictement rien, je vais mettre le code le moins pourri que j'ai pondu... Je suis sûr de me planter dans l'utilisation des boucles for.
Voilà, ça vaut ce que ça vaut, l'image a été binarisée au préalable.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 for I=1:i for J=1:j t1=0; t2=0; if IBinaire>0 t1=1; end if t1=1 & t1(i-1,j) & t1(i-1,j+1) & t1(i+1,j-1) & t1(i+1,j) & t1(i+1,j+1) t2=t1; else t2=0; end if t2=1 IBinaire=255; else IBinaire=0; end end end
Merci d'avance
Bonne soirée
Partager