>  기사  >  Java  >  Java 이미지 컨볼루션 연산, 가우시안 블러 및 라플라시안 연산자

Java 이미지 컨볼루션 연산, 가우시안 블러 및 라플라시안 연산자

黄舟
黄舟원래의
2016-12-30 11:36:223324검색

읽기 전에 을 꼭 읽어주세요. 감사합니다!

컨볼루션에 관해서는 이전 글에서 이미 언급한 바 있습니다. 이해가 안 되시면 이전 글을 읽어보시면 됩니다.

제목을 보고 똑똑한 아이들은 그들의 직접적인 관계를 이해해야 합니다. Convolution 연산은 서로 다른 템플릿(Mask)을 사용하여 서로 다른 결과를 얻을 수 있습니다. Convolution 연산이 먼저 구현됩니다.

코드는 다음과 같습니다.

public void filter(double[][] mask) {
		toGray();//灰度化
		int mh = mask.length;
		int mw = mask[1].length;
		int sh = (mh+1)/2;
		int sw = (mw+1)/2;
		double maskSum = math.sum(mask);
		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++){
		    		   s = s + (int)(mask[m]
*this.data[j+n-sw +(i+m-sh)*w]);
		    	   }
		       }
		       
		       if(maskSum != 0)
		    	   s /= maskSum;
		       
		       if(s < 0)
		    	   s =0;
		       if(s > 255)
		    	   s = 255;
		       d[j + i * w] = s;   
			}
		}
		
		this.data = d;
	}

가우스 커널에 의해 생성된 가우스 템플릿의 경우 다음과 같습니다.

Java 이미지 컨볼루션 연산, 가우시안 블러 및 라플라시안 연산자

Java 이미지 컨볼루션 연산, 가우시안 블러 및 라플라시안 연산자


실행 결과는 각각, 오른쪽은 Gaussian 7*7 템플릿에서 생성된 결과입니다.

Java 이미지 컨볼루션 연산, 가우시안 블러 및 라플라시안 연산자

샤프닝 템플릿:

Java 이미지 컨볼루션 연산, 가우시안 블러 및 라플라시안 연산자

실행 결과:

Java 이미지 컨볼루션 연산, 가우시안 블러 및 라플라시안 연산자

라플라시안 연산자:

Java 이미지 컨볼루션 연산, 가우시안 블러 및 라플라시안 연산자

실행 결과:

Java 이미지 컨볼루션 연산, 가우시안 블러 및 라플라시안 연산자

위 내용은 Java 이미지 컨볼루션 연산, 가우시안 블러, 라플라시안 연산자에 대한 내용입니다. PHP 중국어 웹사이트(www.php.cn)!


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.