33  Baz Değişimi ve Görüntü Sıkıştırma

JPEG/wavelet — sinyali iyi baza geçirip atmak

NotBölüm bilgisi

33.1 Bu Derste Ne Var?

  1. Sıkıştırma = baz değişimi + thresholding (JPEG: 64 → ~3 katsayı).
  2. Standart baz kötü, Fourier/wavelet iyi.
  3. \(\mathbf{x} = W\mathbf{c}\), \(\mathbf{c} = W^{-1}\mathbf{x}\).
  4. Aynı dönüşüm, iki baz\(B = M^{-1} A M\) benzer; özvektör bazı → Λ.

“A good basis has a nice, fast inverse — and a few basis vectors come close to the signal.” — Strang, 28:31

flowchart LR
    X["Görüntü x<br/>(piksel baz)"] --> BAZ["Baz değişim<br/>c = W⁻¹x<br/>(kayıpsız)"]
    BAZ --> TH["Threshold<br/>küçük c → 0<br/>⚠ kayıplı"]
    TH --> REC["~3 katsayı × baz<br/>= görüntü"]

    SIM["Aynı T, iki baz"] --> BAB["B = M⁻¹AM<br/>(benzer matris)"]
    BAB --> EIG["Özvektör baz → Λ"]

    style BAZ fill:#fff3e0,stroke:#e67e22,stroke-width:2px
    style EIG fill:#fce4ec,stroke:#c2185b,stroke-width:2px
flowchart LR
    X["Görüntü x<br/>(piksel baz)"] --> BAZ["Baz değişim<br/>c = W⁻¹x<br/>(kayıpsız)"]
    BAZ --> TH["Threshold<br/>küçük c → 0<br/>⚠ kayıplı"]
    TH --> REC["~3 katsayı × baz<br/>= görüntü"]

    SIM["Aynı T, iki baz"] --> BAB["B = M⁻¹AM<br/>(benzer matris)"]
    BAB --> EIG["Özvektör baz → Λ"]

    style BAZ fill:#fff3e0,stroke:#e67e22,stroke-width:2px
    style EIG fill:#fce4ec,stroke:#c2185b,stroke-width:2px
Şekil 33.1: Sıkıştırma: x → c (kayıpsız) → threshold (kayıplı). Aynı dönüşüm farklı bazlarda → benzer matris.
İpucuBuilder Notu — Sıkıştırma → ML
  • Transform coding (JPEG/wavelet) → autoencoder/VAE: öğrenilmiş encoder = \(W\), latent = \(\mathbf{c}\), bottleneck = threshold.
  • Embedding = öğrenilmiş baz (Word2Vec, transformer latent).
  • PCA = en iyi (özvektör) baz, ama pahalı; pratikte DCT/wavelet veya randomized SVD.
  • Fourier/wavelet öznitelikleri — scattering networks, FNO, spektrogram.

33.2 Görüntü = Vektör; Standart Baz Kötü

512×512 görüntü = \(\mathbf{x} \in \mathbb{R}^{512^2}\). Standart baz komşu piksel korelasyonunu kullanmaz.

İyi baz vektörleri:

  • Hepsi-1 \((1, 1, \ldots, 1)\) — düz görüntü.
  • Yarı-1/yarı-(−1) — düşük frekans.
  • Dama tahtası \((1, -1, 1, -1, \ldots)\) — yüksek frekans.

33.3 JPEG — Fourier Bazı, 8×8 Blok

JPEG 8×8 bloklara böler (64-boyut). Fourier bazına dönüştürür:

\[ \underbrace{64 \text{ piksel } \mathbf{x}}_{\text{standart}} \xrightarrow{\text{kayıpsız}} \underbrace{64 \text{ katsayı } \mathbf{c}}_{\text{Fourier}} \]

Threshold (kayıplı): küçük \(|c_i| < \epsilon\) → 0. Pürüzsüz blokta dama tahtası katsayıları küçük → at.

\[ 64 \to \sim 3 \text{ katsayı} \quad (\sim 21:1 \text{ sıkıştırma}) \]

33.4 Wavelet Bazı

Fourier rakibi — ortogonal + lokal (kenar/detay için iyi).

8-boyut için: \((1, 1, 1, 1, 1, 1, 1, 1), (1, 1, 1, 1, -1, -1, -1, -1), (1, 1, -1, -1, 0, 0, 0, 0), \ldots\)

İç çarpımlar 0 → ortogonal.

33.5 Baz Değişimi — \(\mathbf{x} = W\mathbf{c}\)

\(W\) kolonları = yeni baz vektörleri:

\[ \mathbf{x} = W \mathbf{c} \implies \mathbf{c} = W^{-1} \mathbf{x} \]

İyi baz = hızlı \(W^{-1}\) + az vektörle iyi temsil. Ortonormal → \(W^{-1} = W^T\) (FFT, fast wavelet).

import numpy as np

