더북(TheBook)

IppFilterGaussian 함수의 구성은 크게 1차원 가우시안 마스크 생성, 세로 방향 마스크 연산, 가로 방향 마스크 연산으로 나눌 수 있다. 1차원 가우시안 마스크 생성 부분에서는 가장 먼저 마스크 크기(dim)를 결정한다. 마스크 크기는 기본적으로 (2*4*sigma + 1) 형태로 계산되지만, 만약 이 값이 짝수이면 홀수로 만들기 위하여 1을 더해주었다. sigma 값이 너무 작을 경우 최소 마스크 크기를 3으로 설정하였다. 1차원 가우시안 마스크는 그 크기가 프로그램 동작 시 결정되므로 일반 배열을 사용하지 않고 동적으로 메모리를 할당하여 배열을 생성해야 한다. 여기서는 dim×1 크기의 IppFloatImage 타입의 객체 imgMask를 만들고, 이 실수형 영상을 가우시안 마스크로써 사용하였다.

세로 방향 마스크 연산 부분에서는 1차원 가우시안 필터링 결과를 임시 영상인 imgBuf에 저장하였다. 그리고 가로 방향 마스크 연산에서는 다시 imgBuf 영상에 1차원 가우시안 마스크 연산을 수행한 후, 그 결과를 출력 영상인 imgDst에 저장하였다.

IppFilterGaussian 함수에서는 영상의 최외곽 픽셀에 대해서도 모든 마스크 연산을 수행해주었다. 가우시안 필터는 마스크 크기가 대체적으로 크기 때문에 영상의 최외곽 픽셀을 마스크 연산에서 제외할 경우 결과 영상이 눈에 띄게 어색하게 생성되기 때문이다.

그림 8-13은 다양한 표준 편차 값에 의한 영상의 가우시안 필터링 결과를 보여준다. 그림 8-13(a)는 입력 영상인 camera.bmp 파일이다. 그림 8-13(b)부터 그림 8-13(f)까지는 표준 편차 값이 각각 1.0, 2.0, 3.0, 4.0, 5.0인 가우시안 필터를 수행한 결과 영상이다. 표준 편차의 값이 커질수록 결과 영상이 더욱 많이 부드러워지는 것을 볼 수 있다. 그러나 표준 편차의 값이 커지면 영상의 엣지 정보 또한 많이 뭉개지기 때문에 적절한 표준 편차의 값을 선택하여 사용하는 것이 좋다.

그림 8-13 다양한 표준 편차에 대한 가우시안 필터 적용 결과
(a) 입력 영상
(b) σ = 1.0
(c) σ = 2.0
(d) σ = 3.0
(e) σ = 4.0
(f) σ = 5.0
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.