특징 추출
〈화상정보처리〉 수업 노트
화상 데이터를 신호로 바라보면, 픽셀 값은 공간 좌표에 따른 강도(휘도 또는 채널 값)로 해석할 수 있다. 푸리에 해석은 이 신호를 사인/코사인 성분의 합으로 분해해 “어떤 주파수(변화 속도·방향)의 패턴이 얼마나 들어 있는지”를 읽을 수 있다. 음성 데이터를 시간축으로 분해하는 것처럼 공간축 신호에 대해서도 해석할 수 있다.
Fourier 급수(주기 신호)
주기 $T$를 갖는 1차원 파형 $f(t)$에 대해 Fourier 급수는 다음과 같다.
\[f(t) = \frac{a_0}{2} + \sum_{n=1}^{\infty}\bigl(a_n\cos(n\omega t) + b_n\sin(n\omega t)\bigr)\\ \omega = \frac{2\pi}{T}\]계수는 직교성(한 주기 적분 시 상호 성분이 0이 되는 성질)을 이용해 구한다.
\[a_n = \frac{2}{T}\int_0^T f(t)\cos(n\omega t)\,dt\\ b_n = \frac{2}{T}\int_0^T f(t)\sin(n\omega t)\,dt\]복소수 표기
Euler 공식 $e^{\pm i n\omega t} = \cos(n\omega t) \pm i\sin(n\omega t)$를 쓰면, Fourier 급수는 복소 지수의 합으로도 쓸 수 있다. 이렇게 함으로서 계산이 간결해지고, 주파수 성분의 진폭과 위상을 하나의 복소수 계수 $C_n$로 표현할 수 있다.
\[f(t) = \sum_{n=-\infty}^{+\infty} C_n e^{i n\omega t}\\ C_n = \frac{1}{T}\int_0^T f(t)\,e^{-i n\omega t}\,dt\]Fourier 변환(비주기/무한 길이 신호)
주기 $T$에 대해서 $T\to\infty$로 확장하여 비주기 신호 $f(t)$에 대해 푸리에 변환을 수행할 수 있다.
\[F(f) = \int_{-\infty}^{+\infty} f(t)\,e^{-2\pi i f t}\,dt\\ f(t) = \int_{-\infty}^{+\infty} F(f)\,e^{2\pi i f t}\,df\]변환 결과인 $F(f)$는 일반적으로 복소수다. 실제로는 $F(f)$의 진폭과 위상을 각각 해석하거나, 진폭 스펙트럼, 파워 스펙트럼, 위상 스펙트럼 등으로 변환하여 해석한다.
진폭 스펙트럼 $ F(f) $ 파워 스펙트럼 $ F(f) ^2$ - 위상 스펙트럼 $\theta(f)=\mathrm{Arg}(F(f))$
디지털 데이터의 Fourier 변환: DFT와 FFT
디지털 신호는 유한한 길이의 이산 샘플이므로, 이산 푸리에 변환을 사용한다.
\[F(f) = \sum_{x=0}^{N-1} f(x)\,e^{-2\pi i\,fx/N}\\ f(x) = \frac{1}{N}\sum_{f=0}^{N-1} F(f)\,e^{2\pi i\,fx/N}\]DFT는 직접 계산하면 $O(N^2)$이지만, $N=2^n$ 꼴일 때 FFT(고속 푸리에 변환)로 $O(N\log_2 N)$까지 줄일 수 있다. 화상 처리에서는 처리할 화상의 크기를 2의 거듭제곱 크기로 설정하여 FFT를 처리하는 것이 유리하므로, 화상 데이터의 원본 크기가 2의 거듭제곱이 되도록 조정하거나, 크기를 조정하여 FFT를 적용한다.
화상 데이터에서는 공간 축을 따라 분석하므로, 주파수는 시간 주파수가 아니라 공간 주파수(spatial frequency)로 해석할 수 있다. 밝기 변화가 완만하면 저주파, 촘촘히 바뀌면 고주파로 해석한다. 또한 화상은 2차원이므로, 주파수도 $(u, v)$처럼 2차원 좌표로 다룬다.
\[F(u, v) = \sum_{x=0}^{N-1}\sum_{y=0}^{M-1} f(x, y)\,e^{-2\pi i\,(ux/N + vy/M)}\] \[f(x, y) = \frac{1}{MN}\sum_{u=0}^{N-1}\sum_{v=0}^{M-1} F(u, v)\,e^{2\pi i\,(ux/N + vy/M)}\]2차원 데이터에 대해 DFT를 수행하는 방법에 대해서, “행 방향 1D-DFT → 열 방향 1D-DFT”와 같이 1차원 변환을 두 축에 차례로 적용하는 방식으로 구현할 수 있다.
2D-DFT로 획득한 스펙트럼은 평균 밝기를 나타내는 DC 성분이 모서리에 위치한다. 스펙트럼을 시각화하는 경우, 일반적으로는 DC 성분을 중심으로 시프트하여 저주파가 중심에 오도록 한다.
- 원점(DC 성분): 화상 전체의 평균 밝기
- 원점으로부터 가까움: 저주파(완만한 명암 변화, 큰 구조)
- 원점으로부터 멀음: 고주파(세밀한 질감, 경계, 노이즈)
- 원점으로부터의 방향: 특정 방향으로 반복되는 패턴이 있다면, 그 방향과 직교하는 방향으로 주파수 성분이 나타난다. 따라서 원점에서의 방향은 반복 무늬의 방향과 직교 관계로 나타나는 경우가 많아, 방향성 있는 패턴을 읽을 수 있다.
필터링
화상에서 특정힌 패턴(특정 공간 주파수 성분)을 뽑아내거나 억제하기 위해 필터를 사용한다.
1) 공간 영역에서의 합성곱: 원 화상과 필터의 임펄스 응답(커널)을 직접 컨볼루션
\[(x*h)(n) = \sum_{m=0}^{N} x(m)\,h(n-m)\]2) 주파수 영역에서의 직접 필터링: DFT로 옮긴 뒤, 주파수 영역에서 곱하고 다시 역변환
\[Y(\omega) = X(\omega)\cdot H(\omega)\]필터를 적용한 결과는 원 화상에서 특정 주파수 성분이 강조되거나 억제된 화상으로 나타난다. 예를 들어, 저주파 통과 필터는 저주파 성분을 살리고 고주파 성분을 억제하는 반면, 고주파 통과 필터는 그 반대이다. 밴드 패스 필터는 특정 주파수 범위만 통과시키고 나머지는 억제한다.
필터는 공간 영역에서의 합성곱과 주파수 영역에서의 곱셈이 서로 대응하는 관계에 있기 때문에, 원하는 필터링 효과에 따라 적절한 방법을 선택하여 적용할 수 있다. 작은 커널을 사용하는 경우에는 공간 영역에서의 합성곱이 효율적일 수 있지만, 큰 커널이나 전체 화상에 대한 필터링이 필요한 경우에는 주파수 영역에서의 직접 필터링이 더 효율적일 수 있다.
윤곽선 추출
윤곽선 추출은, 인접 픽셀 사이의 밝기/색 변화가 큰 지점이 연속적으로 이어지는 부분을 찾는 것을 목표로 한다. 디지털 화상은 좌표가 이산적이므로 미분 대신 이웃 픽셀과의 차분으로 미분을 근사한다.
1차 미분 기반(gradient)
1차 미분을 사용해 윤곽선을 검출하는 방법은, 화상의 밝기 변화의 크기(그래디언트)를 추정하여, 그래디언트가 큰 곳을 에지로 간주하는 것이다. 대표적인 방법으로는 Prewitt 필터와 Sobel 필터가 있다. 이들은 모두 수평/수직 방향의 편미분 커널을 적용하여 그래디언트를 계산하고, 그 크기가 큰 곳을 에지로 본다. Sobel 필터는 Prewitt 필터에 비해 중앙 픽셀에 대한 가중이 더 크므로, 노이즈에 대한 안정성이 조금 더 높다.
- Prewitt 필터: 1차 미분 + 평활 효과 \(\begin{pmatrix} -1 & 0 & +1 \\ -1 & 0 & +1 \\ -1 & 0 & +1 \end{pmatrix},\qquad \begin{pmatrix} +1 & +1 & +1 \\ 0 & 0 & 0 \\ -1 & -1 & -1 \end{pmatrix}\)
- Sobel 필터: 1차 미분 + 평활 효과 + 중앙 픽셀 가중 \(\begin{pmatrix} -1 & 0 & +1 \\ -2 & 0 & +2 \\ -1 & 0 & +1 \end{pmatrix},\qquad \begin{pmatrix} +1 & +2 & +1 \\ 0 & 0 & 0 \\ -1 & -2 & -1 \end{pmatrix}\)
2차 미분 기반(Laplacian)
2차 미분을 사용해 윤곽선을 검출하는 방법은, 화상의 밝기 변화의 “곡률”을 추정하여, 곡률이 큰 곳을 에지로 간주하는 것이다. 대표적인 방법으로는 Laplacian 필터가 있다. Laplacian 필터는 중심 픽셀과 주변 픽셀 간의 밝기 차이가 클수록 강하게 반응한다. 4-이웃 Laplacian과 8-이웃 Laplacian처럼 커널 정의가 조금씩 다른데, 일반적으로 8-이웃이 더 많은 방향의 변화에 민감하다.
\[\begin{pmatrix} 0 & +1 & 0 \\ +1 & -4 & +1 \\ 0 & +1 & 0 \end{pmatrix},\qquad \begin{pmatrix} +1 & +1 & +1 \\ +1 & -8 & +1 \\ +1 & +1 & +1 \end{pmatrix}\]캐니 에지 검출기
캐니 에지 검출기는 노이즈에 강한 윤곽선을 검출하는 데 목적을 두었다.
1) 노이즈 저감: Gaussian 필터(예: $5\times 5$)로 평활화 2) 그래디언트 계산: Sobel 등으로 기울기 크기/방향 추정 3) 비극대 억제(Non-maximum suppression): 그래디언트 방향으로 국소 최대만 남겨 윤곽선을 정리 4) 히스테리시스 임계값 처리(Hysteresis thresholding): $T_{\min}$, $T_{\max}$ 두 임계값으로 강한 윤곽선/약한 윤곽선을 구분하고, 강한 윤곽선에 연결된 약한 윤곽선만 살린다
이 과정 덕분에 단순 임계값 윤곽선보다 잡음에 덜 흔들리고, 끊김이 덜한 윤곽선을 얻기 쉽다.
화상 간 연산: 변화를 강조하는 가장 직접적인 방법
카메라가 고정되어 있거나 미리 기하 보정으로 정렬한 여러 장의 화상이 있을 때, 동일 좌표의 픽셀끼리 연산하여 변화가 있는 부분을 강조할 수 있다. 예를 들어, 두 화상의 차분을 취하면, 변화가 없는 부분은 0에 가까운 값이 되고, 변화가 큰 부분은 큰 절대값이 된다. 이 방법은 움직이는 물체나 상태 변화 등을 감지하는 데 유용하다.
덧셈/평균
\[I_{\mathrm{ADD}}(x,y)=A(x,y)+B(x,y)\\ I_{\mathrm{AVE}}(x,y)=\frac{1}{2}\bigl(A(x,y)+B(x,y)\bigr)\]정지 배경을 강조하거나 노이즈를 줄이는 효과가 있지만, 비트 깊이 최대값을 넘지 않도록 클리핑 혹은 정규화하여야 한다.
뺄셈/절대값
\[I_{\mathrm{SUB}}(x,y)=A(x,y)-B(x,y)\]시간에 따라서 변화하는 부분이 양수 또는 음수로 나타난다. 변화가 없는 부분은 0에 가까운 값이 된다. 절대값을 취하여 변화의 크기만 획득할 수도 있다.
곱셈/혼합
\[I_{\mathrm{MUL}}(x,y)=A(x,y)\times B(x,y)\\ I_{\mathrm{MIX}}(x,y)=\alpha A(x,y)+\beta B(x,y)\]곱셈에서 $B$를 이진 마스크로 두면 마스킹에 바로 쓸 수 있다. 혼합은 두 화상의 합성이다.
나눗셈과 NDVI
화상 사이에 나눗셈을 적용하여 차이가 더 뚜렷해지기도 한다. 주의할 점으로, 0으로 나누기 할 수 없으므로, 분모가 0인 픽셀은 별도로 처리해야한다.
원격탐사에서 널리 쓰는 식생지수 NDVI는 다음과 같이 정의된다. 근적외(NIR) 채널이 없는 경우에는 가시광만으로 유사 지표를 만들기도 한다.
\[\mathrm{NDVI}=\frac{\mathrm{NIR}-R}{\mathrm{NIR}+R}\\ ext{(pseudo) NDVI}=\frac{G-R}{G+R}\]내적/상관과 템플릿 매칭
픽셀 벡터의 내적은 특정 위치의 유사도를 보는 데 쓸 수 있다. 컬러 영상에서는 Lab 같은 표색계로 변환 후 내적을 취해 색조 변화/유사도를 정량화하는 발상이 가능하다.
상관(correlation)은 패턴 매칭(템플릿 매칭)에 자주 쓰이는 방법이다. 템플릿과 화상의 일치 정도를 측정하기 위해 템플릿과 화상의 겹치는 부분의 픽셀 값의 곱을 합산하여 유사도를 계산한다. 템플릿이 화상에서 어디에 위치할 때 가장 유사한지를 찾는 데 사용된다.
Hough 변환: 직선(과 원 등)의 파라미터 공간에서 찾기
Hough 변환은 직선/원/타원처럼 유한 개 파라미터로 표현 가능한 도형을 영상에서 검출한다.
직선 위 점 $p=(x,y)$와, 원점에서 직선으로 내린 수선의 거리 $\rho$, 그 법선 방향 각 $\theta$를 쓰면 직선은 아래와 같이 정리할 수 있다.
\[x\cos\theta + y\sin\theta = \rho\]에지 픽셀들이 만들어내는 $(\rho,\theta)$ 투표를 누산기(accumulator)에 쌓고, 누적 값이 큰 지점을 찾아 직선을 복원한다. 영상 공간이 아니라 파라미터 공간($\theta$–$\rho$ 평면)에서 구조를 찾는다.