Konvolüsyon H3–4
2B, çekirdek 180° döndürülür:
$$g(x,y)=\sum_{s=-a}^{a}\sum_{t=-b}^{b} w(s,t)\,f(x-s,\,y-t)$$
Korelasyon (cv2.filter2D) döndürmez: $g(x,y)=\sum\sum w(s,t)\,f(x+s,y+t)$. Simetrik çekirdekte ikisi aynıdır; Sobel/Prewitt gibi antisimetrik çekirdekte yalnızca işaret değişir.
1B: $y[n]=\sum_{k} h[k]\,x[n-k]$. “same” çıktı = girdi boyu; sınır: sıfır, kenar tekrarı (replicate), yansıtma (reflect101).
Maliyet: $M\!\times\!N$ görüntü, $k\!\times\!k$ çekirdek → $O(MNk^2)$; ayrılabilir çekirdekte $O(MN\cdot 2k)$.
Gauss filtresi H4, H7
$$G(x)=\frac{1}{\sqrt{2\pi}\,\sigma}\,e^{-x^2/2\sigma^2}\qquad G(x,y)=\frac{1}{2\pi\sigma^2}\,e^{-(x^2+y^2)/2\sigma^2}$$
Boyut: $2\lceil 3\sigma\rceil+1$ (≈ $6\sigma+1$). Sabit çarpan önemli değil, çünkü ağırlıklar toplamına bölünür.
| σ = 1, 5 dokunuş | 0.0545 · 0.2442 · 0.4026 · 0.2442 · 0.0545 |
| Binom 3 | [1 2 1] / 4 |
| Binom 5 | [1 4 6 4 1] / 16 |
| 3×3 | [1 2 1]ᵀ[1 2 1] / 16 = [[1 2 1],[2 4 2],[1 2 1]] / 16 |
Ayrılabilir: 2B Gauss = satırlara 1B + sütunlara 1B. σ büyüdükçe daha çok yumuşatır, kenarlar da yayılır.
Medyan ve ortalama H3, H6–7
Medyan: pencereyi sırala, ortadaki elemanı al (k eleman → indeks $\lfloor k/2\rfloor$). Doğrusal değildir, konvolüsyonla yazılamaz.
Ortalama: $y[n]=\frac{1}{k}\sum_{i=-r}^{r}x[n+i]$; 3×3 çekirdek dokuz adet $1/9$.
- Tuz-biber (darbe) → medyan: aykırı değeri atar, kenarı korur. H3: PSNR 14.94 → 35.05 dB.
- Gauss gürültüsü → ortalama / Gauss: düzgün yumuşatır. H3: 22.35 → 29.26 dB.
- Ortalama darbeyi silmez, komşulara $1/k$ oranında yayar.
- Pencere, en geniş darbe kümesinin 2 katından büyük olmalı (iki komşu darbe için 3’lük medyan yetmez, 5’lik gerekir).
Kenar çekirdekleri H4
Prewitt-x Sobel-x Laplacian-4 Laplacian-8
[-1 0 1] [-1 0 1] [ 0 1 0] [ 1 1 1]
[-1 0 1] [-2 0 2] [ 1 -4 1] [ 1 -8 1]
[-1 0 1] [-1 0 1] [ 0 1 0] [ 1 1 1]
y çekirdekleri x’in transpozudur. x çekirdeği dikey kenarları bulur.
$$|\nabla f|=\sqrt{G_x^2+G_y^2}\qquad \theta=\operatorname{atan2}(G_y,\,G_x)$$
40 birimlik basamak: Prewitt 3·40 = 120, Sobel 4·40 = 160. Sobel = $[1\,2\,1]^T[-1\,0\,1]$ (ayrılabilir).
Laplacian = 2. türev, kenar sıfır geçişinde; yön vermez, gürültüye en duyarlıdır, eşik şart.
$$\mathrm{LoG}(x,y)\propto\frac{x^2+y^2-2\sigma^2}{\sigma^4}\,e^{-(x^2+y^2)/2\sigma^2}$$
Canny (kod sorulmaz): Gauss → Sobel → yön boyunca maksimum olmayanları bastırma (NMS) → çift eşik → histerezis.
Histogram ve kontrast H2–3, H5
$$p(r_k)=\frac{n_k}{MN}\qquad s_k=\operatorname{round}\Big((L-1)\sum_{j=0}^{k}p(r_j)\Big)$$
OpenCV biçimi: $s_k=\operatorname{round}\big(255\cdot\frac{cdf(k)-cdf_{min}}{MN-cdf_{min}}\big)$.
Doğrusal ölçekleme: $g=\dfrac{f-f_{min}}{f_{max}-f_{min}}\cdot 255$ (H3: 54–149 → 0–255).
CLAHE: görüntü 8×8 karoya bölünür; her karonun histogramı clipLimit’te kesilir, taşan sayım bütün kutulara dağıtılır, karo LUT’ları çift doğrusal (bilineer) ara değerlemeyle birleştirilir.
Parlaklık/kontrast: $g=\alpha f+\beta$, sonra [0,255]’e kırp. $0.75x+20$ için sabit nokta $x=80$: altı aydınlanır, üstü kararır.
Nicemleme: $\Delta=256/L$, $Q(x)=\lfloor x/\Delta\rfloor\cdot\Delta$. 8 → 6 bit: $L=64$, $\Delta=4$, hata en fazla 3.
Renk uzayları H5
OpenCV kanal sırası BGR.
$$Y=0.299R+0.587G+0.114B$$
Sabit noktalı (OpenCV ile 0 hata): $Y=(3735B+19235G+9798R+2^{14})\gg 15$.
YCrCb: $C_r=(R-Y)\cdot0.713+128$, $C_b=(B-Y)\cdot0.564+128$.
HSV: $V=\max$, $S=\frac{V-\min}{V}$ (8 bitte ×255),
$H=60\frac{G-B}{V-\min}$ (V=R), $120+60\frac{B-R}{V-\min}$ (V=G), $240+60\frac{R-G}{V-\min}$ (V=B); negatifse +360, 8 bitte $H/2$ (0–180).
Hough dönüşümü H6
$$\rho=x\cos\theta+y\sin\theta,\qquad \theta\in[0^\circ,180^\circ),\ \rho\in[-D,\,D],\ D=\sqrt{W^2+H^2}$$
Bir nokta → (ρ,θ) düzleminde sinüs eğrisi; aynı doğrudaki noktaların eğrileri tek hücrede kesişir. $y=mx+b$ kullanılmaz: dikey doğruda $m\to\infty$.
Çember: $a=x-r\cos\varphi,\ b=y-r\sin\varphi$; oylama matrisi 3B $A[r,b,a]$. Gradyan yönü biliniyorsa her piksel yalnızca $\varphi=\theta_{grad}$ doğrultusuna oy verir.
Adımlar: kenar resmi → sin/cos tablolarını bir kez hesapla → her kenar pikseli her θ için oy → eşik → tepe bastırma.
DFT / IDFT H7
$$X[k]=\sum_{n=0}^{N-1}x[n]\,e^{-j2\pi kn/N}\qquad x[n]=\frac{1}{N}\sum_{k=0}^{N-1}X[k]\,e^{\,j2\pi kn/N}$$
$e^{-j\phi}=\cos\phi-j\sin\phi$. $N=4$: $W^0=1,\ W^1=-j,\ W^2=-1,\ W^3=j$.
Frekans ekseni $f_k=k\,f_s/N$. Genlik $A_k=\frac{2}{N}|X[k]|$ ($k\neq0$); $X[0]=\sum x[n]=N\cdot\bar{x}$ (DC). Gerçek sinyalde $X[N-k]=X[k]^*$, bu yüzden yalnızca ilk yarı çizilir.
Doğrudan DFT $O(N^2)$; radix-2 FFT $O(N\log N)$, bunun için $N=2^m$ seçilir.
2B DFT ayrılabilir: önce satırlara 1B DFT, sonra sütunlara. Gösterim: fftshift + log(1+|F|).
Frekans uzayında filtre H7
$D(u,v)$: merkeze (fftshift sonrası) uzaklık.
- İdeal LPF: $H=1$ eğer $D\le D_0$, yoksa 0. HPF $=1-$LPF (DC’yi siler, ortalama 0 olur).
- BPF: $D_0\le D\le D_1$; BRF $=1-$BPF.
- Gauss LPF: $H=e^{-D^2/2D_0^2}$; Butterworth: $H=\frac{1}{1+(D/D_0)^{2n}}$ (çınlamaz).
- İdeal maske keskin kestiği için çınlama (Gibbs) yapar: H7’de LPF merkezi 1.00 yerine 1.24.
Konvolüsyon teoremi: $f*h \Leftrightarrow F\cdot H$.
Benzerlik metrikleri H3, H7
$$\mathrm{MSE}=\frac{1}{MN}\sum(f-g)^2\qquad \mathrm{PSNR}=10\log_{10}\frac{255^2}{\mathrm{MSE}}\ \text{dB}$$
$$\mathrm{ZMNCC}=\frac{\sum(f-\bar f)(g-\bar g)}{\sqrt{\sum(f-\bar f)^2\sum(g-\bar g)^2}}\in[-1,1]$$
ZMNCC parlaklık kaymasına ve kontrast çarpanına duyarsızdır. SSIM parlaklık, kontrast ve yapıyı ayrı ayrı karşılaştırır.
Paralel işleme H1–6
- Piksel bağımsız işlemler (parlaklık, eşik) 4 çeyreğe bölünebilir; sonuç aynıdır.
- Histogram: her thread kendi yerel histogramını sayar, sonra toplanır → yarış durumu (race condition) olmaz.
- Küçük işte 4 thread yavaş olabilir (H3 görev 1: 0.34×): thread başlatma ve bölme maliyeti işten büyük.
- GPU: kopyalama maliyeti yüzünden küçük görüntüde CPU hızlı, 4K’da 1.9–3.5× GPU hızlı. Hough oylaması: kenar pikseli başına thread,
atomicAdd.