Haar 웨이블릿
Haar 웨이블릿의 기초
Haar 웨이블릿은 가장 단순하면서도 직관적인 형태의 웨이블릿으로서, 시간영역과 주파수영역을 동시에 다룰 수 있는 변환을 이해하는 데 좋은 출발점이 된다. 가장 큰 특징은 신호를 구간별로 상수 형태로 나누어 표현한다는 점이며, 이 과정을 통해 국소 구간에서의 급격한 변화나 불연속점을 쉽게 포착할 수 있게 된다. 이 웨이블릿은 짧은 길이의 모함수(Mother Wavelet)를 가지고 있으며, 단순히 구간별로 1과 -1을 갖는 형태로 정의된다. 이러한 단순성이 직교성, 시간-주파수 국소화와 같은 웨이블릿의 핵심적인 성질을 직접 살펴보는 데 큰 도움을 준다.
Haar 모함수의 정의
시간축에서 정의되는 Haar 웨이블릿의 모함수는 구간 $[0,1]$에서 0.5를 경계로 1과 -1의 값을 취하고, 그 외 구간에서는 0이 된다. 이를 수식으로 표현하면 다음과 같다.
이와 같은 모함수를 스케일링(scaling)하고 시프팅(translation)하여 다양한 시간 구간과 주파수 대역을 분석할 수 있다. Haar 웨이블릿은 파형이 단순하면서도 이산적인 형태를 가지므로, 신호를 조각조각 분석하는 데 직관적인 해석을 제공한다.
Haar 스케일링 함수
Haar 웨이블릿을 활용하려면 모함수 $\psi(t)$만 필요한 것이 아니라, 이를 보조하는 스케일링 함수(scaling function)도 필수적이다. 보통 스케일링 함수는 $\phi(t)$로 표기하며, Haar의 경우 구간 $[0,1]$에서 1을 가지는 단위 사각 함수로 정의한다.
스케일링 함수는 대역분할 과정에서 저주파(혹은 스케일이 큰) 성분을 포착하는 역할을 하고, 모함수는 고주파(혹은 스케일이 작은) 성분을 포착한다. 결국 스케일링 함수와 웨이블릿 함수를 각각 적절히 스케일링하고 시프팅하면, 원신호를 다단계 계층구조로 쪼개어 볼 수 있게 된다.
Haar 웨이블릿과 직교성
모함수와 스케일링 함수가 갖추어야 할 중요한 성질 중 하나는 직교성이다. Haar 웨이블릿은 모함수와 스케일링 함수, 그리고 서로 다른 시프트 간에 직교성을 만족하도록 구성된다. 예를 들어 구간 $[0,1]$ 위에서 정의되는 $\psi(t)$와 $\phi(t)$ 사이의 내적이 0임을 확인할 수 있다. 또한 시간축 상에서 서로 겹치지 않는 시프트 상태의 함수들끼리는 역시 내적이 0이 된다. 이런 직교성은 불필요한 중복(레드던던시)을 없애고, 복원 과정에서 잡음이나 왜곡을 줄이는 데 기여한다.
Haar 웨이블릿 변환의 간단한 예
이산 Haar 웨이블릿 변환에서는 신호를 2개 단위로 묶어 평균과 차를 구분한다. 길이가 2인 구간 $[x_1, x_2]$에 대해서 평균은 $(x_1 + x_2)/2$, 차는 $(x_1 - x_2)/2$의 형태로 구해진다. 이렇게 구한 평균은 더 낮은 스케일(주파수 대역)을 나타내며, 차는 더 높은 스케일을 나타낸다. 이 방식은 신호의 길이가 2의 거듭제곱이라고 가정했을 때 매우 단순하고 효율적으로 구현할 수 있다.
이산 Haar 변환의 행렬 표현
이산 Haar 변환을 행렬로도 나타낼 수 있다. 예를 들어 길이가 4인 신호 $\mathbf{x} = (x_1, x_2, x_3, x_4)$에 대해, 변환 결과를 $\mathbf{y} = (y_1, y_2, y_3, y_4)$라 할 때 변환을 수행하는 $4 \times 4$ 행렬 $\mathbf{H}$를 정의할 수 있다. 변환 과정에서 평균과 차를 각각 취하는 과정을 행렬 연산으로 나타내면 다음과 같이 구성할 수 있다.
계속된 행렬 요소의 정의를 통해, 이산적인 스케일과 시프트 단계를 명확하게 표현할 수 있다. 길이가 더 긴 신호에 대해서도 2의 거듭제곱 형태라면 같은 원리를 계층적으로 확장하여 웨이블릿 분해를 반복하게 된다.
Haar 필터뱅크 구조
Haar 웨이블릿 변환은 필터뱅크 관점에서 해석이 가능하다. 신호를 한 단계 분해할 때, 저주파 통과 필터(low-pass filter)와 고주파 통과 필터(high-pass filter)를 각각 적용하여 얻은 결과가 스케일링 성분과 웨이블릿 성분에 해당한다. Haar 필터뱅크에서 저주파 통과 필터는 구간 내의 단순 합(혹은 평균)에 해당하며, 고주파 통과 필터는 구간 내의 단순 차에 해당한다. 이산적인 연산으로 볼 때 길이가 2인 구간에 대해 다음과 같은 필터를 적용하여 결과를 산출한다.
이때 $\mathbf{h}$는 저주파 필터 계수, $\mathbf{g}$는 고주파 필터 계수를 나타낸다. 임의의 신호 구간 $\bigl(x_1, x_2\bigr)$에 대하여 저주파 부분은
고주파 부분은
로 정의된다. 신호 전체에 대해서는 구간을 이동시키며 해당 연산을 반복하여 다단계 분해가 가능해진다.
다단계 분해와 구조적 이해
한 번 필터뱅크를 거쳐서 나온 저주파 성분(스케일링 성분)에 다시 똑같은 필터뱅크 구조를 적용하면 더 저주파대역(더 큰 스케일)을 얻을 수 있다. 예를 들어 길이가 8인 신호에 대해 1단계 변환으로 길이가 4인 저주파 성분과 길이가 4인 고주파 성분을 얻고, 이 4길이 저주파 성분을 다시 분해하면 길이가 2인 저주파와 길이가 2인 고주파를 얻게 된다. 이런 식으로 신호 길이가 1이 될 때까지 계속 분해하는 과정을 다단계(multi-level) 혹은 다해상도(multi-resolution) 분석이라 부른다. 다단계 구조는 트리 형태로 시각화할 수 있으며, 신호가 어떻게 저주파와 고주파 대역으로 세분화되는지 한눈에 파악할 수 있게 한다.
위 그림에서 Level 1 변환으로 저주파(Approximation)와 고주파(Detail)가 분리된다. 이후 Low-pass로 얻은 신호(더 긴 구간 특성을 가지는 성분)를 다시 한 번 변환하여 Level 2 Approximation과 Detail 성분을 얻는 식이다. 이런 구조를 통해 특정 대역(스케일)에 존재하는 특이점이나 패턴을 확인하기가 용이해진다.
역변환(Inverse Transform)
Haar 웨이블릿 변환을 통해 얻어진 저주파 성분과 고주파 성분에서 원신호를 복원하기 위해서는 역변환 과정이 필요하다. 길이가 2인 구간에 대해 $a$와 $d$가 주어졌다면, 원래 두 샘플 $x_1$과 $x_2$는 다음과 같이 재구성된다.
필터뱅크 관점에서는 저주파 성분에 역필터(합 연산), 고주파 성분에 역필터(차 연산)를 적용한 뒤 신호를 합쳐서 복원한다. 다단계로 확장한 경우에는 각 단계마다 저주파 성분과 고주파 성분을 역변환한 다음, 상위 단계(더 큰 스케일)의 저주파 성분과 결합하여 최종적으로 전체 신호를 재현한다.
Haar 웨이블릿의 장점과 한계
Haar 웨이블릿은 단순성과 직교성, 그리고 빠른 계산 속도를 제공한다는 점에서 여러 분야에서 유용하게 활용된다. 구간을 2개 단위로 나누어 평균과 차를 구하는 방식은 구현이 간단하고 연산 자원이 적게 든다. 신호의 지역적 특성을 효율적으로 포착할 수 있으며, 신호를 압축하거나 잡음을 제거하는 경우에도 유리하다.
하지만 모함수가 불연속이기 때문에 주파수 스펙트럼이 상대적으로 넓게 퍼지는 문제가 있고, 진폭이 급격히 변화하지 않는 매끈한 신호에 대해서는 변환 계수가 충분히 효율적으로 압축되지 않을 수도 있다. 또한 시간 해상도는 높지만, 그만큼 주파수 해상도는 낮은 편이다.
에너지 밀집 특성과 Haar 웨이블릿
웨이블릿 변환의 주요 목적 중 하나는 신호 에너지를 소수의 계수에 집중시키는(energy compaction) 효과다. Haar 웨이블릿의 경우 특이점이나 불연속성이 존재하는 구간에서는 차 계수가 크게 나타나고, 그렇지 않은 구간에서는 상대적으로 차 계수가 작아진다. 이를 통해 특정 구간의 이상 징후를 빠르게 발견하거나 신호를 효율적으로 표현할 수 있다.
신호가 매끄럽게 변하는 구간에서는 평균값이 큰 비중을 차지하고, 차는 거의 0에 가깝게 수렴하므로, 이러한 부분을 소수의 계수만으로 표현하기도 쉽다. 반면에 전 구간에 걸쳐 복잡한 주파수 성분이 지속적으로 존재할 경우, Haar 웨이블릿으로는 국소화된 에너지 밀집 효과가 크게 나타나지 않을 수도 있다.
경계 문제(Boundary Effect)
이산 Haar 웨이블릿 변환을 실제로 구현할 때는 신호 길이가 2의 거듭제곱 형태가 아니라면, 신호의 경계 부분에 대해 패딩(padding) 방법이나 다른 보조 기법을 고려해야 한다. 경계에서 필터가 정확하게 적용되지 않으면, 불연속적인 계수가 발생하거나 실제 신호와 맞지 않는 잡음이 생길 수 있다.
예를 들어 10개의 샘플로 구성된 신호에 2단계 변환을 적용하려면, 먼저 길이를 8로 맞추거나 16으로 맞추는 과정을 고려해야 한다. 이러한 조정 과정은 신호의 처음 또는 끝 부분에 0을 추가하거나, 미러링(mirroring) 기법을 활용하여 값이 끊기지 않도록 만들어 준다.
2차원 Haar 웨이블릿 변환
Haar 웨이블릿은 1차원 신호뿐 아니라 2차원 신호(이미지)에도 적용할 수 있다. 2차원 변환에서는 행과 열에 각각 동일한 1차원 Haar 변환을 적용한다. 먼저 행별로 Haar 변환을 수행한 뒤 그 결과에 대해 열별로 다시 Haar 변환을 수행하면, 저주파 성분과 고주파 성분이 사분면 형태로 정렬된다.
가령 $N \times N$ 크기의 이미지를 한 단계 변환하면, 왼쪽 상단 구역에는 가장 낮은 주파수 성분(평균적 특징)이 모이고, 오른쪽 상단과 왼쪽 하단에는 수직 혹은 수평 방향의 세부 특징(고주파 성분)이 배치된다. 오른쪽 하단은 대각선 방향으로 급격히 변하는 정보를 반영한다.
2차원 Haar 변환 과정은 다음과 같이 진행된다. 먼저 각 행에 대하여
연산을 적용하여 전체 행을 절반 길이의 평균열과 차열로 분할한다. 그런 다음 이 행 변환 결과에 대해 각 열에 동일한 연산을 적용하여 최종적으로 $a, d_v, d_h, d_{diag}$ 성분을 얻게 된다. 여기서 $d_v$는 수직 방향 차, $d_h$는 수평 방향 차, $d_{diag}$는 대각선 방향 차를 의미한다.
이런 과정을 다단계로 확장하면, 가장 낮은 대역(저주파 성분)에 대해서만 동일한 연산을 반복 수행하여 점차 큰 스케일의 정보를 추출한다. 즉, 레벨이 올라갈수록 점점 더 희미하지만 전역적인 특징을 파악하게 되며, 레벨이 낮을수록 국소적인 세부 특징을 담당하게 된다.
2차원 Haar 역변환
2차원 Haar 변환으로 얻게 된 저주파 및 고주파 성분을 다시 합쳐 원본 이미지를 복원하려면, 역변환 과정을 동일한 방식으로 거꾸로 적용한다. 먼저 각 열에 대한 역연산을 수행하고, 그 결과를 각 행에 대해 역연산하여 최종 이미지를 얻는다. 1차원에서의 역변환 공식
이 2차원 각 행, 열에 동일하게 적용되며, 저주파와 고주파 성분을 짝 지어 합성과 차의 형태로 되돌린다.
이미지 압축과 Haar 웨이블릿
Haar 웨이블릿은 이미지 압축 기법에서 간단한 예시로 자주 활용된다. 다단계 변환을 통해 얻어지는 저주파 성분은 이미지의 전체적인 밝기나 큰 형태를, 고주파 성분은 미세한 테두리나 질감 등을 나타낸다. 불필요한(혹은 중요도가 낮은) 고주파 성분을 잘라내거나 더 거칠게 양자화(quantization)하면, 이미지의 용량을 크게 줄일 수 있다.
이는 매끄러운 영역이 많은 자연 이미지에서 특히 효과적이며, 경계선이나 텍스처가 급격하게 변하는 부분만 고주파 계수가 상대적으로 크게 남아 있다. Haar 웨이블릿이 단순한 형태를 가지기 때문에 실제 압축 성능이 최적은 아니지만, 개념을 이해하고 빠르게 구현하는 데 적합한 예시로 폭넓게 쓰이고 있다.
Haar 웨이블릿과 노이즈 제거(Denoising)
Haar 웨이블릿은 신호나 이미지에서 불필요한 노이즈를 제거할 때도 자주 활용된다. 변환 계수 관점에서 노이즈는 대부분 고주파 성분으로 나타나기 때문에, Haar 변환으로 얻어진 계수들 중 크기가 작은 고주파 계수를 일정 기준(스레숄드) 이하로 제거하거나 축소한다. 이렇게 하면 원본 신호의 윤곽이나 주요 특징을 크게 해치지 않으면서 노이즈가 줄어든 결과를 얻을 수 있다.
특히 갑작스러운 변화가 없는 평탄한 구간은 차 계수가 거의 0에 가까운 값으로 유지되므로, 이를 기반으로 작은 계수를 일괄적으로 소거(thresholding)해도 신호(또는 이미지)의 전역적 형태는 크게 달라지지 않는다. 다만 불연속점이 많은 경우에는 이 방법으로 신호의 일부 세밀한 부분이 손실될 가능성이 있다. Haar 웨이블릿이 단순 사각 파형이기 때문에, 모서리나 경계 정보를 완벽하게 보존하기에는 한계가 있으나 빠르게 적용 가능하다는 장점이 존재한다.
Haar 웨이블릿 구현 예시
Haar 웨이블릿 변환은 매우 간단한 수식을 통해 구현할 수 있다. 파이썬(Python) 기반의 예시 코드를 살펴보면 다음과 같은 흐름을 따른다.
이 예시에서는 1차원 신호를 길이가 2의 거듭제곱 형태라고 가정하고, 한 번의 분해 및 복원 과정을 수행한다. 다단계 분해를 위해서는 결과로 나온 저주파 부분(앞 절반)에 동일한 함수를 재귀적으로 적용하면 된다. 역변환 역시 같은 알고리즘을 역순으로 적용하는 구조다.
2차원 이미지에 대해서는 각 행에 대해 haar_transform_1d를 먼저 적용한 뒤, 다시 각 열에 대해서 동일한 변환을 수행하면 된다. 역변환 시에도 동일한 절차를 반대로 진행하면 원본 2차원 신호를 복원할 수 있다.
Haar 웨이블릿과 다른 웨이블릿과의 연관성
Haar 웨이블릿은 모함수의 형태가 매우 간단한 직교 웨이블릿 계열에 속한다. 이후에 등장한 Daubechies, Symlet, Coiflet 등 다양한 웨이블릿들은 Haar 웨이블릿을 일반화하거나 개선한 형태로 볼 수 있다. Haar 웨이블릿에서 직교성, 스케일링 및 시프팅의 개념을 확장하되, 보다 부드러운 모함수를 통해 주파수 해상도를 높이거나 매끄러운 신호를 더 효율적으로 표현한다.
Haar 웨이블릿은 간단하기 때문에 이해와 구현이 쉽지만, 신호가 갖는 다양한 특성을 충분히 반영하기에는 한계가 있다. 다른 웨이블릿들은 이러한 단점을 보완하기 위해 모함수와 스케일링 함수를 좀 더 유연하게 구성하고, 방대한 수학적 이론을 기반으로 더 높은 오더(order)를 가지는 필터 계수를 제공한다.
Last updated