Dilatation



  • Hi,

    ich möchte ein Programm schreiben, dass eine Dilatation durchführt. Ich hoffe ihr wisst was das ist.
    Ich versuch es mal kurz zu erklären.
    Ein Pixel bleibt schwarz gefärbt, falls ein Nachbarpixel schwarz ist.
    Ein schwarzes Pixel wird weiß gefärbt, sobald es kein schwarzes Nachbarpixel hat.
    Weiße Pixel bleiben weiß.

    /*------------------------------------------------------------------------------
    Dilatation
    ------------------------------------------------------------------------------*/
    
    bool ByteImage::Dilatation(ByteImage* TMPImage){
    
    	unsigned char GWA[9] = {0};
    
    	for(unsigned int cols = 0; cols < this->_NCols; cols++){
    		for(unsigned int rows = 0; rows < this->_NRows; rows++){
    
    		//X**
    		GWA[0] = this->GetPixel(rows - 1, cols - 1);
    		GWA[3] = this->GetPixel(rows , cols - 1);
    		GWA[6] = this->GetPixel(rows + 1, cols -1);
    
    		//*X*
    		GWA[1] = this->GetPixel(rows - 1, cols);
    		GWA[4] = this->GetPixel(rows, cols);
    		GWA[7] = this->GetPixel(rows + 1, cols);
    
    		//**X
    		GWA[2] = this->GetPixel(rows  -1 , cols + 1);
    		GWA[5] = this->GetPixel(rows, cols + 1);
    		GWA[8] = this->GetPixel(rows + 1, cols + 1);
    
    		this->sortFeld(GWA);
    
    		if(GWA[0]==0){
    
    			printf("Pixel ist schwarz \n");
    			TMPImage->SetPixel(rows, cols, GWA[0]);
    		}
    
    		else
    			printf("Pixel ist weiss \n");
    
    		}
    	}
    
    	return true;
    }
    

    Ich hoffe ihr könnt mir helfen, da ich grad keinen Plan hab, wie ich da vorgehen muss.
    DANKE.

    Gruß
    schmitti81

    P.S.: Ich bin mir auch nicht sicher ob die Textausgabe stimmt. In meinem Testbild ist das Pixel 0 schwarz. Der Rest ist weiß.



  • irgendwie hast du die frage vergessen 🙄



  • Die Frage lautet. Kann mir jemand helfen, wie ich weiter vorgehen muss, damit mein Programm eine Dilatation durchführt.

    Gruß
    schmitti81



  • 1. Erstell dir ein zweites Array der gleichen Größe.
    2. Durchlaufe jedes Element
    3. Untersuche für dein Element den aktuellen Werte und die der (bis zu 😎 Nachbarn
    und setzt den neuen Wert entsprechend.
    4. Gebe dein neues Array zurück.



  • Hallo,

    Aber nicht zu oft durchlaufen :).

    MFG winexec*



  • @Javaner: Danke. Das mit dem Werte abfragen hat bei mir irgendwie nicht geklappt. Irgendwie hat der mir keine Werte ausgegeben.
    Kannst du mir nicht mal schreiben wie du das gedacht hast.
    Dankeschön.

    Gruß
    schmitti81


Anmelden zum Antworten