구글 안티그래비티 완전 분석 — 모델·요금제·CLI 총정리

🚀 구글 안티그래비티(Antigravity) 완전 분석 구글이 2025년 11월 Gemini 3와 함께 공개한 에이전트 퍼스트(agent-first) IDE 안티그래비티는 Claude·GPT·Gemini를 한 도구에서 골라 쓰는 멀티모델 코딩 환경이다. 이 글에서는 ① 지원 모델과 요금제별 사용량의 실체, ② 실사용자 평가, ③ 구글의 방향성, ④ Claude Code와의 비교·연계, ⑤ CLI( agy )로 직접 쓰는 법까지 다섯 갈래를 차례로 정리한다. 자료 간 충돌이 있는 지점은 한쪽으로 단정하지 않고 양쪽을 모두 살려 표기했다. 📅 기준 시점: 2026년 6월 · 프리뷰 단계 정보로 수치는 변동 가능 1. 안티그래비티란 무엇인가 — 기초 정리 안티그래비티는 2025년 7월 구글이 24억 달러 규모 라이선스 계약 으로 영입한 전 Windsurf 팀이 설계를 주도했다. VSCode를 포크한 위에 자율 에이전트 오케스트레이션 계층을 얹은 구조다. 2026년 5월 Google I/O에서 발표된 안티그래비티 2.0 은 데스크탑 앱과 함께 공식 CLI agy 를 처음 공개하며 기존 Gemini CLI의 공식 후계자 자리를 확정했다. 핵심 정체성은 단순 코드 자동완성이 아니라 병렬 에이전트 오케스트레이션 이다. 여러 에이전트가 동시에 — 하나는 API, 하나는 테스트, 또 하나는 프론트엔드 — 작업을 나눠 진행하고, 각 에이전트는 계획·테스트 결과·스크린샷·영상을 담은 Artifact 를 남긴다. "사람이 한 줄씩 승인"하는 방식이 아니라 "에이전트들이 일을 마치고 사람이 사후 검수"하는 모델이다. flowchart TD A([사용자 작업 지시]) --> B[에이전트 A API 구현] A --> C[에이전트 B 테스트 작성] A --> D[에이전트 C UI 생성] B --> E[Artifact 계획·결과·영상] C --> E D --> E...

이산 웨이브렛 변환(DWT) 완벽 정리: 개념부터 영상처리 및 코드 구현까지

🌊 이산 웨이브렛 변환(DWT) 완벽 가이드 — 디지털 신호 분석의 혁신

Discrete Wavelet Transform | 신호처리 · 영상압축 · 하드웨어 구현

데이터를 분석할 때 우리는 흔히 '주파수'를 떠올립니다. 하지만 특정 시점에 어떤 주파수가 발생했는지 알고 싶다면 기존의 푸리에 변환(Fourier Transform)만으로는 한계가 있습니다. 이를 해결하기 위해 등장한 것이 바로 이산 웨이브렛 변환(Discrete Wavelet Transform, DWT)입니다. DWT는 JPEG 2000 영상 압축부터 지진파 분석, 심전도(ECG) 이상 탐지, 딥러닝 전처리까지 현대 공학 전반에서 핵심적으로 활용되는 기술입니다.

📌 1. DWT의 기초 개념과 사용 목적

DWT는 신호를 시간과 주파수(Scale) 영역에서 동시에 분석할 수 있는 수학적 도구입니다. 기존 푸리에 변환이 "어떤 주파수가 존재하는가"만 알려준다면, DWT는 "언제, 어떤 주파수가 나타났는가"까지 파악합니다.

🔹 컨셉: 신호를 짧은 지속 시간을 가진 '작은 파동(Wavelet)'들로 분해합니다.

🔹 사용 목적: 신호의 전체적인 흐름(근사값, Approximation)과 급격한 변화(세부 정보, Detail)를 분리합니다.

🔹 탁월한 점: 비정상 신호(Non-stationary signal), 즉 시간에 따라 성질이 변하는 신호에서 급격한 불연속점이나 엣지(Edge)를 찾아내는 데 매우 뛰어납니다.

🔹 활용 분야: 데이터 압축(JPEG 2000), 노이즈 제거(Denoising), 지진파 분석, 음성 인식, 생체 신호 분석, 금융 시계열 분석 등에 폭넓게 사용됩니다.

⚡ 푸리에 변환 vs DWT 비교

구분 푸리에 변환 (FFT) 웨이브렛 변환 (DWT)
분석 영역 주파수만 시간 + 주파수 동시
기저 함수 사인/코사인 (무한 지속) 웨이브렛 (유한 지속)
비정상 신호 ❌ 취약 ✅ 강력
데이터 압축 보통 우수 (에너지 집중)
계산 복잡도 O(N log N) O(N)

📜 2. 역사와 창시자: 백그라운드 지식

웨이브렛의 역사는 20세기 초로 거슬러 올라가지만, 현대적인 DWT 체계는 1980년대에 완성되었습니다. 핵심 인물들을 살펴보겠습니다.

🧑‍🔬 장 몰레 (Jean Morlet)

프랑스 지질학자. 석유 탐사 중 지층 분석을 위해 '웨이브렛'이라는 용어를 최초로 고안했습니다. 전통적 푸리에 분석의 한계를 현장에서 체감한 실무자였습니다.

🧑‍🔬 알렉스 그로스만 (Alex Grossmann)

물리학자로서 몰레와 협력하여 연속 웨이브렛 변환(CWT)의 수학적 기초를 엄밀하게 정립했습니다.

👩‍🔬 잉그리드 도브시 (Ingrid Daubechies)

현대 DWT의 핵심 인물. 직교성(Orthogonality)을 가진 Daubechies Wavelets를 창시하여 실용적 응용의 문을 열었습니다.

🧑‍🔬 스테판 말라 (Stéphane Mallat)

다중해상도 분석(MRA) 이론을 정립. 필터 뱅크(Filter Bank) 기반의 빠른 웨이브렛 변환 알고리즘을 개발했습니다.

🔢 3. 기본 수식과 샘플 설명

DWT의 핵심은 저역 통과 필터(Low-pass Filter, L)고역 통과 필터(High-pass Filter, H)를 통과시킨 후 데이터를 절반으로 줄이는 다운샘플링(Downsampling, ↓2) 과정에 있습니다.

✏️ Haar 웨이브렛 예시

가장 간단한 Haar 웨이브렛으로 신호 x = [x₁, x₂]를 변환하면:

Approximation (L): a = (x₁ + x₂) / √2 — 평균의 개념

Detail (H): d = (x₁ - x₂) / √2 — 차이의 개념

이 과정을 거치면 신호는 저주파 성분(전체 윤곽)과 고주파 성분(급격한 변화)으로 분리됩니다. 이를 여러 단계(Level) 반복하면 신호의 다층적인 특징을 추출할 수 있습니다.

🔄 DWT 다중 레벨 분해 흐름

원본 신호 x[n]
Low-pass (L) + ↓2
High-pass (H) + ↓2
cA₁ (근사)
cD₁ (세부)
cA₁
Low-pass (L) + ↓2
High-pass (H) + ↓2
cA₂ (근사)
cD₂ (세부)

🖼️ 4. 영상처리 관점에서의 DWT 역할

영상(2D 신호)에서 DWT는 가로와 세로 방향으로 각각 필터를 적용합니다. 한 번의 변환으로 영상은 4개의 서브 밴드(Sub-band)로 나뉩니다.

LL

근사 정보 (축소판)

에너지 집중 ⚡

LH

수평 세부

수직 엣지 검출

HL

수직 세부

수평 엣지 검출

HH

대각선 세부

대각선 엣지 검출

✨ 영상처리에서의 주요 장점

🗜️ 압축 (JPEG 2000): 중요도가 낮은 HH 밴드 정보를 제거하여 높은 압축률을 달성합니다. JPEG 2000은 DWT 기반으로 기존 DCT 방식(JPEG)보다 블록 현상 없이 우수한 화질을 제공합니다.

🧹 노이즈 제거 (Denoising): 고주파 밴드(LH, HL, HH)에서 특정 임계값 이하의 계수를 0으로 만드는 Thresholding 기법으로 노이즈를 효과적으로 제거합니다. 하드 임계값과 소프트 임계값 두 가지 방식이 있습니다.

🔍 특징 추출: 엣지 정보가 HL, LH 밴드에 집중되므로, 사물 인식이나 패턴 분류의 전처리 단계로 활용됩니다. 의료 영상에서 종양 경계 검출 등에 핵심적입니다.

📡 워터마킹: DWT 계수에 워터마크를 삽입하면, 압축이나 크기 변환에도 강인한 디지털 저작권 보호가 가능합니다.

💻 5. 코드 예시 (C 및 Verilog)

🔧 C 코드: Haar DWT 1단계 구현

부동 소수점 배열을 입력받아 근사값(Approximation)과 세부값(Detail)으로 분리하는 기본 구현입니다.

#include <stdio.h>
#include <math.h>

void haar_dwt(float* input, int n, float* output) {
    int half = n / 2;
    for (int i = 0; i < half; i++) {
        // 저역 통과 (평균)
        output[i] = (input[2 * i] + input[2 * i + 1]) / sqrt(2.0);
        // 고역 통과 (차이)
        output[half + i] = (input[2 * i] - input[2 * i + 1]) / sqrt(2.0);
    }
}

int main() {
    float signal[4] = {10.0, 20.0, 30.0, 40.0};
    float result[4];
    haar_dwt(signal, 4, result);
    printf("Approx: %.2f, %.2f | Detail: %.2f, %.2f\n",
           result[0], result[1], result[2], result[3]);
    return 0;
}

▶ 실행 결과: Approx: 21.21, 49.50 | Detail: -7.07, -7.07

⚙️ Verilog 코드: 1D DWT 필터 모듈

FPGA/ASIC에서는 병렬 처리를 위해 레지스터 기반 파이프라인 구조로 구현합니다. 하드웨어 효율을 위해 √2 나눗셈 대신 비트 시프트(>>1)로 근사합니다.

module haar_dwt_1d (
    input         clk,
    input         rst_n,
    input  [15:0] data_in_0,  // x[n]
    input  [15:0] data_in_1,  // x[n+1]
    output reg [15:0] approx,  // 근사값
    output reg [15:0] detail   // 세부값
);
    always @(posedge clk or negedge rst_n) begin
        if (!rst_n) begin
            approx <= 0;
            detail <= 0;
        end else begin
            approx <= (data_in_0 + data_in_1) >> 1;
            detail <= (data_in_0 - data_in_1) >> 1;
        end
    end
endmodule

💡 Tip: 실무에서는 Daubechies(db4, db8) 등 더 긴 필터 계수를 사용하여 정확도를 높입니다. 필터 길이가 길어질수록 FIR 필터 파이프라인 스테이지가 추가되며, FPGA 자원 사용량과 처리 레이턴시 사이의 트레이드오프를 고려해야 합니다.

🚀 6. 대표적인 웨이브렛 필터 종류

DWT에서 사용하는 웨이브렛 필터에 따라 분석 결과가 크게 달라집니다. 용도에 맞는 적절한 웨이브렛 선택이 성능을 좌우합니다.

웨이브렛 필터 길이 특징 주요 용도
Haar 2 가장 단순, 불연속적 교육용, 엣지 검출
Daubechies (dbN) 2N 직교, 컴팩트 지지 범용 신호 처리
Symlet (symN) 2N 거의 대칭적 영상 처리
CDF 9/7 9, 7 쌍직교, 대칭 JPEG 2000 표준
Coiflet (coifN) 6N 거의 대칭, 소실 모먼트 수치 해석

🎯 7. 실무에서 자주 하는 실수와 팁

⚠️ 실수 1: 경계 처리 무시 — 신호의 양쪽 끝에서 필터를 적용할 때 경계 효과(Border Effect)가 발생합니다. 제로 패딩, 대칭 확장, 주기 확장 등의 방법으로 처리해야 합니다.

⚠️ 실수 2: 분해 레벨 과다 — 너무 많은 레벨로 분해하면 근사 계수의 길이가 지나치게 짧아져 의미 있는 정보를 잃습니다. 일반적으로 log₂(N) 레벨 이하로 설정합니다.

⚠️ 실수 3: 부적절한 웨이브렛 선택 — 불연속점이 많은 신호에 매끄러운 웨이브렛(높은 N의 dbN)을 쓰면 오히려 성능이 저하됩니다. 신호 특성과 웨이브렛의 매칭이 중요합니다.

✅ Tip: 역변환(IDWT) 시 완전 재구성(Perfect Reconstruction)이 보장되려면, 분석 필터와 합성 필터 쌍이 정확히 매칭되어야 합니다. 라이브러리를 사용할 때는 동일한 웨이브렛 패밀리를 사용하세요.

📝 요약 및 결론

이산 웨이브렛 변환은 신호를 다각도에서 바라보게 해주는 '수학적 돋보기'와 같습니다. 시간에 따른 주파수 변화를 포착할 수 있다는 강력한 능력 덕분에, 통신, 의료 영상, 지질 탐사, 금융 분석 등 현대 공학의 필수 요소로 자리 잡았습니다.

🔑 핵심 정리

→ DWT는 시간-주파수 동시 분석이 가능한 도구

→ 저역/고역 필터 + 다운샘플링으로 다중 해상도 분해 수행

→ 영상에서는 LL, LH, HL, HH 4개 서브 밴드로 분리

→ JPEG 2000, 노이즈 제거, 엣지 검출 등에 핵심적으로 활용

→ 하드웨어 구현 시 비트 시프트 근사로 실시간 처리 가능

푸리에 변환의 한계를 느꼈다면, DWT의 세계를 탐험해 보시기 바랍니다. 특히 비정상 신호를 다루는 분야에서 DWT는 단순한 선택이 아닌 필수적인 분석 도구입니다.

📚 참고자료

→ Wikipedia: Discrete wavelet transform

→ MathWorks: What is Discrete Wavelet Transform?

→ S. Mallat, "A Wavelet Tour of Signal Processing", Academic Press

📄 Raw Data
### 디지털 신호 분석의 혁신, 이산 웨이브렛 변환(DWT) 완벽 가이드

데이터를 분석할 때 우리는 흔히 '주파수'를 떠올립니다. 하지만 특정 시점에 어떤 주파수가 발생했는지 알고 싶다면 기존의 푸리에 변환(Fourier Transform)만으로는 한계가 있습니다. 이를 해결하기 위해 등장한 것이 바로 **이산 웨이브렛 변환(Discrete Wavelet Transform, DWT)**입니다. 오늘은 DWT의 기초부터 역사, 수식, 그리고 영상처리와 하드웨어 구현까지 깊이 있게 살펴보겠습니다.

---

#### 1. DWT의 기초 개념과 사용 목적
DWT는 신호를 **시간과 주파수(Scale) 영역에서 동시에 분석**할 수 있는 도구입니다. 
*   **컨셉:** 신호를 짧은 지속 시간을 가진 '작은 파동(Wavelet)'들로 분해합니다. 
*   **사용 목적:** 신호의 전체적인 흐름(근사값, Approximation)과 급격한 변화(세부 정보, Detail)를 분리하는 데 목적이 있습니다.
*   **탁월한 점:** 비정상 신호(Non-stationary signal), 즉 시간에 따라 성질이 변하는 신호에서 급격한 불연속점이나 엣지(Edge)를 찾아내는 계산에 매우 탁월합니다. 이는 데이터 압축(JPEG 2000), 노이즈 제거(Denoising), 지진파 분석 등에 널리 쓰입니다.

#### 2. 역사와 창시자: 백그라운드 지식
웨이브렛의 역사는 20세기 초로 거슬러 올라가지만, 현대적인 DWT 체계는 1980년대에 완성되었습니다.
*   **장 몰레(Jean Morlet):** 프랑스의 지질학자로, 석유 탐사 중 지층 분석을 위해 '웨이브렛'이라는 용어를 처음 고안했습니다.
*   **알렉스 그로스만(Alex Grossmann):** 몰레와 함께 연속 웨이브렛 변환의 수학적 기초를 다졌습니다.
*   **잉그리드 도브시(Ingrid Daubechies):** 현대 DWT의 가장 중요한 인물 중 하나로, 직교성(Orthogonality)을 가진 컴팩트한 웨이브렛 필터(Daubechies Wavelets)를 창시했습니다.
*   **스테판 말라(Stéphane Mallat):** 다중해상도 분석(Multi-resolution Analysis, MRA) 이론을 정립하여, 필터 뱅크(Filter Bank)를 이용한 빠른 웨이브렛 변환 알고리즘을 개발했습니다.

---

#### 3. 기본 수식과 샘플 설명
DWT의 핵심은 **저역 통과 필터(Low-pass Filter, L)**와 **고역 통과 필터(High-pass Filter, H)**를 통과시킨 후 데이터를 절반으로 줄이는 **다운샘플링(Downsampling)** 과정에 있습니다.

가장 간단한 **Haar 웨이브렛**을 예로 들어보겠습니다. 신호 $x = [x_1, x_2]$가 있을 때:
*   **Approximation (L):** $a = (x_1 + x_2) / \sqrt{2}$ (평균의 개념)
*   **Detail (H):** $d = (x_1 - x_2) / \sqrt{2}$ (차이의 개념)

이 과정을 거치면 신호는 저주파 성분과 고주파 성분으로 나뉩니다. 이를 여러 단계(Level) 반복하면 신호의 다층적인 특징을 추출할 수 있습니다.

---

#### 4. 영상처리 관점에서의 DWT 역할
영상(2D 신호)에서 DWT는 가로와 세로 방향으로 각각 필터를 적용합니다. 한 번의 변환으로 영상은 4개의 서브 밴드(Sub-band)로 나뉩니다.
1.  **LL (Low-Low):** 원본 영상의 축소판 (근사 정보). 대부분의 에너지가 집중됩니다.
2.  **LH (Low-High):** 수평 방향의 세부 정보 (수직 엣지 검출).
3.  **HL (High-Low):** 수직 방향의 세부 정보 (수평 엣지 검출).
4.  **HH (High-High):** 대각선 방향의 세부 정보.

**영상처리에서의 장점:**
*   **압축:** 중요도가 낮은 HH 밴드 정보를 제거하여 높은 압축률을 달성합니다 (JPEG 2000 표준).
*   **노이즈 제거:** 고주파 밴드(LH, HL, HH)에서 특정 임계값 이하의 값을 0으로 만들어 노이즈를 효과적으로 지웁니다.
*   **특징 추출:** 엣지 정보가 HL, LH 등에 집중되므로 사물 인식의 전처리 단계로 활용됩니다.

---

#### 5. 코드 예시 (C 및 Verilog)

**[C 코드: Haar DWT 1단계 구현]**
이 코드는 간단한 부동 소수점 배열을 입력받아 근사값과 세부값으로 분리합니다.
```c
#include <stdio.h>
#include <math.h>

void haar_dwt(float* input, int n, float* output) {
    int half = n / 2;
    for (int i = 0; i < half; i++) {
        // 저역 통과 (평균)
        output[i] = (input[2 * i] + input[2 * i + 1]) / sqrt(2.0);
        // 고역 통과 (차이)
        output[half + i] = (input[2 * i] - input[2 * i + 1]) / sqrt(2.0);
    }
}

int main() {
    float signal[4] = {10.0, 20.0, 30.0, 40.0};
    float result[4];
    haar_dwt(signal, 4, result);
    printf("Approx: %.2f, %.2f | Detail: %.2f, %.2f\n", result[0], result[1], result[2], result[3]);
    return 0;
}
```

**[Verilog 코드: 1D DWT의 필터 모듈 개념]**
하드웨어(FPGA/ASIC)에서는 병렬 처리가 중요하므로 레지스터를 이용한 파이프라인 구조를 가집니다.
```verilog
module haar_dwt_1d (
    input clk,
    input rst_n,
    input [15:0] data_in_0, // x[n]
    input [15:0] data_in_1, // x[n+1]
    output reg [15:0] approx, // (x[n] + x[n+1]) >> 1 (simplified)
    output reg [15:0] detail  // (x[n] - x[n+1]) >> 1 (simplified)
);
    always @(posedge clk or negedge rst_n) begin
        if (!rst_n) begin
            approx <= 0;
            detail <= 0;
        end else begin
            // 하드웨어 효율을 위해 sqrt(2) 대신 bit shift 사용 가능
            approx <= (data_in_0 + data_in_1) >> 1;
            detail <= (data_in_0 - data_in_1) >> 1;
        end
    end
endmodule
```

---

#### 요약 및 결론
이산 웨이브렛 변환은 신호를 다각도에서 바라보게 해주는 **'수학적 돋보기'**와 같습니다. 시간에 따른 주파수 변화를 포착할 수 있다는 강력한 무기 덕분에, 통신부터 의료 영상 분석까지 현대 공학의 필수 요소로 자리 잡았습니다. 푸리에 변환의 한계를 느꼈다면, 이제 DWT의 세계를 탐험해 보시기 바랍니다.
---

## References

- [Wikipedia: Discrete wavelet transform](https://en.wikipedia.org/wiki/Discrete_wavelet_transform)
- [MathWorks: What is Discrete Wavelet Transform?](https://www.mathworks.com/discovery/discrete-wavelet-transform.html)

댓글

이 블로그의 인기 게시물

Vim 9.2 릴리즈 총정리: 더 빠르고 강력해진 텍스트 편집의 제왕

폐쇄망 SoC 설계자를 위한 가볍고 빠른 Vim 최적화 가이드

에이전트 시대를 위한 터미널 cmux 가이드: 설치부터 AI 활용까지