1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
|
double noyau[5][5] = {
1, 4, 7, 4, 1,
4, 16, 26, 16, 4,
7, 26, 41, 26, 7,
4, 16, 26, 16, 4,
1, 4, 7, 4, 1 };
double **image_source = ...;
double **image_floue = ...;
/* On commence à 2 au lieu de 0 et on finit à hauteur -2 au lieu de hauteur
Pour ne pas s'embêter avec la gestion des bords */
for(j = 2; j < hauteur - 2; ++j) {
/* idem */
for(i = 2; i < largeur - 2; ++i) {
/* initialisation du pixel de destination */
image_floue[j][i] = 0;
/* application du noyau */
for(ii = 0; ii < 5; ++ii) {
for(jj = 0; jj < 5; ++jj) {
/* application de chaque élément du noyau sur l'image source
dans l'image finale */
image_floue[j][i] += noyau[jj][ii] * image_source[i+ii-2][j+jj-2];
}
}
/* normalisation : somme des éléments du noyau = 273. */
image_floue[j][i] /= 273.;
}
} |
Partager