2013-02-16 2 views
1

그들은 파이썬에서 분리 가능한 필터를 사용하여 2D 가우스 평활화를 구현하도록 요청했습니다. 어떻게 해야할지 모르겠다. 사실 1D와 2D 가우시안 스무딩과의 차이점을 알지 못한다. 어디에서 더 많은 정보를 얻을 수 있습니까?가우시안 평활화 필터

덕분에 당신은 Python Imaging Library 볼 수 있습니다 많은

+1

귀하의 기본 정의가 무엇인지 모르겠지만 기본적으로는 그 것입니다. [Smoothing 소개] (http://imaging.mrc-cbu.cam.ac.uk/imaging/PrinciplesSmoothing) – Thomas

답변

1

.

기본 아이디어는 다음과 같습니다. 이미지가 있고 커널이라고하는 것이 있습니다. 그런 다음 커널/필터로 이미지를 처리합니다. 이렇게하면 원본 이미지의 각 픽셀에 커널을 적용하고 결과를 대상 이미지에 추가하여 만든 새 이미지가 만들어집니다.

Image Filter에서 몇 가지 변경 사항을 통해 사용자 정의 커널을 만드는 방법을 명확하게하고 이미지를 처리하십시오. 나는이 시도하지 않은, 그래서는 의사로 간주해야합니다 귀하의 경우

import ImageFilter 

customKernelData = (0.0, 0.0, 0.0, 
        0.0, 1.0, 0.0, 
        0.0, 0.0, 0.0)  

customKernel = ImageFilter.Kernel((3,3), customKernelData) 
im = im.filter(customKernel) 

하면 데이터가 정말 2D 가우스 데이터 인 커널을 사용하는 것이다.

가우시안 평활화 연산자 '흐림의 이미지를 사용하고 디테일 및 노이즈를 제거하는 2 차원 컨볼 루션 연산자 : 2D 필터링에 대한

+1

토마스, 당신은 가우스 2D 커널의 분리에 대한 질문에 대답하지 않습니다. 여기에서 분리 가능하다는 것은 컨볼 루션 (convolution)을 통해 2D 커널을 적용하는 대신 벡터를 가로 방향으로 그리고 수직 방향으로 독립적으로 적용 할 수 있다는 것을 의미합니다. 따라서 이미지에 똑같은 효과가 나타납니다. – CTZStef

+1

나는 그것에 대해 잊어 버렸다. 그런 다음 [가장 빠른 2D 컨볼 루션 또는 Python의 이미지 필터] (http://stackoverflow.com/questions/5710842/fastest-2d-convolution-or-image-filter-in-python)에 대한 답변이 더 좋습니다. – Thomas

3

.

이미지 작업시 - 주변 픽셀의 값을 고려한 주어진 픽셀의 새 값을 계산하는 연산입니다. 주요 요소는 회선 커널입니다.

Сonvolution 커널 - 매트릭스 (임의 크기가 가장 자주 디폴트 (정방 행렬을 사용하는, 3 × 3)

[] [] []
[] [K] []
[] []

회선은 매우 간단하게 작동 : 선택된 화소의 새로운 값을 계산할 때 는 컨벌루션 커널의 중심 화소하여인가되는 이웃 화소가 동일한 커널로 덮여 다음 합을 계산한다.. 이미지 내의 픽셀의 곱을 컨볼 루션 커널의 값과 비교한다. 지정된 픽셀을 덮습니다. 결과 합계는 선택한 픽셀의 새 값입니다. 이제 이미지의 각 픽셀에 컨볼 루션을 적용하면 선택한 컨볼 루션 커널에 따라 특정 효과가 발생합니다.

우리는 다음 이미지 가지고

[47] [48] [49] [] [] [] [] [] [] [] [] []
[47] [50 ] [] [] [] [] [] [] [] [] [] [] [] 42 [] [] [] [] [] [] [] [] [] [] [] [ ]
[] [] [] [] [] [] [] [] [] [] [] []

그리고 당신은 컨볼 루션 커널이 있습니다

[0] [1] [0]
[0] [0] [0],960,453,210 [0] [0] [0]

결과가 followinf 방식으로 계산된다 :

결과 = 47 * 0 + 48 * 1 + 49 * 0 + 47 * 0 + 50 * 0 + 42 * 0 + 47 * 0 + 48 * 0 + 42 * 0 = 48

(50)의 값을 화소에 우리의 커널을 적용한 결과 :

[] [] [] [] [] []
[] [] [] [] [] [] [] [] [] []
[] [] [] [] [] [] [] [] [] [] [ ] [] [] [] [] [] [] []
[] [] [] [] [] [] [] [] [] [] [] []

Here은 Gaussian Smoothing에 대한 좋은 설명입니다. 1D 및 2D 가우시안 평활화에 관하여 :

"위의 2 차원 등방성 가우시안에 대한 방정식이 x 및 y 성분으로 분리 가능하기 때문에 사실상 컨볼 루션은 상당히 신속하게 수행 될 수 있습니다. 따라서 2 차원 컨볼 루션을 수행 할 수 있습니다 먼저 x 방향으로 1 차원 가우스를 컨볼 루션 한 다음 y 방향으로 다른 1 차원 가우스를 컨볼 루션합니다. "

appling convolution filter는 site에서 시도 할 수 있습니다.

희망이 도움이 될 것입니다.

관련 문제