Question

Je suis errant à travers le web et aucun des tutoriels que j'ai lu, je ne comprends pas vraiment. Comment puis-je la mise en œuvre du filtre haute pass3 pour les photos .pgm? Je struct AVONS de l'image:

struct Image {

 char* file_name; //name of .pgm file
 char header[3];  
 int max_grey_value; 
 int height;   
 int width;   
 int **pixels;  //pixels matrix
 struct Image *next; //next element in the list

};

Et maintenant comment commencer? Pour autant que je sais que je dois compter une SUM, mais je complètement ne sais pas comment, et est-ce une somme pour l'image entière ou il est pour un seul pixel? Ok, alors quoi? Je dois diviser par un quotient. Est-ce l'argument de la fonction ou il doit compter par lui-même. Je suis vraiment confus au sujet de celui-ci. Quelqu'un peut-il expliquer la mise en œuvre de ce filtre à moi en termes simples un débutant peut comprendre?

Était-ce utile?

La solution

Tout d'abord, vous devez lire votre image PGM dans votre struct. Si vous ne savez pas comment faire, lisez le format PGM .

Une fois que vous avez fait cela, vous devez construire votre filtre. A partir de votre question un peu ambiguë, il semble que vous avez besoin d'un filtre de taille 3x3. En théorie, vous pouvez réutiliser votre struct Image pour représenter le filtre - le contenu du filtre (la partie de pixels) dépendra du filtre spécifique que vous utilisez (par exemple Laplacien ou Sobel). Une fois que vous avez votre filtre, convolve avec l'image que vous avez chargé dans la première étape. Techniquement, vous avez terminé, mais en supposant que vous voulez vraiment voir le résultat, vous devez écrire le résultat de convolution à un autre fichier PGM.

Vous devrez écrire votre propre fonction de convolution (ce qui impliquera la partie « compter une somme » que vous avez mentionné dans votre question). Vous aurez également besoin de vos propres fonctions E / S l'image, à moins qu'ils aient déjà été fournis.

La sortie de convolution ressemblera à quelque chose comme cette .

Comme une note de côté, il serait préférable de séparer la représentation de l'image dans la mémoire et la représentation de l'image dans un système de fichiers dans votre conception. Par exemple, actuellement, votre struct Image suppose que chaque image a une filename correspondante, qui sera dénuée de sens si le Image wasn`t chargé à partir du système de fichiers (par exemple si elle est un filtre que vous avez créé par vous-même).

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