더북(TheBook)

LowPassIdeal 함수는 이상적 저역 통과 필터를 구현한 함수이고, HighPassIdeal 함수는 이상적 고역 통과 필터를 구현한 함수이다. 각각의 함수는 정수형의 인자 cutoff를 받으며, 이는 차단 주파수의 크기를 나타낸다. LowPassIdeal 함수와 HighPassIdeal 함수의 전체 내용은 소스 10-11에 나타내었다. 함수 내부에서 사용되는 변수 x, y는 시프트 연산에 의해 결정되는 좌푯값을 저장하기 위한 변수이다. 그러므로 영상의 중심 좌표인 (w2, h2)와 (x, y) 좌표 사이의 거리를 계산하고, 그 거리를 차단 주파수와 비교하여 필터링을 수행한다.

소스 10-11 주파수 공간에서의 이상적 저역 및 고역 통과 필터 구현 함수(IppFourier.cpp)
void IppFourier::LowPassIdeal(int cutoff)
{
    register int i, j, x, y;

    int cx = width / 2;
    int cy = height / 2;

    double** pRe = real.GetPixels2D();
    double** pIm = imag.GetPixels2D();

    for (j = 0; j < height; j++)
    for (i = 0; i < width; i++)
    {
        x = i + cx;
        y = j + cy;

        if (x >= width) x -= width;
        if (y >= height) y -= height;

        if ((x - cx)*(x - cx) + (y - cy)*(y - cy) >(cutoff * cutoff))
            pRe[j][i] = pIm[j][i] = 0.;
    }
}
  
void IppFourier::HighPassIdeal(int cutoff)
{
    register int i, j, x, y;

    int cx = width / 2;
    int cy = height / 2;

    double** pRe = real.GetPixels2D();
    double** pIm = imag.GetPixels2D();

    for (j = 0; j < height; j++)
    for (i = 0; i < width; i++)
    {
        x = i + cx;
        y = j + cy;

        if (x >= width) x -= width;
        if (y >= height) y -= height;

        if ((x - cx)*(x - cx) + (y - cy)*(y - cy) < (cutoff * cutoff))
            pRe[j][i] = pIm[j][i] = 0;
    }
}
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.