Salut a tous,
J'ai découvert dans Estampe un logiciel de dessin en delphi l'existence des matrices 3*3 pour appliquer les filtres de type flou gaussien ,sculture et compagnie.Mais je n'ai pas compris en examinant le code source comment traiter le pixel central avec les coeffs de la matrice.
J'ai donc essayé de comprendre tout seul.
Chaque composante rgb d'un pixel recoit la somme des (valeur rgb du pixel de la matrice*coeff de la matrice).
Ainsi avec les scanlines ca donne:
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
20
21
22
23
24 r:=row1[i-1].rgbtRed*mat[1,1]+row1[i].rgbtRed*mat[2,1] + row1[i+1].rgbtRed*mat[3,1] + row2[i-1].rgbtRed*mat[1,2]+ row2[i].rgbtRed*mat[2,2] + row2[i+1].rgbtRed*mat[3,2] + row3[i-1].rgbtRed*mat[1,3] +row3[i].rgbtRed*mat[2,3] + row3[i+1].rgbtRed*mat[3,3]; g:=row1[i-1].rgbtgreen*mat[1,1]+row1[i].rgbtgreen*mat[2,1] + row1[i+1].rgbtgreen*mat[3,1] + row2[i-1].rgbtgreen*mat[1,2]+ row2[i].rgbtgreen*mat[2,2] + row2[i+1].rgbtgreen*mat[3,2] + row3[i-1].rgbtgreen*mat[1,3] +row3[i].rgbtgreen*mat[2,3] + row3[i+1].rgbtgreen*mat[3,3]; b:=row1[i-1].rgbtblue*mat[1,1]+row1[i].rgbtblue*mat[2,1] + row1[i+1].rgbtblue*mat[3,1] + row2[i-1].rgbtblue*mat[1,2]+ row2[i].rgbtblue*mat[2,2] + row2[i+1].rgbtblue*mat[3,2] + row3[i-1].rgbtblue*mat[1,3] +row3[i].rgbtblue*mat[2,3] + row3[i+1].rgbtblue*mat[3,3]; r:=r div diviseur; g:=g div diviseur; b:=b div diviseur; row2[i].rgbtred:=r; row2[i].rgbtgreen:=g; row2[i].rgbtblue:=b;
avec row1,2,3 les 3 lignes de la matrice.
diviseur est la somme des coeffs de la matrice.
Avec ca j'ai réussi a avoir le filtre flou gaussien,les coeffs de matrices negatifs ne donnent rien...
Ma solution est elle bonne sinon quelqu'un pourrait il m'expliquer les opérations a effectuer avec la matrice car j'ai écumé les forums et sites meme anglais sans avoir de réponse nette.
Merci
Partager