Convolution d'image - Algo - Programmation
Marsh Posté le 28-06-2005 à 08:35:46
C'est quoi IM[i][j] ? C'est la chrominance du pixel (i,j) ? La luminance ? Le contraste ? autre ?
Marsh Posté le 28-06-2005 à 08:52:43
1) inverse tes boucles (on va plus vite à parcourir les colonnes à chaque itération que les lignes)
2) tu divises par 9 c'est bien, mais attention si tu changes les coefs. de L (pour une convolution on divise par la somme des coefs.)
3) attention à tes indices!!! i donne les colonnes et j les lignes, or tu accèdes à tes pixels par [colonnes][lignes] alors que c'est le contraire!!!
Pour répondre à 1), à 3) et à ton problème en même temps, inverse H et W dans tes boucles.
Marsh Posté le 28-06-2005 à 13:46:54
Citation : |
C'est le niveau de gris du pixel.
Citation : 1) inverse tes boucles (on va plus vite à parcourir les colonnes à chaque itération que les lignes) |
C'etait bete! Merci ! c'est bon ca marche!
Marsh Posté le 28-06-2005 à 01:58:58
Bonsoir,
j'ai un probleme lorsque je fais une convolution d'image, ca marche tres bien pour des images de taille 256*256 mais pour les autres ca crée un effet de mosaïque. (je travaille en niveau de gris). D'ou peut venir le probleme?
Exemple :
int L[3][3]={{1,1,1},{1,1,1},{1,1,1}}; //filtre gaussien
void Fonction()
{
for(i=1;i<W-1;i++)
{
for(j=1;j<H-1;j++)
{
IM[i][j]= (L[0][0]*IMG[i-1][j-1]+
L[0][1]*IMG[i-1][j]+
L[0][2]*IMG[i-1][j+1]+
L[1][0]*IMG[i][j-1]+
L[1][1]*IMG[i][j]+
L[1][2]*IMG[i][j+1]+
L[2][0]*IMG[i+1][j-1]+
L[2][1]*IMG[i+1][j]+
L[2][2]*IMG[i+1][j+1])/9;
}