더북(TheBook)

LowPassIdeal 함수에서 실제 필터링을 수행하는 부분의 코드에 대해 잠깐 살펴보자.

if ((x - cx)*(x - cx) + (y - cy)*(y - cy) > (cutoff * cutoff))
    pRe[j][i] = pIm[j][i] = 0.;

사실 C/C++ 코드를 이용하여 (x, y) 좌표에서 영상 중심 좌표 (cx, cy)까지의 거리를 구하고, 이를 차단주파수와 비교하려면 다음과 같이 코드를 작성해야 한다.

if (sqrt(x - cy, y - cy) > cutoff)
    pRe[j][i] = pIm[j][i] = 0.;

그러나 sqrt 연산은 실수 연산을 사용하며 시간이 오래 걸리는 연산이기 때문에 가급적이면 사용하지 않는 것이 좋다. 그러므로 LowPassIdeal 함수 구현 시에는 sqrt 함수를 사용하지 않고, 대신 유클리디안 거리의 제곱과 차단주파수의 제곱값을 비교하는 방식으로 코드를 구현하였다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.