Question

J'écris un programme de lissage de l'image qui utilise des filtres moyens, mais je ne peux pas sembler corriger les deux derniers problèmes de limites.J'utilise des entiers au lieu d'une image.J'ai pour les 1 coins de la main gauche retourner les valeurs appropriées, ainsi que les entiers moyens, les entiers latéraux gauche et les entiers supérieurs et inférieurs.Actuellement, je suis coincé sur le côté droit des entiers causant des problèmes de limites.

void side2(int a[10][20], int c[10][20], int m, int n)
{
    int i,j;
    for (i=1;i<m-1;i++) {
        for (j=0;j<n-1;j++) {
            c[i][j]=(0+0+a[i-1][j]+a[i+1][j]+a[i][j+1])/3;        
        }         
    } 
}

Ceci est juste la fonction qui calcule le côté droit et non ni des coins.

Voici la sortie que je reçois.L'utilisateur est invité à entrer un numéro pour les colonnes et les lignes, ceci génère une matrice de nombres aléatoires suivie de l'image lissée avec les résultats du filtre moyen.Comme vous pouvez le voir, le côté droit est louficiel, et je ne peux pas sembler trouver les bonnes valeurs pour les frontières.Peut-on peut-être m'aider à trouver les limites appropriées afin que je puisse arrêter de recevoir ces numéros farfelu.

please enter number of columns and rows
5 5
66  49  74  73  44
47  73  69  27  97
96  63  79  68  35
82  86  28  22  14
59   3  24   5  22
The smoothed image is
48  71  63  482009141880
78  60  60  79764514
64  79  55  28696626048
80  31  41  29  19
42  56  12  222009815

Était-ce utile?

La solution

Vous devez écrire quelque chose à la frontière où vous ne pouvez pas faire le filtre.Actuellement, vous n'écrivez rien à, par exemple, c[1][n-1], vous obtenez donc simplement une indemnisation ininitialisée.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top