[컴퓨터비전개론] Object Recognition - Template Matching, Fourier Descriptor

 

객체 인식: Template Matching과 Fourier Descriptor

지난번 베이즈 분류기와 최소 거리 분류기를 통해 패턴 인식의 기본기를 다졌다면, 오늘은 컴퓨터 비전 분야에서 객체 인식의 또 다른 핵심 축을 이루는 템플릿 매칭(Template Matching)푸리에 기술자(Fourier Descriptor, FD)에 대해 깊이 파고들어 보고자 한다. 이 두 기법은 객체를 바라보는 철학 자체가 다르기 때문에, 각각의 작동 원리와 장단점을 명확히 이해하는 것이 중요하다. 



1. 템플릿 매칭 (Template Matching): 공간 영역에서의 정직한 비교

High-Level 개념 및 아이디어:

템플릿 매칭은 이름 그대로, 우리가 찾고자 하는 객체의 견본, 즉 '템플릿(Template)' 또는 **'마스크(Mask)'**를 미리 가지고 있으면서, 이 템플릿을 입력 이미지 위에서 쭉 훑어보며 가장 닮은 부분을 찾아내는 방식이다. 마치 "월리를 찾아라"처럼, 월리 그림(템플릿)을 들고 전체 그림(입력 이미지)과 일일이 대조해보는 것과 유사하다.

Waldo & Friends


이 기법의 핵심은 별도의 복잡한 특징을 추출하지 않고, 이미지 픽셀 값 자체를 직접 비교한다는 점이다. 템플릿과 이미지의 특정 영역 간의 유사도를 계산하여, 이 유사도 값이 가장 높은 위치에
객체가 존재한다고 판단한다. 강의 자료에서는 허리케인 이미지를 예시로 들었는데, 특정 형태의 구름 패턴(템플릿)을 위성사진(입력 이미지)에서 찾아내는 응용을 생각해볼 수 있다.

hurricane

Low-Level 작동 원리:

