Frage

Ich wanderte durch die Bahn und keiner von Tutorials Ich habe gelesen, verstehe ich nicht wirklich. Wie kann ich Implementierung von High-Pass3 Filter für .pgm Bilder? Ich habe Struktur des Bildes:

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

};

Und jetzt, wie Sie anfangen sollen? Soweit ich weiß, ich habe eine gewisse Summe zählen, aber ich weiß nicht vollständig, wie, und ist diese Summe ein für ganze Bild oder es ist für einzelne Pixel? OK was dann? Ich brauche es zu teilen, indem er einige Quotienten. Ist das Argument der Funktion oder es sollte es von selbst zählen. Ich bin wirklich über diese verwirrt. Kann jemand ein Anfänger Implementierung dieses Filters mir in einfachen Worten konnte verstehen, erklären?

War es hilfreich?

Lösung

Zunächst müssen Sie Ihre PGM Bild in Ihre Struktur lesen. Wenn Sie nicht wissen, wie Sie dies tun, lesen Sie über die PGM-Format .

Wenn Sie das getan haben, müssen Sie Ihre Filter konstruieren. Von Ihrem etwas zweideutig Frage, es klingt wie ein Filter der Größe 3x3 benötigen. Theoretisch können Sie wieder verwenden Ihre Image Struktur um den Filter zu repräsentieren - der Inhalt des Filters (der pixels Teil) auf dem spezifischen Filter ab, die Sie verwenden (z Laplace oder Sobel). Nachdem Sie Ihre Filter haben, convolve es mit dem Bild, das Sie im ersten Schritt geladen. Technisch gesehen, sind Sie hier getan, aber vorausgesetzt, Sie tatsächlich das Ergebnis sehen möchten, müssen Sie write das Faltungser an einem anderen PGM-Datei.

Sie müssen Ihre eigene Faltungsfunktion schreiben (Dies beinhaltet den Teil „einige SUM zählen“, dass Sie in Ihrer Frage erwähnt haben). Sie benötigen außerdem eine eigene Bild I / O-Funktionen, sofern sie nicht bereits zur Verfügung gestellt worden sind.

Die Faltung Ausgang wird etwas aussehen wie rel="nofollow">.

Als Randbemerkung, wäre es besser, die Darstellung des Bildes im Speicher zu trennen und Darstellung von Bild in einem Dateisystem in Ihrem Design. Zum Beispiel zur Zeit nimmt Ihr Image struct, dass jedes Bild eine entsprechende filename hat, was sinnlos ist, wenn die Image aus dem Dateisystem geladen wasn `t (zum Beispiel, wenn es ein Filter ist, dass Sie selbst erstellt hat).

scroll top