비등방성 확산 필터의 잡음 제거 효과를 알아보기 위하여 일반 영상에 가우시안 필터와 비등방성 확산 필터를 수행한 결과를 비교해보자. 그림 8-32는 camera.bmp 영상과 이 영상의 특정 y좌표에서의 그레이스케일 값을 1차원 함수 형태로 보여준다. 이러한 그래프를 프로파일profile이라고 부르며, 이 그림에서 y 값은 45를 사용하였다. 그림 8-32(a)의 원본 영상의 경우, 카메라맨의 머리를 지나가는 부분에서 그레이스케일 값이 급격하게 감소한 것을 볼 수 있다. 또한, 원본 영상에서 하늘 영역이 눈으로 보기에는 평탄한 느낌을 주지만, 실제 프로파일에서는 그레이스케일 값이 지글지글하게 나타나는 것을 볼 수 있다. 이 입력 영상에 대해 가우시안 필터링을 수행한 결과 영상과 프로파일 그래프를 그림 8-32(b)에 나타내었다. 그림 8-32(b)의 프로파일을 보면 하늘 영역의 날카로운 톱니 같은 프로파일이 상당히 평탄하게 펴진 것을 확인할 수 있다. 그러나 가우시안 필터는 카메라맨의 머리카락으로 인한 큰 엣지 정보도 무뎌지게 만드는 단점이 있다. 그림 8-32(C)는 비등방성 확산 필터를 수행한 결과 영상과 그 프로파일을 보여준다. 하늘 영역의 잡음은 깨끗하게 제거하고, 머리카락으로 인한 큰 그레이스케일 값의 변화는 그대로 유지해주는 결과를 보여준다. 즉, 비등방성 확산 필터는 경계선 정보는 유지하면서 영상의 잡음을 효과적으로 제거하는 능력이 있음을 확인할 수 있다.
그러면 실제 비등방성 확산 필터링을 수행하는 함수를 작성해보자. 함수의 이름은 IppFilter Diffusion을 사용하기로 하고, IppFiilter.h 파일에 아래와 같이 함수 선언을 추가하자.
void IppFilterDiffusion(IppByteImage& imgSrc, IppFloatImage& imgDst, float lambda, float k, int iter);