Калькулятор вейвлет-перетворення

Вейвлет-перетворення — це потужний інструмент частотно-часового аналізу сигналів, що дозволяє одночасно аналізувати частотні компоненти сигналу та їх локалізацію в часі. На відміну від перетворення Фур'є, яке дає глобальну частотну інформацію, вейвлет-перетворення забезпечує багатомасштабний аналіз: високочастотні компоненти локалізовані точно в часі, низькочастотні — менш точно, але з кращим частотним розділенням. Це відповідає принципу невизначеності Гейзенберга та робить вейвлети ідеальними для аналізу нестаціонарних сигналів.

Інтерактивний вейвлет-калькулятор

Вейвлет Хаара: Найпростіший ортогональний вейвлет. Компактний носій [0,1]. Ідеальний для сигналів зі стрибками.
4

Вхідний сигнал:

Вейвлет-аналіз:

Теорія вейвлет-перетворення

Неперервне вейвлет-перетворення (CWT)

CWT сигналу f(t) з використанням материнського вейвлету ψ(t): W_f(a, b) = 1/√|a| ∫ f(t) ψ*((t-b)/a) dt де: • a — масштаб (scale): контролює частотне розділення - малий a → стиснутий вейвлет → високі частоти - великий a → розтягнутий вейвлет → низькі частоти • b — зсув (translation): локалізація в часі • ψ* — комплексно спряжений вейвлет Умова допустимості: C_ψ = ∫ |Ψ(ω)|² / |ω| dω < ∞ де Ψ(ω) — перетворення Фур'є вейвлету. Це вимагає ∫ ψ(t) dt = 0 (нульове середнє). Зворотне перетворення: f(t) = 1/C_ψ ∫∫ W_f(a,b) ψ_{a,b}(t) da db / a²

Принцип невизначеності

Для будь-якого вікна аналізу: Δt × Δω ≥ 1/2 • Фур'є-перетворення: Δt = ∞ (вся тривалість), точне Δω • Віконне Фур'є (STFT): фіксоване Δt × Δω для всіх частот • Вейвлет: адаптивне — різне Δt × Δω для різних масштабів При масштабі a: Δt_a = a × Δt_ψ Δω_a = Δω_ψ / a Високі частоти → хороша часова роздільність Низькі частоти → хороша частотна роздільність

Історія розвитку

  • 1910: Альфред Хаар — перший ортогональний вейвлет
  • 1946: Деніс Габор — віконне перетворення Фур'є
  • 1982: Жан Морле — вейвлети для аналізу сейсмічних даних
  • 1984: Олександр Гроссман — математичне обґрунтування
  • 1986: Стефан Малла — багатомасштабний аналіз (MRA)
  • 1988: Інгрід Добеші — компактні ортогональні вейвлети
  • 1992: JPEG 2000 — вейвлет-стиснення зображень

Види вейвлетів

Вейвлет Хаара

Найпростіший ортогональний вейвлет: ψ(t) = { 1, 0 ≤ t < 1/2 {-1, 1/2 ≤ t < 1 { 0, інакше Масштабувальна функція: φ(t) = { 1, 0 ≤ t < 1 { 0, інакше Властивості: • Компактний носій: [0, 1] • Ортогональний і біортогональний • 1 зникаючий момент: ∫ t⁰ψ(t)dt = 0 • Розривний (не гладкий) • Ідеальний для кусково-постійних сигналів

Вейвлети Добеші (Daubechies)

Родина ортогональних вейвлетів dbN з N зникаючими моментами. Фільтри визначаються умовами: 1. Ортогональність: Σ_k h_k h_{k+2m} = δ_{m,0} 2. Нормування: Σ_k h_k = √2 3. N зникаючих моментів: ∫ t^j ψ(t)dt = 0 для j = 0,...,N-1 db1 = Хаар db2: h = [0.6830, 1.1830, 0.3170, -0.1830] / √2 db4: 8 коефіцієнтів db8: 16 коефіцієнтів Властивості: • Компактний носій довжиною 2N-1 • Чим більше N, тим гладкіший вейвлет • Асиметричні (окрім db1)

Симлети (Symlets)

Модифікація Добеші з покращеною симетрією. • Максимально симетричні при заданій довжині • Ті ж властивості ортогональності • sym4, sym8 — популярні вибори • Краще підходять для візуалізації

Вейвлет Морле

Для неперервного вейвлет-перетворення (CWT): ψ(t) = C × e^(iω₀t) × e^(-t²/2) • Модульована гаусіана • ω₀ ≈ 5-6 для допустимості • Комплексний → дає амплітуду і фазу • Нескінченний носій (експоненціальний спад) • Добра частотна роздільність Застосування: • Аналіз коливань • Обробка сигналів мозку (EEG) • Сейсмологія

Мексиканський капелюх (Mexican Hat / Ricker)

Друга похідна гаусіани: ψ(t) = (2/√3) × π^(-1/4) × (1 - t²) × e^(-t²/2) • Дійсний, симетричний • 2 зникаючі моменти • Добра локалізація в часі • Схожий на LoG (Laplacian of Gaussian) у 2D Застосування: • Виявлення країв у зображеннях • Аналіз сингулярностей • Геофізика

Койфлети (Coiflets)

Вейвлети з зникаючими моментами і для ψ, і для φ: ∫ t^j ψ(t)dt = 0, j = 0,...,2N-1 ∫ t^j φ(t)dt = 0, j = 1,...,2N-1 • Близько до симетрії • Носій довжиною 6N-1 • Корисні для апроксимації функцій

Дискретне вейвлет-перетворення (DWT)

Алгоритм Малла (швидке вейвлет-перетворення)

Рекурсивна декомпозиція через банк фільтрів: [сигнал x] | ┌──────┴──────┐ ↓ ↓ [h₀] [h₁] h₀ = низькочастотний фільтр | | h₁ = високочастотний фільтр ↓ ↓ [↓2] [↓2] децимація (субдискретизація) | | ↓ ↓ [cA] [cD] апроксимація та деталі Коефіцієнти на рівні j: cA_j[k] = Σ_n x[n] × h₀[n - 2k] (апроксимація) cD_j[k] = Σ_n x[n] × h₁[n - 2k] (деталі) Зв'язок фільтрів (QMF): h₁[k] = (-1)^k × h₀[L-1-k] де L — довжина фільтра.

Багаторівнева декомпозиція

Рівень 1: x → [cA₁, cD₁] Рівень 2: cA₁ → [cA₂, cD₂] → x → [cA₂, cD₂, cD₁] Рівень 3: cA₂ → [cA₃, cD₃] → x → [cA₃, cD₃, cD₂, cD₁] ... При N точках максимальний рівень = log₂(N) Кожен рівень: • cD_j — частоти в діапазоні [f_s/2^(j+1), f_s/2^j] • cA_j — частоти [0, f_s/2^(j+1)] Приклад (fs = 1000 Гц): cD₁: 250-500 Гц cD₂: 125-250 Гц cD₃: 62.5-125 Гц cA₃: 0-62.5 Гц

Реконструкція

Зворотне перетворення (IDWT): 1. Інтерполяція (upsampling): cA ↑2 = [cA[0], 0, cA[1], 0, ...] cD ↑2 = [cD[0], 0, cD[1], 0, ...] 2. Фільтрація: x = (cA ↑2) * g₀ + (cD ↑2) * g₁ де g₀, g₁ — фільтри синтезу: g₀[k] = h₀[L-1-k] g₁[k] = h₁[L-1-k] Ідеальна реконструкція (PR): h₀ * g₀ + h₁ * g₁ = δ[k]

Вейвлет-пакети

Розширення DWT: декомпозиція і апроксимацій, і деталей. Стандартний DWT: x / \ cA cD / \ cA2 cD2 ... Вейвлет-пакети: x / \ cA cD / \ / \ cAA cAD cDA cDD ... • Більш гнучкий частотний поділ • Можна обрати найкращий базис • Best Basis Algorithm (Coifman & Wickerhauser)

Застосування вейвлетів

1. Стиснення зображень

JPEG 2000: • 2D вейвлет-перетворення (CDF 9/7 або LeGall 5/3) • Краща якість при високому стисненні • Немає блокових артефактів (на відміну від DCT) • Прогресивна передача (масштабованість) Кроки: 1. Колірне перетворення (RGB → YCbCr) 2. 2D DWT кожної компоненти 3. Квантування коефіцієнтів 4. Ентропійне кодування (EBCOT)

2. Шумоподавлення (Denoising)

Модель: y = x + n, де n — шум Алгоритм: 1. DWT: Y = W(y) 2. Порогова обробка (thresholding): Hard threshold: Ỹ[k] = { Y[k], |Y[k]| > λ { 0, |Y[k]| ≤ λ Soft threshold: Ỹ[k] = sign(Y[k]) × max(|Y[k]| - λ, 0) 3. IDWT: x̃ = W⁻¹(Ỹ) Універсальний поріг (Donoho & Johnstone): λ = σ × √(2 log N) де σ — стандартне відхилення шуму.

3. Виявлення особливостей

  • Краї зображень: локальні максимуми вейвлет-коефіцієнтів
  • Сингулярності: поведінка при зміні масштабу
  • Розриви: великі високочастотні коефіцієнти
  • R-зубці ЕКГ: вейвлет-детекція QRS-комплексу

4. Біомедичні сигнали

  • ЕКГ: виявлення аритмій, сегментація QRS
  • ЕЕГ: аналіз ритмів (альфа, бета, тета, дельта)
  • ЕМГ: аналіз м'язової активності
  • Медичні зображення: виявлення пухлин, сегментація

5. Фінанси

• Багатомасштабний аналіз фінансових рядів • Виділення трендів різних таймфреймів • Виявлення структурних змін • Хеджування на різних масштабах • Оцінка волатильності

6. Геофізика та сейсмологія

  • Аналіз сейсмічних хвиль
  • Пошук нафти та газу
  • Моніторинг землетрусів
  • Обробка георадарних даних

7. Розпізнавання мовлення

  • Виділення ознак (feature extraction)
  • Аналіз просодії
  • Шумоподавлення у реальному часі
  • Розпізнавання емоцій

Порівняння з перетворенням Фур'є

┌────────────────────────────────────────────────────────────────────┐ │ Характеристика │ Фур'є (DFT) │ Вейвлет (DWT) │ ├─────────────────────┼────────────────────┼────────────────────────┤ │ Базисні функції │ Синусоїди │ Локалізовані хвильки │ │ Локалізація часу │ Ні (глобальна) │ Так (адаптивна) │ │ Частотна роздільн. │ Рівномірна │ Логарифмічна │ │ Нестаціонарні │ Погано │ Добре │ │ сигнали │ │ │ │ Швидкі перехідні │ Погано локалізує │ Добре локалізує │ │ Обчислювальна │ O(N log N) │ O(N) │ │ складність │ │ │ │ Стиснення │ JPEG (DCT) │ JPEG 2000 │ │ Шумоподавлення │ Фільтрація │ Порогова обробка │ └────────────────────────────────────────────────────────────────────┘

Коли використовувати що?

  • Фур'є: стаціонарні сигнали, спектральний аналіз, періодичні явища
  • Вейвлети: нестаціонарні сигнали, перехідні процеси, стиснення з втратами, локальний аналіз
  • STFT: компроміс — потрібна певна часова локалізація, але рівномірна частотна роздільність

Математичні основи MRA

Багатомасштабний аналіз (Multiresolution Analysis)

Послідовність вкладених підпросторів: {0} ⊂ ... ⊂ V₋₁ ⊂ V₀ ⊂ V₁ ⊂ ... ⊂ L²(ℝ) Аксіоми MRA: 1. Вкладеність: V_j ⊂ V_{j+1} 2. Щільність: ⋃_j V_j густа в L²(ℝ) 3. Тривіальність: ⋂_j V_j = {0} 4. Масштабування: f(t) ∈ V_j ⟺ f(2t) ∈ V_{j+1} 5. Існування базису: φ(t-k), k∈ℤ — базис Рісса для V₀ Простори деталей: W_j = V_{j+1} ⊖ V_j (ортогональне доповнення) V_{j+1} = V_j ⊕ W_j V_J = V₀ ⊕ W₀ ⊕ W₁ ⊕ ... ⊕ W_{J-1} Масштабувальне рівняння: φ(t) = √2 Σ_k h_k φ(2t - k) Вейвлет рівняння: ψ(t) = √2 Σ_k g_k φ(2t - k)

Детальний аналіз популярних вейвлетів

Вейвлети Добеші (Daubechies)

Ортогональні вейвлети з компактним носієм та максимальною кількістю зникаючих моментів для заданої довжини фільтра. dbN — N зникаючих моментів, довжина фільтра 2N Властивості: • db1 = Haar • Чим більше N, тим гладкіший вейвлет • Компактний носій [0, 2N-1] • Асиметричні (крім db1) Зникаючі моменти: ∫ t^k ψ(t) dt = 0 для k = 0, 1, ..., N-1 Застосування: • db4 — універсальний вибір • db6-db10 — для гладких сигналів • db20 — для дуже гладких функцій

Біортогональні вейвлети

Два різні вейвлети для аналізу та синтезу: • ψ (analysis wavelet) • ψ̃ (synthesis wavelet) ⟨ψ_jk, ψ̃_j'k'⟩ = δ_jj' δ_kk' Переваги: • Можуть бути симетричними • Точна реконструкція • Гнучкість у виборі властивостей Приклади: • bior1.3, bior2.4, bior3.9 • rbio (reverse biorthogonal) • JPEG 2000 використовує bior 9/7 та bior 5/3

Комплексні вейвлети

Морле (Morlet): ψ(t) = c × e^(iω₀t) × e^(-t²/2) де ω₀ ≈ 5-6 для узгодження умови допустимості Комплексна Гаусіана: ψ(t) = C_n × d^n/dt^n (e^(-t²) × e^(iωt)) Dual-Tree Complex Wavelet Transform (DTCWT): • Дві паралельні дерева DWT • Приблизна зсувна інваріантність • Хороша спрямована селективність • Ідеально для текстурного аналізу

Алгоритми швидкого вейвлет-перетворення

Піраміда Маллата (Mallat's Algorithm)

Декомпозиція (Analysis): s / \ / \ cA1 cD1 рівень 1 / \ / \ cA2 cD2 рівень 2 / \ cA3 cD3 рівень 3 cA_j = downsample(convolve(cA_{j-1}, h)) — апроксимація cD_j = downsample(convolve(cA_{j-1}, g)) — деталі Реконструкція (Synthesis): cA_{j-1} = upsample(cA_j)*h' + upsample(cD_j)*g' де h' і g' — фільтри реконструкції Складність: O(N) — лінійна!

Lifting Scheme (схема підйому)

Розбиття + Передбачення + Оновлення 1. Split: розділити на парні/непарні x_even = x[0], x[2], x[4], ... x_odd = x[1], x[3], x[5], ... 2. Predict: d = x_odd - P(x_even) Деталі = різниця між реальним і передбаченим 3. Update: s = x_even + U(d) Оновлена апроксимація Переваги: • Менше пам'яті (in-place) • Легко інвертується • Адаптивні вейвлети • Ціла арифметика (lossless JPEG 2000)

2D Вейвлет-перетворення

Separable 2D DWT: 1. DWT по рядках 2. DWT по стовпцях Результат на кожному рівні: ┌───────┬───────┐ │ LL │ HL │ HL — горизонтальні деталі ├───────┼───────┤ LH — вертикальні деталі │ LH │ HH │ HH — діагональні деталі └───────┴───────┘ LL — апроксимація Ітеративно застосовуємо до LL Non-separable вейвлети: • Contourlets, Curvelets — краще для контурів • Steerable pyramids — обертальна інваріантність

Wavelet Shrinkage та шумоподавлення

Теорія Донохо-Джонстоуна

Модель: y = f + ε, де ε ~ N(0, σ²) У вейвлет-домені: w_j,k = θ_j,k + z_j,k де θ — справжні коефіцієнти, z — шум Ключове спостереження: • Корисний сигнал — кілька великих коефіцієнтів • Шум — багато малих коефіцієнтів Порогова обробка зменшує малі коефіцієнти

Типи порогової обробки

Hard thresholding: η_H(w, λ) = w × 1(|w| > λ) Обнуляє коефіцієнти з |w| ≤ λ Soft thresholding: η_S(w, λ) = sign(w) × max(|w| - λ, 0) Зсуває всі коефіцієнти до нуля Garrote (Non-negative garrote): η_G(w, λ) = w × (1 - λ²/w²)⁺ Компроміс між hard і soft

Вибір порогу

Universal threshold (VisuShrink): λ = σ × √(2 log N) • Оптимальний для найгіршого випадку • Часто занадто агресивний SURE threshold (SureShrink): • Мінімізує незміщену оцінку ризику Стейна • Адаптивний до даних BayesShrink: λ_j = σ² / σ_j де σ_j = √(max(var(w_j) - σ², 0)) • Адаптивний до кожного рівня • Добре працює на практиці Оцінка σ (рівень шуму): σ̂ = MAD(w_1) / 0.6745 де MAD — медіана абсолютних відхилень на найдрібнішому рівні деталей

Стиснення зображень

JPEG 2000

Етапи кодування: 1. Перетворення кольорів (RGB → YCbCr) 2. Плитки (tiles) — поділ зображення 3. DWT — біортогональний 9/7 або 5/3 4. Квантування коефіцієнтів 5. EBCOT (Embedded Block Coding with Optimal Truncation) 6. Формування бітового потоку Переваги над JPEG: • Краща якість при низьких бітрейтах • Прогресивна передача (resolution scalability) • SNR scalability • ROI (region of interest) кодування • Lossless режим

EZW та SPIHT

Embedded Zerotree Wavelet (Shapiro, 1993): • Використовує кореляцію між масштабами • Zerotree: якщо батько малий, нащадки теж • Embedded: біт за бітом, від MSB до LSB Set Partitioning in Hierarchical Trees (Said & Pearlman, 1996): • Покращення EZW • Ефективніше кодування zero-trees • Близько до теоретичного оптимуму Сучасні методи: • JPEG 2000 Part 2 (wavelets + other transforms) • HEVC/H.265 (DCT, але wavelet-подібна структура)

Wavelet Packets

Повне розкладання

Стандартний DWT розкладає тільки апроксимацію (LL). Wavelet packets розкладають і апроксимацію, і деталі. Дерево пакетів: W(0,0) / \ W(1,0) W(1,1) / \ / \ W(2,0) W(2,1) W(2,2) W(2,3) На рівні j маємо 2^j вузлів Кожен вузол — інший частотний діапазон

Best Basis алгоритм

Мета: знайти оптимальний базис з бібліотеки Алгоритм (Coifman & Wickerhauser, 1992): 1. Обчислити повне дерево пакетів 2. Для кожного вузла — значення вартісної функції 3. Порівняти вартість батька з сумою вартостей дітей 4. Вибрати менше Вартісні функції: • Shannon entropy: -Σ p_i log(p_i) • Концентрація: Σ |c_i|^p для p < 2 • Кількість великих коефіцієнтів Застосування: • Стиснення • Класифікація • Feature extraction

Практичні приклади коду

Python з PyWavelets

import pywt import numpy as np # 1D DWT signal = np.sin(np.linspace(0, 4*np.pi, 256)) coeffs = pywt.wavedec(signal, 'db4', level=3) # coeffs = [cA3, cD3, cD2, cD1] # Реконструкція reconstructed = pywt.waverec(coeffs, 'db4') # Шумоподавлення noisy = signal + 0.3 * np.random.randn(len(signal)) coeffs = pywt.wavedec(noisy, 'sym4', level=4) sigma = np.median(np.abs(coeffs[-1])) / 0.6745 threshold = sigma * np.sqrt(2 * np.log(len(noisy))) denoised_coeffs = [pywt.threshold(c, threshold, 'soft') for c in coeffs] denoised = pywt.waverec(denoised_coeffs, 'sym4') # 2D DWT для зображення import cv2 img = cv2.imread('image.jpg', 0) coeffs2 = pywt.dwt2(img, 'bior4.4') cA, (cH, cV, cD) = coeffs2

MATLAB

% 1D DWT [cA, cD] = dwt(signal, 'db4'); [C, L] = wavedec(signal, 3, 'db4'); % Реконструкція reconstructed = waverec(C, L, 'db4'); % Шумоподавлення denoised = wdenoise(noisy, 'DenoisingMethod', 'Bayes'); % 2D DWT [cA, cH, cV, cD] = dwt2(img, 'bior4.4'); % CWT cwt(signal, 'amor'); % Morlet wavelet scalogram

Ресурси та література

Книги

  • "A Wavelet Tour of Signal Processing" — Stéphane Mallat (класика)
  • "Ten Lectures on Wavelets" — Ingrid Daubechies
  • "Wavelets and Filter Banks" — Strang & Nguyen
  • "An Introduction to Wavelets" — Graps (стаття для початківців)

Бібліотеки

  • PyWavelets (Python) — повнофункціональна бібліотека
  • MATLAB Wavelet Toolbox — промисловий стандарт
  • R wavelets — статистичний аналіз
  • WaveLab (MATLAB) — академічна, з алгоритмами з літератури

Онлайн-ресурси

  • Wavelet Browser — інтерактивна візуалізація
  • The Wavelet Tutorial — Robi Polikar
  • Gilbert Strang's lectures (MIT OCW)

Практичне значення та контекст

Де застосовується

Інструменти даного типу широко застосовуються у навчальній та дослідницькій діяльності. Вони дозволяють швидко отримувати точні числові результати, перевіряти аналітичні розрахунки та моделювати різноманітні сценарії. Використання онлайн-калькуляторів значно прискорює роботу науковців, інженерів, студентів та спеціалістів-практиків, які щодня стикаються з відповідними обчислювальними задачами.

Часті запитання (FAQ)

Чому результати можуть незначно відрізнятися від інших конвертерів?
Незначні розходження пов'язані з різними коефіцієнтами переведення. Ми використовуємо точні значення (наприклад, 1 дюйм = 25,4 мм точно). Деякі одиниці мають «традиційне» і «наукове» значення — ми завжди вказуємо, яке саме використовується.
Скільки знаків після коми потрібно зберігати при перетворенні?
Це залежить від задачі. У науці використовують стільки значущих цифр, скільки є у вихідному числі. У побуті зазвичай достатньо 2–3 знаків після коми. Наш конвертер показує 4–6 значущих цифр, що підходить для більшості практичних задач.
Як користуватися цим калькулятором?
Введіть необхідні значення у відповідні поля та натисніть кнопку обчислення. Результат відобразиться одразу. Калькулятор підтримує десяткові числа та від'ємні значення — для введення від'ємного числа використовуйте знак мінус. Усі розрахунки виконуються онлайн без встановлення додаткового програмного забезпечення.
Чи можна використовувати калькулятор безкоштовно?
Так, усі калькулятори на сайті calculator.party повністю безкоштовні. Жодна реєстрація не потрібна — просто відкрийте сторінку та починайте обчислення. Калькулятори доступні 24/7 і працюють у будь-якому сучасному браузері на комп'ютері, планшеті або смартфоні.
Яка точність обчислень калькулятора?
Калькулятор використовує 64-бітну арифметику з плаваючою точкою (стандарт IEEE 754), що забезпечує точність до 15–16 значущих цифр. Для більшості практичних задач цього більш ніж достатньо. Результати округлюються до 4–6 значущих цифр для зручності читання.