---
title: "Baz Değişimi ve Görüntü Sıkıştırma"
subtitle: "JPEG/wavelet — sinyali iyi baza geçirip atmak"
---
::: {.callout-note title="Bölüm bilgisi"}
- **Strang'in videosu:** [YouTube — Lecture 31: Change of Basis; Image Compression](https://www.youtube.com/watch?v=0h43aV4aH7I) (≈50 dk)
- **OCW sayfası:** [MIT 18.06SC — Lecture 31](https://ocw.mit.edu/courses/18-06sc-linear-algebra-fall-2011/resources/lecture-31-change-of-basis-image-compression/)
- **Okuma süresi:** ≈38 dk
:::
## Bu Derste Ne Var? {#sec-bu-derste}
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
```{mermaid}
%%| label: fig-concept-map
%%| fig-cap: "Sıkıştırma: x → c (kayıpsız) → threshold (kayıplı). Aynı dönüşüm farklı bazlarda → benzer matris."
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
```
::: {.callout-tip title="Builder 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.
:::
## Görüntü = Vektör; Standart Baz Kötü {#sec-standart-bad}
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.
## JPEG — Fourier Bazı, 8×8 Blok {#sec-JPEG}
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})
$$
## Wavelet Bazı {#sec-wavelet}
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.
## Baz Değişimi — $\mathbf{x} = W\mathbf{c}$ {#sec-baz-degisim}
$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).
```{python}
#| label: code-baz-degisim
#| code-fold: false
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))
```
## Benzer Matrisler — $B = M^{-1} A M$ {#sec-benzer}
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).
## Bu Dersin Özeti {#sec-ozet}
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ı).
::: {.callout-important title="Tek 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.
:::
## Kontrol Soruları {#sec-sorular}
::: {.callout-note collapse="true" title="Soru 1: Hangi adım kayıpsız/kayıplı?"}
Baz değişim **kayıpsız**; threshold **kayıplı**.
:::
::: {.callout-note collapse="true" title="Soru 2: Standart baz niye kötü?"}
Piksel korelasyonunu kullanmaz; küçük katsayı üretmez.
:::
::: {.callout-note collapse="true" title="Soru 3: İyi baz iki özellik?"}
(1) Hızlı $W, W^{-1}$. (2) Az vektörle iyi temsil.
:::
::: {.callout-note collapse="true" title="Soru 4: Ortonormal $W^{-1}$?"}
$W^T$. İleri/geri aynı maliyet.
:::
::: {.callout-note collapse="true" title="Soru 5: İki bazdaki matris ilişkisi?"}
Benzer: $B = M^{-1} A M$; aynı özdeğer.
:::
## Egzersizler {#sec-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.)
## Sonraki Ders İçin Hazırlık {#sec-sonraki}
**Ders 32: Quiz 3 İncelemesi** — Ders 21-31 (özdeğer, diagonalize, $A^k$, $e^{At}$, Markov, simetrik, PD, SVD, benzerlik) toplu tekrar.
::: {.callout-warning title="Ders 32 öncesi"}
- Egzersiz 5.
- DCT/wavelet sıkıştırmayı dene.
:::
## Anahtar Kavramlar (Cheat Sheet) {#sec-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$ |
## ML Bağlantıları Özeti {#sec-ml-baglantilar}
::: {.callout-tip title="4 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.
:::
::: {.callout-important title="Tek 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**.
:::