템플릿 매칭의 내부 작동은 공간 필터링(Spatial Filtering), 특히 상관(Correlation) 연산과 거의 동일하다. w(x,y)라는 템플릿 마스크를 f(x,y)라는 이미지 위에서 이동시키면서 각 위치 (x,y)에서 템플릿과 그 아래 놓인 이미지 영역 간의 상관 값을 계산한다.

  • 유사도 측정 (Correlation):

    템플릿 w의 크기가 m×n이라고 할 때, 이미지 f의 특정 위치 (x,y)에서의 상관 값 c(x,y)는 다음과 같이 계산될 수 있다:

    correlation


    이 식은 템플릿과 이미지의 해당 영역 픽셀 값들을 요소별로 곱한 후 모두 더하는 것을 의미한다. 만약 템플릿과 이미지 영역이 완벽하게 일치하면 (같은 밝기 패턴을 가지면) 이 상관 값은 최대가 되고, 서로 매우 다르면 낮은 값을 갖게 된다. (만약 f와 w를 평균값을 뺀 버전으로 사용한다면, 이는 공분산과 유사해지고, 패턴의 유사성을 더 잘 반영할 수 있다.)

  • 정규화 (Normalization):

    문제는 이미지나 템플릿의 전체적인 밝기 변화에 상관 값이 민감하게 반응할 수 있다는 점이다. 예를 들어, 똑같은 모양이지만 전반적으로 더 밝은 영역에 객체가 있다면, 단순히 위 식을 사용했을 때 상관 값이 과도하게 커질 수 있다. 이를 방지하기 위해 정규화된 상관 계수(Normalized Cross-Correlation, NCC)를 사용한다. NCC는 템플릿과 이미지 영역을 각각 평균 0, 표준편차 1을 갖도록 정규화한 후 내적(dot product)하는 것과 유사하며, 값의 범위가 보통 -1에서 1 사이로 제한된다. 1에 가까울수록 완벽한 매칭을 의미한다.

    정규화된 상관 계수의 한 형태는 다음과 같다:

    Normalized Cross-Correlation


    여기서 \(\bar{f}(x+s,y+t)\)​는 \(f(x+s,y+t)\) 아래 템플릿과 겹치는 영역의 평균 밝기이고, \(\bar{w}\)는 템플릿 \(w\)의 평균 밝기이다.

  • 크기 및 회전 문제 (The Achilles' Heel):

    템플릿 매칭의 가장 큰 약점은 객체의 크기나 회전 변화에 매우 취약하다는 것이다. 템플릿은 고정된 크기와 방향을 가지고 있는데, 이미지 속의 객체가 이와 다르면 유사도가 급격히 떨어진다. 만약 객체의 정확한 크기와 회전 각도를 모른다면, 가능한 모든 크기와 회전에 대해 템플릿을 변형시켜가며 탐색해야 한다. 이는 엄청난 계산량을 요구하며, 현실적으로 매우 비효율적이다. 크기 변화에 대응하기 위해 이미지 피라미드(Image Pyramid)를 구성하여 여러 스케일에서 매칭을 시도하거나, 회전 변화에 대응하기 위해 미리 여러 각도로 회전된 템플릿들을 준비하는 방법도 있지만, 이는 근본적인 해결책이라기보다는 계산량을 늘리는 방식이다.




2. 푸리에 기술자 (Fourier Descriptor, FD): 주파수 영역에서의 형태 추출 🌀

High-Level 개념 및 아이디어:

푸리에 기술자(FD)는 템플릿 매칭과는 전혀 다른 접근 방식을 취한다. 이 기법은 객체의 경계선(Contour 또는 Boundary) 정보에 집중한다. 먼저, 객체의 외곽선을 따라가며 얻은 좌표 시퀀스를 만든다. 이 1차원 경계선 시퀀스를 마치 하나의 '신호(signal)'처럼 취급하여, 여기에 이산 푸리에 변환(Discrete Fourier Transform, DFT)을 적용한다. DFT를 통해 얻어지는 복소수 계수들이 바로 푸리에 기술자(Fourier Descriptors)이며, 이 값들이 객체 경계선의 주파수 성분을 나타내어 형태를 간결하게 기술하는 특징 벡터 역할을 한다.

FD의 가장 큰 매력은 객체의 이동, 크기 변화, 회전에 대해 상대적으로 쉽게 불변성(invariance)을 확보할 수 있다는 점이다. 즉, 객체가 이미지 내에서 다른 위치로 이동하거나, 확대/축소되거나, 빙글빙글 돌아가더라도, 적절한 정규화 과정을 거치면 거의 동일한 FD 값을 얻을 수 있어, 객체 인식의 강인함(robustness)을 크게 높일 수 있다.


Low-Level 작동 원리:

  1. 경계선 표현 (Boundary Representation):

    먼저 객체의 경계선을 찾아내고, 이를 순서대로 나열된 점들의 시퀀스로 표현해야 한다. 예를 들어, 경계선 위의 K개의 점들을 (x0​,y0​),(x1​,y1​),...,(xN−1​,yN−1​)와 같이 얻었다면, 각 점을 복소수 \(s(k)=x(k)+jy(k)\)​ (여기서 k=0,1,...,N−1)로 표현할 수 있다. 이렇게 하면 2차원 경계선 정보가 1차원 복소수 시퀀스 s(k)로 변환된다.

    Dots on the boundary

  2. 이산 푸리에 변환 (Discrete Fourier Transform, DFT):

    이 경계선 시퀀스 s(k)에 DFT를 적용하여 푸리에 계수 a(u)를 얻는다:

    Fourier Descriptor

    각 a(u)는 복소수이며, ∣a(u)∣는 진폭(magnitude), arg(a(u))는 위상(phase)을 나타낸다. 이 a(u)들이 바로 푸리에 기술자이다.

  3. 주파수와 형태 정보의 관계:

    • (DC 성분, ): 는 경계선 점들의 벡터 합으로, 이를 K로 나누면 경계선의 무게 중심(centroid 또는 center of gravity) 위치를 나타낸다. 모양 자체를 기술하는 데는 중요하지 않고, 객체의 이동에만 영향을 받는다.
    • 낮은 주파수 성분 (small ): a(1),a(2),...u 값이 작은 FD들은 경계선의 전반적이고 대략적인 형태(gross shape)를 기술한다. 예를 들어, a(1)은 타원 근사를, 그 다음 성분들은 좀 더 복잡한 윤곽을 만들어낸다.
    • 높은 주파수 성분 (large ): u 값이 큰 FD들은 경계선의 세부적인 굴곡이나 날카로운 모서리 등 미세한 정보(fine details)를 기술한다. 일반적으로 앞쪽 몇 개의 FD만 사용해도 객체의 전체적인 형태를 충분히 표현할 수 있으며, 이는 데이터 압축 효과도 가져온다.

  4. 불변성 확보 (Achieving Invariances):

    푸리에 기술자의 진정한 힘은 정규화를 통해 다양한 변환에 대한 불변성을 얻을 수 있다는 데 있다.

    • 이동 불변성 (Translation Invariance):

      객체가 이미지 내에서 이동하면 경계선 좌표 \((x_{k},y_{k})\)가 \((x_{k}+\Delta x,y_{k}+\Delta y)\)로 바뀐다. 이는 복소수 s(k)가 s(k)+(Δx+jΔy)로 바뀌는 것과 같다. DFT의 선형성에 의해 a(0)는 a(0)+K(Δx+jΔy)로 바뀌지만, u≠0인 다른 a(u)들은 변하지 않는다. (정확히는 a(u) for u≠0는 s(k)의 변화에 따라 \(s(k)e^{-j2\pi uk/K}\)의 합이므로, s(k)의 상수항 이동은 u≠0일 때 \(e^{-j2\pi uk/K}\)의 합이 0이 되는 성질 때문에 사라진다.) 따라서 a(0)를 무시하거나 0으로 설정하면 (예: 경계선을 원점으로 이동시킨 후 FD 계산), FD는 객체의 위치 이동에 불변하게 된다.

    • 크기 불변성 (Scale Invariance):

      객체의 크기가 c배 변하면, 각 경계점 좌표도 c⋅s(k)가 된다 (원점을 중심으로 스케일링한다고 가정). 그러면 모든 푸리에 계수 a(u)도 c⋅a(u)로 c배 스케일링된다. 따라서 모든 a(u)를 ∣a(1)∣ (또는 다른 특정 a(u0​)의 크기)로 나누면 크기 변화에 불변한 FD를 얻을 수 있다. (단, a(1)이 0이 아니어야 한다. a(1)은 보통 가장 큰 주파수 성분 중 하나로 기본 형태를 나타낸다.)

      정규화된 FD: a′(u)=a(u)/∣a(1)∣. 이렇게 하면 a′(1)의 크기는 1이 된다.

    • 회전 불변성 (Rotation Invariance):

      객체가 원점을 중심으로 ϕ만큼 회전하면, 각 경계점 \(s(k)\)는 \(s(k)e^{j\phi}\)로 변환된다. 그러면 각 푸리에 계수 \(s(k)\)도 \(a(u)e^{j\phi}\)로 변환된다. 즉, 모든 FD의 크기 ∣a(u)∣는 변하지 않고, 위상만 ϕ만큼 동일하게 변한다.

      회전 불변성을 얻는 방법은 여러 가지가 있다:

      1. FD의 크기만 사용: 가장 간단한 방법은 a(u)만을 특징으로 사용하는 것이다. 이러면 위상 정보가 사라지므로 회전에 불변하지만, 형태를 구분하는 정보의 일부 손실이 있을 수 있다.
      2. 위상 정규화: 예를 들어, a(1)의 위상을 \(\Theta _{1}\)​이라고 할 때, 모든 a(u)를 \(a(u)e^{-j\Theta _{1}}\)​로 변환한다. 이렇게 하면 a(1)의 위상은 0이 되고, 다른 FD들의 위상은 a(1)에 상대적인 위상이 된다. 이는 시작점 불변성(Starting point invariance)도 제공한다. (경계선 추적 시 시작점이 달라지면 FD의 위상이 변하는데, 이를 보정해준다.)
    • 종합 정규화:

      일반적으로 a(0)는 버리고, a(1)부터 a(M)까지 (M은 사용할 FD의 개수)의 FD들을 사용한다. 이들을 ∣a(1)∣로 나누어 크기 정규화를 하고, 위상 정보를 제거하거나 a(1)의 위상을 기준으로 정규화하여 회전 불변성까지 확보한다. 이렇게 정규화된 FD 집합 {∣a′(u)∣} 또는 {a′′(u)} (위상까지 정규화된)은 객체의 이동, 크기, 회전에 강인한 형태 기술자가 된다.



결론: 상황에 맞는 최적의 무기 선택 ⚔️

템플릿 매칭은 직관적이고, 템플릿과 정확히 일치하는 패턴을 찾는 데는 효과적일 수 있다. 하지만 픽셀 값에 직접 의존하기 때문에 조명 변화에 민감할 수 있고 (정규화로 어느 정도 완화 가능), 무엇보다 크기 및 회전 변화에 매우 취약하여 변형이 예상되는 객체 인식에는 한계가 명확하다.

반면 푸리에 기술자(FD)는 객체의 경계선 형태를 주파수 영역에서 분석하는 방식이다. 수학적 변환을 통해 이동, 크기, 회전에 대한 불변성을 쉽게 확보할 수 있다는 강력한 장점이 있다. 따라서 객체의 형태가 중요하고, 다양한 변형이 예상되는 상황에서 매우 유용하다. 하지만 경계선 추출이 선행되어야 하고, 경계선이 명확하지 않거나 내부 질감(texture) 정보가 중요한 경우에는 적합하지 않을 수 있다.

결국 어떤 패턴 인식 기법을 선택할지는 내가 풀고자 하는 문제의 성격, 인식 대상 객체의 특성, 예상되는 이미지 내 변화의 종류, 그리고 시스템에 요구되는 성능(정확도, 속도 등)을 종합적으로 고려하여 결정해야 한다. 컴퓨터 비전의 세계는 이처럼 다양한 도구들로 가득 차 있으며, 각 도구의 원리를 깊이 이해하고 적재적소에 활용하는 능력이 중요함을 다시 한번 느낀다.



추천글:

[컴퓨터비전개론] Object Recognition - Decision-theoretic methods, Minimum distance classifier

[컴퓨터비전개론] Object Recognition - Bayes' classifier

hyeon_B

안녕하세요! AI 기술을 이용해 더 나은 세상을 만들어 나가고 싶은 과기원생 Hyeon이라고 합니다. 저는 앞으로 인공지능 시대에는 지식을 '활용'하는 능력이 중요해질 것이라고 생각합니다. 대부분의 일들은 인공지능이 뛰어난 모습을 보이지만, 인공지능은 데이터로 부터 연관관계를 학습하기 때문에 지식들을 새로 통합해서 활용하는 능력이 부족합니다. 인공지능이 뉴턴 전에 만들어졌다면 사과가 떨어지는 이유에 대답하지 못했을 것이고, 아인슈타인 전에 만들어졌다면 중력이 어떻게 생기는지 설명하지 못했을 것입니다. 따라서 앞으로 우리는 '본질'을 탐구하고 그 본질로부터 다른 곳에 적용하며 인공지능을 현명하게 활용해야 할 것입니다. 함께 인공지능 시대를 준비합시다!

댓글 쓰기

다음 이전

POST ADS1

POST ADS 2