Maison  >  Article  >  Java  >  Corrosion et expansion des images Java

Corrosion et expansion des images Java

黄舟
黄舟original
2016-12-30 11:42:151504parcourir

Corrosion : Après avoir traduit l'élément structurel B par a, Ba est obtenu. Si Ba est inclus dans X, on enregistre ce point a L'ensemble de tous les points a qui remplissent les conditions ci-dessus est appelé le résultat de l'érosion de X par. B. Exprimé sous la forme : E(X)={a|
Ba

X}=X

B, comme le montre la figure

Corrosion et expansion des images Java

Expansion : Elle peut être vue comme la double opération de corrosion. Sa définition est : après avoir traduit l'élément structurel B par a, Ba est obtenu Si Ba heurte X, on enregistre ce point a. L’ensemble de tous les points a qui satisfont aux conditions ci-dessus est appelé le résultat du développement de X par B. La formule est exprimée comme suit : D(X)={a
| Ba↑X}=X

B, comme indiqué sur la figure.

Corrosion et expansion des images Java

Pour plus de détails, veuillez consulter Expansion, érosion et raffinement de l'image
Maintenant que nous comprenons le principe, voici le code pour l'implémenter :
Expansion :

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;
	}

Corrosion :

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;
	}

Parmi eux, le masque est le modèle, et nous prenons tous une matrice tout-en-un 3*3. A noter que ces deux opérations ont été effectuées sur du texte blanc sur fond noir.

Image originale et résultat de l'expansion sur l'image originale :

Corrosion et expansion des images Java

Corrosion et expansion des images Java

Puis se corroder sur la base de l'expansion ( dans l'image originale Il n'y aura pas de corrosion. .):

Corrosion et expansion des images Java

Si le texte est noir sur fond blanc, les résultats sont tout le contraire, et le résultat est le même. suit :

Corrosion et expansion des images Java

Ce qui précède est le contenu de la corrosion et de l'expansion des images Java. Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois (www.php.cn). !


Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn