2012-03-21 6 views
9

3 차원에서 가우스 스무딩을 수행하려면 어떻게해야합니까?3D에서 가우시안 필터링하는 방법

나는이 탐지 피라미드를 가지고 있으며, 4 개의 저울에 누적 된 투표 수입니다. 각 피크에서 객체가 발견됩니다.

Detection Pyramid

은 이미 2D로 그들 각각을 부드럽게하고, 내가 전에 시도 havent 한 \ 시그마 = 1로 세 번째 차원을 필터링해야 내 신문 읽기, 내가조차 무엇을 확신 그 뜻은.

나는 Matlab에서이를 수행하는 방법을 알아 냈고 opencv/C++에서 simular를 필요로했다.

matlab에 원시 값 : M0 = smooth3와 Raw matlab에 매끄럽게 (M0 '정규'); : Smooth

+0

추가 스무딩의 목적은 무엇입니까? 각 피라미드 레벨에 몇 가지 다른 정보가 있습니까? –

+0

이미지를 보면 4 개의 눈금 중 하나에서 피크가 발견되므로 모든 눈금에서 전역 피크를 찾는 것이 평활화라고 가정합니다. 필자는 탐지를 위해 필자의 논문에서 썼다. 나는 모든 스케일에서 최고점을 찾아서 가장 좋은 후보 인 것을 검증하고 제안 된 방법과 비교하고 싶다. –

+0

3D에서의 Gaussian Smoothing은 2D에서의 Gaussian Smoothing과 같은 것입니다. 당신은 G (x, y, z) = Q – Adam

답변

2

오래 전 (2008-2009) 나는 간단한 C++ 템플릿 라이브러리를 개발하여 간단한 변형과 ​​회선 필터를 적용했습니다. 라이브러리의 소스는 Linderdaum 엔진에서 찾을 수 있습니다. 엔진의 나머지 부분과는 아무런 관련이 없으며 엔진의 기능을 사용하지 않습니다. 라이센스는 MIT이므로 원하는대로하십시오.

가의 Src/Linderdaum/이미지에서 Linderdaum의 소스 코드 ( http://www.linderdaum.com)에 봐/VolumeLib. *

커널을 준비하는 기능은 필터를 적용 PrepareGaussianFilter()와 MakeScalarVolumeConvolution()입니다. I/O는 콜백 함수를 사용하여 구현되기 때문에 여러 데이터 소스에 대해 라이브러리를 쉽게 적용 할 수 있습니다.

2

가우시안 필터는 분리 가능합니다. 나는 C에서 가우시안 필터 (그리고 일반적으로 이미지 처리) ++의 구현을 OpenCV를 추천 할 것입니다

for (dim = 0; dim < D; dim++) 
    tensor = gaussian_filter(tensor, dim); 

: 다음과 같이 각 차원에서 1 차원 필터를 적용합니다.

피라미드 레벨이 모두 동일한 크기라고 가정합니다. 3 차원을 컨볼 루션하면서 크기 공간 피라미드를 즉석에서 샘플링하는 고유 한 기능을 가질 수는 있지만 충분한 메모리가있는 경우 가장 거친 레벨을 갖기 위해 거친 레벨을 확장하는 것이 더 빠를 것이라고 생각합니다 수평.