Harmonic Mean Filter

1 개요

Harmonic Mean Filter 알고리즘은 조화 평균을 사용하여 Smoothing과 Noise 감소를 수행하는 알고리즘입니다.

2 알고리즘 상세 설명

H(x,y)=Sxyi,jSxy1S(i,j)\large H(x,y) = \frac{|S_{xy}|}{\sum_{i, j \in S_{xy}} \frac{1}{S(i, j)}}

원본 픽셀을 중심으로 사용자가 설정한 필터 영역의 조화 평균을 계산하여 결과 픽셀 값으로 출력합니다. Harmonic Mean Filter는 낮은 값에 더 가중치를 두므로 Salt & Pepper Noise에서 Salt Noise를 제거하는데 유리합니다.
일반적으로 Arithmetic Mean Filter보다 이미지의 Edge를 보존하며 Smoothing 하는 효과가 있습니다. 필터 크기를 키움에 따라 더 강한 필터 효과를 얻을 수 있지만, Blur 현상이 발생할 수 있습니다. 또한, 양수가 아닌 이상치에 취약합니다.

원본 이미지 노이즈 이미지 결과 이미지
Harmonic Mean Filter Source Harmonic Mean Filter Noise Harmonic Mean Filter Result
Fig. Harmonic Mean Filter 동작 예시

위의 예시는 원본 이미지에 노이즈를 발생시킨 후, 필터 크기를 7x7으로 적용한 예시입니다.

CFLImage fliSourceImage;
CFLImage fliDestinationImage;

CHarmonicMeanFilter harmonicMeanFilter;

harmonicMeanFilter.SetSourceImage(fliSourceImage);
harmonicMeanFilter.SetDestinationImage(fliDestinationImage);

harmonicMeanFilter.SetKernel(7);
harmonicMeanFilter.SetPaddingMethod(EPaddingMethod_DecreasingKernel);

harmonicMeanFilter.Execute();
CFLImage fliSourceImage = new CFLImage();
CFLImage fliDestinationImage = new CFLImage();

CHarmonicMeanFilter harmonicMeanFilter = new CHarmonicMeanFilter();

harmonicMeanFilter.SetSourceImage(ref fliSourceImage);
harmonicMeanFilter.SetDestinationImage(ref fliDestinationImage);

harmonicMeanFilter.SetKernel(7);
harmonicMeanFilter.SetPaddingMethod(EPaddingMethod.DecreasingKernel);
harmonicMeanFilter.Execute();
fliSourceImage = CFLImage()
fliDestinationImage = CFLImage()

harmonicMeanFilter = CHarmonicMeanFilter()

harmonicMeanFilter.SetSourceImage(fliSourceImage)
harmonicMeanFilter.SetDestinationImage(fliDestinationImage)

harmonicMeanFilter.SetKernel(7)
harmonicMeanFilter.SetPaddingMethod(EPaddingMethod.DecreasingKernel)
harmonicMeanFilter.Execute()

3 파라미터 설정 및 사용 방법

멤버함수 파라미터 설 명
SetKernel int64_t i64KernelSize IN 커널 크기

i64KernelSize - Default Value : 3, Recommended Value : 3~11

멤버함수 파라미터 설 명
SetPaddingMethod ImageProcessing::EPaddingMethod ePaddingMethod IN 가장자리 패딩 방식

Decreasing Kernel 설정 시, 커널 영역이 이미지의 범위를 벗어나는 경우 이미지에 포함되는 커널 영역만을 계산합니다. Interpolation 설정 시, 유효 범위 가장자리 부분의 값을 복사합니다. Constant 설정 시, 스칼라 값을 사용자로부터 입력받아 범위를 벗어나는 영역을 해당 스칼라 값으로 출력합니다.
ePaddingMethod - Default Value : EPaddingMethod_DecreasingKernel, Recommended Value : EPaddingMethod_DecreasingKernel

멤버함수 파라미터 설 명
SetPaddingValue CMultiVar<double> mvPaddingValue IN Padding Method가 Constant인 경우, 패딩 값

Padding Method를 Constant로 설정한 경우, 범위를 벗어나는 영역의 값을 사용자가 설정한 스칼라 값으로 출력합니다.