Heim  >  Artikel  >  Java  >  Korrosion und Erweiterung von Java-Bildern

Korrosion und Erweiterung von Java-Bildern

黄舟
黄舟Original
2016-12-30 11:42:151461Durchsuche

Korrosion: Nach der Übersetzung des Strukturelements B durch a wird Ba erhalten, wenn Ba in X enthalten ist. Die Menge aller a-Punkte, die die oben genannten Bedingungen erfüllen, wird als Ergebnis der Erosion von X bezeichnet B. Ausgedrückt als: E(X)={a|
Ba

X}=X

B, wie in der Abbildung

Korrosion und Erweiterung von Java-Bildern

gezeigt

Erweiterung: Es kann als doppelter Vorgang der Korrosion angesehen werden. Seine Definition lautet: Nach der Übersetzung des Strukturelements B durch a wird Ba erhalten. Wenn Ba auf X trifft, zeichnen wir diesen Punkt auf. Die Menge aller a-Punkte, die die oben genannten Bedingungen erfüllen, wird als Ergebnis der Erweiterung von X um B bezeichnet. Die Formel lautet wie folgt: D(X)={a
|.

Korrosion und Erweiterung von Java-BildernWeitere Einzelheiten finden Sie unter Bilderweiterung, -erosion und -verfeinerung

Da wir nun das Prinzip verstanden haben, finden Sie hier den Code zur Implementierung:

Erweiterung :

Korrosion:
public void Expand(int[][] mask){
		IterBinary();//二值化
		int mh = mask.length;
		int mw = mask[1].length;
		int sh = (mh+1)/2;
		int sw = (mw+1)/2;
		
		int[] d= new int[w*h];
		
		for(int i=(mh-1)/2+1;i<h-(mh-1)/2;i++){
			for(int j=(mw-1)/2+1;j<w-(mw-1)/2;j++){
			   int s = 0;
			   
		       for(int m=0; m<mh ; m++){
		    	   for(int n=0;n<mw;n++){
		    		   if(mask[m]
*this.data[j+n-sw +(i+m-sh)*w] == 255)
		    			   s = 255;
		    	   }
		       }
		       
		       d[j + i * w] = s;   
			}
		}
		
		this.data = d;
	}

Unter diesen ist die Maske die Vorlage, und wir alle nehmen eine 3*3-All-One-Matrix. Beachten Sie, dass diese beiden Vorgänge für weißen Text auf schwarzem Hintergrund ausgeführt wurden.
public void Erosion(int[][] mask){
		
		IterBinary();//二值化
		int mh = mask.length;
		int mw = mask[1].length;
		int sh = (mh+1)/2;
		int sw = (mw+1)/2;
		
		int[] d= new int[w*h];
		
		for(int i=(mh-1)/2+1;i<h-(mh-1)/2;i++){
			for(int j=(mw-1)/2+1;j<w-(mw-1)/2;j++){
			   int s = 0;
			   
		       for(int m=0; m<mh ; m++){
		    	   for(int n=0;n<mw;n++){
		    		   if(mask[m]
*255 == this.data[j+n-sw +(i+m-sh)*w])
		    			   s++;
		    	   }
		       }
		       
		       d[j + i * w] = (s==mh*mw)?255:0;   
			}
		}
		
		this.data = d;
	}

Originalbild und das Ergebnis der Erweiterung des Originalbildes:

Korrosion und Erweiterung von Java-Bildern

Korrosion und Erweiterung von Java-Bildern Anschließend korrodieren sie aufgrund der Erweiterung ( Im Originalbild tritt keine Korrosion auf.):

Korrosion und Erweiterung von Java-BildernWenn der Text weiß und schwarz ist, ist das Ergebnis genau das Gegenteil, das Ergebnis ist wie folgt:

Korrosion und Erweiterung von Java-Bildern Das Obige ist der Inhalt der Korrosion und Erweiterung von Java-Bildern. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn)!


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn