2016-04-27 17 views
1

AForge.NET Framework bietet eine Reihe von Filtern aus der mathematischen Morphologie. Alle Filter können so angewendet werden, dass sie das standardmäßige Strukturierungselement verwenden, indem sie ein benutzerdefiniertes Strukturierungselement verwenden.Wie kann ich mit 5 * 5 strukturierendes Element Dilation in Aforge.net programmieren?

In Dilation weist der Filter jedem Pixel des Ergebnisbildes den maximalen Wert der umliegenden Pixel zu. Umliegende Pixel, die verarbeitet werden sollen, werden durch Strukturierungselemente spezifiziert: 1 - um den Nachbarn zu verarbeiten, -1 -, um ihn zu überspringen.

Der Filter besonders nützlich für die binäre Bildverarbeitung, wo es erlaubt, separate Objekte zu wachsen oder Objekte zu verbinden.

Für die Verarbeitung von Bildern mit 3x3 Strukturelementen stehen verschiedene Optimierungen zur Verfügung, wie Dilatation3x3 und BinaryDilatation3x3.

Der Filter akzeptiert 8 und 16 bpp Graustufenbilder und 24 und 48 bpp Farbbilder zur Verarbeitung.

Dies ist der Code für 3 * 3 strukturierendes Element: mit 5 * 5 strukturierendes Element

Dilatation filter = new Dilatation(); 
filter.Apply(image); 

Aber ich brauche diesen Code zu implementieren. Wie kann ich diesen Code zu 5 * 5 strukturierenden Elementen ändern?

Antwort

2

ich nicht AForge.NET Rahmen weiß, sondern eine Erosion/Dilatation der Dimensionen 5x5 gleich zwei Erosionen/Streckungen von Dimensionen 3x3. Dies geschieht in Bibliotheken, die hexagonale Strukturelemente unterstützen.

Also in Ihrem Fall, wenden Sie einfach zweimal die Operation an. Entsprechend Ihrem Code wäre es:

Dilatation filter = new Dilatation(); 
filter.Apply(image); 
filter.Apply(image); 
2

Sie können einen Dilatationsfilter konstruieren und ihm ein benutzerdefiniertes strukturierendes Element gemäß Spezifikation here übergeben. Die strukturierende Element Sie wollen, ist ein 2-dimensionaler Int-Array mit der folgenden Struktur:

new short[5,5]{ 
{ 1,1,1,1,1 }, 
{ 1,1,1,1,1 }, 
{ 1,1,1,1,1 }, 
{ 1,1,1,1,1 }, 
{ 1,1,1,1,1 }, 
} 
+0

danke! Es hat mir geholfen, 2X2 zu machen – CyC0der