# 8-noktalı wavelet bazı (Haar)
W = np.array([
    [1, 1, 1, 0, 1, 0, 0, 0],
    [1, 1, 1, 0, -1, 0, 0, 0],
    [1, 1, -1, 0, 0, 1, 0, 0],
    [1, 1, -1, 0, 0, -1, 0, 0],
    [1, -1, 0, 1, 0, 0, 1, 0],
    [1, -1, 0, 1, 0, 0, -1, 0],
    [1, -1, 0, -1, 0, 0, 0, 1],
    [1, -1, 0, -1, 0, 0, 0, -1],
], dtype=float)

# Ortogonal mi? (kolonların çiftleri)
print("kolonlar dik?", np.allclose(W.T @ W, np.diag(np.diag(W.T @ W))))

# Bir sinyal: 4'ü 100, 4'ü 50
x = np.array([100, 100, 100, 100, 50, 50, 50, 50], dtype=float)
c = np.linalg.solve(W, x)
print("Wavelet katsayıları (çoğu sıfır):", np.round(c, 2))

33.6 Benzer Matrisler — \(B = M^{-1} A M\)

Aynı \(T\) iki bazda: matrisler benzer (Ders 28). Aynı özdeğer. Özvektör bazı → matris \(\Lambda\) köşegen.

“To find the eigenvectors would be too expensive.” — Strang, 48:04

Görüntüde piksel matrisinin özvektörleri pahalı → sabit bazlar (Fourier/wavelet).

33.7 Bu Dersin Özeti

  1. Sıkıştırma = baz değişimi + threshold.
  2. Standart baz kötü; iyi: Fourier/wavelet.
  3. JPEG: 8×8 Fourier, 64 → ~3.
  4. Wavelet ortogonal + lokal.
  5. \(\mathbf{x} = W\mathbf{c}, \mathbf{c} = W^{-1}\mathbf{x}\).
  6. Ortonormal → \(W^{-1} = W^T\).
  7. Benzer matrisler (\(B = M^{-1} A M\)).
  8. Özvektör bazı → Λ (en iyi, pahalı).
ÖnemliTek bir cümle

Sıkıştırma = sinyali az büyük katsayıyla temsil eden baza geçirip gerisini atmaktır. Aynı dönüşüm farklı bazlarda benzer matris (\(B = M^{-1} A M\)); en sade = özvektör bazında Λ. Modern ML’de autoencoder/VAE = öğrenilmiş baz.

33.8 Kontrol Soruları

Baz değişim kayıpsız; threshold kayıplı.

Piksel korelasyonunu kullanmaz; küçük katsayı üretmez.

  1. Hızlı \(W, W^{-1}\). (2) Az vektörle iyi temsil.

\(W^T\). İleri/geri aynı maliyet.

Benzer: \(B = M^{-1} A M\); aynı özdeğer.

33.9 Egzersizler

Egzersiz 1. \(W\) kolonları \((1, 1), (1, -1)\). \(\mathbf{x} = (3, 1)\) katsayıları?

Egzersiz 2. \((1, 1, 1, 1)\) ve \((1, 1, -1, -1)\) ortogonal mi?

Egzersiz 3. \(A = ((2, 1), (0, 3))\) → baz değişiminde özdeğer aynı mı?

Egzersiz 4. (Python) Wavelet/DCT ile küçük sinyal sıkıştır.

Egzersiz 5. İspatla: Aynı \(T\) iki bazda → \(B = M^{-1} A M\). (\(M\) = baz değişim matrisi.)

33.10 Sonraki Ders İçin Hazırlık

Ders 32: Quiz 3 İncelemesi — Ders 21-31 (özdeğer, diagonalize, \(A^k\), \(e^{At}\), Markov, simetrik, PD, SVD, benzerlik) toplu tekrar.

UyarıDers 32 öncesi
  • Egzersiz 5.
  • DCT/wavelet sıkıştırmayı dene.

33.11 Anahtar Kavramlar (Cheat Sheet)

Kavram Kural
Sıkıştırma Baz değişim + threshold
JPEG 8×8 Fourier, ~21:1
Wavelet Ortogonal + lokal
\(\mathbf{x} = W\mathbf{c}\) \(\mathbf{c} = W^{-1}\mathbf{x}\)
İyi baz Hızlı + iyi sıkıştırma
Ortonormal \(W^{-1} = W^T\)
Benzer \(B = M^{-1} A M\)
Özvektör baz matris → \(\Lambda\)

33.12 ML Bağlantıları Özeti

İpucu4 köprü
  1. Transform coding → autoencoder/VAE.
  2. Embedding = öğrenilmiş baz.
  3. PCA = özvektör baz (Ders 29 SVD ile).
  4. Fourier/wavelet öznitelikleri → scattering, FNO, spektrogram.
ÖnemliTek bir şey alıp gideceksen

Sıkıştırma = iyi baza geçirip küçük katsayıları atmak. Aynı \(T\) farklı bazlarda benzer matrisler; özvektör bazında köşegen \(\Lambda\). Modern ML: autoencoder = öğrenilmiş baz.