Bulanıklaştırma ve Keskinleştirme
2026
Önceki derste görüntünün sayı dizisi olarak temsilini ve tek piksele uygulanan işlemleri ele aldık.
Bir pikselin yeni değeri, çevresindeki piksellerden nasıl hesaplanır?
Komşuluk işlemleri; gürültü azaltma, detay çıkarma ve keskinleştirmenin ortak temelidir.
Bu dersin sonunda:
Çekirdek (kernel), komşuluk değerlerinin nasıl birleştirileceğini belirleyen küçük bir matristir.
Örnek (ortalama çekirdeği): dokuz komşu, dokuz ağırlıkla çarpılıp toplanır ve tek bir çıktı değeri üretir.
\[ k=\frac{1}{9}\begin{bmatrix}1&1&1\\1&1&1\\1&1&1\end{bmatrix} \]
\(x\) sütun, \(y\) satır; \(u\) yatay ve \(v\) düşey ofset olsun. Dizi erişim sırası \(I[y,x]\) biçimindedir.
\[ g[y,x]=\sum_{v=-r}^{r}\sum_{u=-r}^{r} k[v,u]f[y+v,x+u] \]
Burada \(k[v,u]\), merkez etrafındaki ofsetlerle yazılmış çekirdek ağırlığıdır.
Her komşu kendi ağırlığıyla çarpılır; çarpımlar toplanır. OpenCV filter2D bu işlemi uygular.
Konvolüsyonda çekirdek iki eksende ters çevrilir:
\[ g[y,x]=\sum_{v=-r}^{r}\sum_{u=-r}^{r} k[v,u]f[y-v,x-u] \]
Komşuluk \(f\)
\[\begin{bmatrix}1&2&3\\4&5&6\\7&8&9\end{bmatrix}\]
Çekirdek \(k\)
\[\begin{bmatrix}1&2&0\\0&1&0\\0&0&0\end{bmatrix}\]
180° döndürülmüş \(k'\)
\[\begin{bmatrix}0&0&0\\0&1&0\\0&2&1\end{bmatrix}\]
| İşlem | Hesap | Sonuç |
|---|---|---|
| Korelasyon (\(k\)) | \(1\cdot1+2\cdot2+1\cdot5\) | 10 |
| Konvolüsyon (\(k'\)) | \(1\cdot5+2\cdot8+1\cdot9\) | 30 |
Çekirdeğin sayıları aynı; yalnızca hangi komşuyla eşleştikleri değişti.
Ne izlenmeli? Düğmelerle adım adım ilerleyin: sarı hücreler aynı çarpıma giren komşu ve ağırlıktır. Konvolüsyonu seçince çekirdek yarım tur döner ve sonuç değişir.
Görüntü dışında kalan konumlar için bir sınır kuralı gerekir:
| Kural | Görüntü dışındaki değerler |
|---|---|
| Sıfır dolgulama | 0 kabul edilir |
| Kenarı tekrarlama | En yakın sınır pikseli kullanılır |
| Yansıtma | Görüntü sınırdan yansıtılarak uzatılır |
Sıfır dolgulama, sabit ve aydınlık bir görüntünün kenarında yapay bir karanlık geçiş oluşturabilir.
Bu dersteki tam matris hesabında sıfır dolgulama kullanılır. OpenCV kodlarında sınır kuralı açıkça belirtilir.
Ne izlenmeli? Üç sınır kuralını sırayla seçin: mavi hücreler görüntünün dışından üretilir ve aynı pikselin çıktısı değişir.
Komşuluğun tamamı \(c\) değerindeyse doğrusal filtrenin çıktısı:
\[ g=c\sum_{v,u}k[v,u] \]
| Çekirdek toplamı | Sabit bölgeye etkisi | Örnek |
|---|---|---|
| 1 | Yoğunluğu korur | Normalize ortalama, Gauss, keskinleştirme |
| 0 | Çıktı sıfır olur | Laplasyen, detay çıkarma |
Bu özellik, sınır kuralının sabit bölgeyi bozmadığı komşuluklarda geçerlidir.

Kenar geçişleri ve ince doku belirgin.

Hızlı yoğunluk değişimleri bastırılmış.
Yumuşatma gürültüyü azaltabilir; kenarlar ve ince ayrıntılar da zayıflayabilir.
Bir görüntü satırında değişimin hızı frekansı belirler:
| Görüntüde | Değişim | Frekans |
|---|---|---|
| Geniş gökyüzü, düz duvar | Yavaş | Alçak |
| Kenar, ince doku, saç teli, gürültü | Hızlı | Yüksek |
Temel soru: Gürültü azalırken hangi gerçek yapılar kayboluyor?
Aynı kenar bulucu: gürültülü görüntüde sahte kenarlar, yumuşatılmış görüntüde nesne sınırları.
| Yöntem | Yeni pikselin hesabı | Tür |
|---|---|---|
| Ortalama | Sabit, eşit ağırlıklarla toplam | Doğrusal |
| Gauss | Sabit, uzaklığa bağlı ağırlıklarla toplam | Doğrusal |
| Medyan | Sıralanmış komşuluğun ortanca değeri | Doğrusal olmayan |
| Bilateral | Konum ve görüntü değerine bağlı ağırlıklarla ortalama | Doğrusal olmayan |
Medyan ve bilateral için, doğrusal filtrelerdeki gibi görüntüden bağımsız tek bir frekans cevabı tanımlanmaz.
\[ k=\frac{1}{9}\begin{bmatrix}1&1&1\\1&1&1\\1&1&1\end{bmatrix} \]
Ne izlenmeli? Dokuz değer toplanır (500), 9’a bölünür (≈55,56). Kaynak matris değişmez; sonuç ayrı bir matrise yazılır.
Ortalama filtre yakın ve uzak komşuya aynı ağırlığı verir. Yakın piksellerin birbirine daha çok benzemesini bekleriz; bu yüzden ağırlıkları bir çan eğrisiyle (Gauss dağılımı) azaltırız.
\[ k[v,u]\propto \exp\left(-\frac{u^2+v^2}{2\sigma^2}\right),\qquad \sum k[v,u]=1 \]
\[ k=\frac{1}{16}\begin{bmatrix}1&2&1\\2&4&2\\1&2&1\end{bmatrix} \]
Bu çekirdek, Gauss yumuşatmasının yaygın bir ayrık yaklaşımıdır.
\[ k=\frac{1}{4}\begin{bmatrix}1\\2\\1\end{bmatrix} \frac{1}{4}\begin{bmatrix}1&2&1\end{bmatrix} \]
İki boyutlu işlem, yatay ve düşey iki tek boyutlu filtreyle uygulanabilir.
Ne izlenmeli? Yatay ara sonuç, ardından düşey adım, sonra doğrudan 3×3 sonuç: aradaki en büyük fark 0’dır.
Ne izlenmeli? Her değer konum ağırlığıyla çarpılır: merkez 4·100, toplam 1000, 1000/16 = 62,5.
Komşuluk değerleri sıralanır; ortadaki değer çıktı olur.
\[ \begin{bmatrix}10&20&30\\20&255&40\\30&40&50\end{bmatrix} \longrightarrow [10,20,20,30,\boxed{30},40,40,50,255] \]
Merkezdeki 255 yerine 30 yazılır.
Ne izlenmeli? Komşular sırayla sıralı listeye yerleşir ve beşinci değer seçilir; toplama ve bölme yoktur.
Pikselin yeni değeri komşularının “oyuyla” belirlenir; ama her oyun değeri aynı değildir:
Kenarın öbür yanındaki komşunun değeri çok farklı olduğu için oyu neredeyse 0 sayılır: kenar korunur.
Hem yakın hem benzer yoğunluktaki komşulara daha yüksek ağırlık verir:
\[ I'(p)=\frac{\sum_{q\in\Omega_p} I(q)w(p,q)}{\sum_{q\in\Omega_p}w(p,q)} \]
\[ w(p,q)=\exp\left(-\frac{\|p-q\|^2}{2\sigma_s^2}\right) \exp\left(-\frac{(I(p)-I(q))^2}{2\sigma_r^2}\right) \]
Formül gri seviye görüntü içindir. Ağırlıklar görüntünün değerlerine bağlıdır.
\[ w_r=\exp\left(-\frac{(I(p)-I(q))^2}{2\sigma_r^2}\right) \]
Merkez \(I(p)=50\) olsun. Komşunun değeri merkezden ne kadar farklıysa ağırlığı o kadar düşer:
| Komşu \(I(q)\) | Fark | \(\sigma_r=30\) | \(\sigma_r=100\) |
|---|---|---|---|
| 50 | 0 | 1 | 1 |
| 80 | 30 | 0,61 | 0,96 |
| 110 | 60 | 0,14 | 0,84 |
| 200 | 150 | 0,0000037 (\(\approx 0\)) | 0,32 |
\(\sigma_r\) küçükse kenarın öbür yanı hesaba girmez; büyükse karışır. Bu ağırlık, konum ağırlığıyla çarpılır. Tabloda 0’a yuvarlanan değer tam sıfır değildir.
| Parametre | Etkisi |
|---|---|
| Komşuluk çapı | Değerlendirilecek alanı sınırlar |
| \(\sigma_s\) | Uzaktaki komşuların katkısını belirler |
| \(\sigma_r\) | Yoğunluk farklarına gösterilen toleransı belirler |
Ne izlenmeli? Konum ve yoğunluk ağırlıkları çarpılır: kenarın öbür yanındaki komşunun ağırlığı sıfıra yakındır, kenar korunur.
| Durum | Başlangıç adayı | Kontrol edilecek kayıp |
|---|---|---|
| Dürtüsel gürültü | Medyan | Küçük nesne ve ince çizgi kaybı |
| Eklemeli rastgele gürültü | Gauss veya ortalama | Kenar ve doku bulanıklığı |
| Kenarlar korunarak yumuşatma | Bilateral | Doku kaybı ve işlem süresi |
| Küçültme öncesi ön filtreleme | Uygun alçak geçiren filtre | Gereğinden fazla ayrıntı kaybı |
Her görüntü ve görev için tek bir en iyi filtre yoktur.
\[ \begin{bmatrix}50&50&50\\50&100&50\\50&50&50\end{bmatrix} \]
| Yöntem | Merkez piksel hesabı | Sonuç |
|---|---|---|
| Ortalama | \((8\cdot50+100)/9\) | \(55.56\ldots\) |
| Binom çekirdeği | \((12\cdot50+4\cdot100)/16\) | \(62.5\) |
| Medyan | Dokuz değerin ortancası | \(50\) |
Sonuçlar gerçek sayı olarak gösterilmiştir. Tam sayı görüntüye dönüşümde yuvarlama ve sınırlandırma gerekir.
Merkezdeki 100 gerçek bir küçük nesneyse, medyan onu siler. Bozulmuş bir piksel ise bu değişim yararlı olabilir.
Bir filtre, hangi ayrıntının anlamlı olduğunu kendiliğinden bilmez.
Görüntüleme, belge temizleme ve görsel algılama uygulamalarında yöntem seçimi, korunması gereken yapıya göre değerlendirilir.
| Filtre | Tipik kullanım |
|---|---|
| Ortalama | Basit yumuşatma, hızlı ön işleme |
| Gauss | Kenar bulmadan ve küçültmeden önce ön işleme; otonom araç kamerasında şerit ve yaya algılamadan önce gürültü azaltma |
| Medyan | Tuz ve karabiber gürültüsü: taranmış belge, bozuk sensör pikseli, tıbbi görüntü |
| Bilateral | Kenarı koruyan yumuşatma: portre rötuşunda cildi yumuşatıp göz ve dudak kenarlarını korumak |
Yumuşatma bir ön işleme adımıdır; sonraki görevi bozmadığı ayrıca doğrulanmalıdır.
Örnekler Python, NumPy, Matplotlib, OpenCV ve scikit-image kullanır. data.camera() paketle gelen test görüntüsüdür; dosya yolu gerektirmez. Kod blokları sırayla çalıştırılır.
import cv2
import numpy as np
import matplotlib.pyplot as plt
from skimage import data
clean = data.camera().astype(np.float32) # [0, 255]
rng = np.random.default_rng(42)
noisy = np.clip(clean + rng.normal(0, 15, clean.shape),
0, 255).astype(np.float32)
border = cv2.BORDER_REFLECT_101Gürültü modeli eklemeli Gauss gürültüsüdür. Bu deney, dürtüsel gürültü hakkında doğrudan sonuç vermez.
results = {
'Gürültülü': noisy,
'Ortalama': cv2.blur(noisy, (5, 5), borderType=border),
'Gauss': cv2.GaussianBlur(noisy, (5, 5), 1.0,
borderType=border),
'Medyan': cv2.medianBlur(noisy, 5),
'Bilateral': cv2.bilateralFilter(noisy, 9, 25, 3,
borderType=border),
}Medyan için OpenCV kenar tekrarlama kullanır; burada diğer filtreler için yansıtma seçilmiştir. Filtrelerin komşuluk ve parametreleri de farklıdır; sonuçlar bu ayarlara aittir.
\[ \operatorname{MSE}=\frac{1}{HW}\sum_{y,x}(f[y,x]-g[y,x])^2 \]
\[ \operatorname{PSNR}=10\log_{10}\left(\frac{255^2}{\operatorname{MSE}}\right) \]
def compute_psnr(reference, processed):
if reference.shape != processed.shape:
raise ValueError('Görüntü boyutları aynı olmalı.')
difference = (reference.astype(np.float64)
- processed.astype(np.float64))
mse = np.mean(difference ** 2)
return np.inf if mse == 0 else 10 * np.log10(255.0 ** 2 / mse)
assert np.isinf(compute_psnr(clean, clean))
assert np.isclose(compute_psnr(np.array([[0]], dtype=np.uint8),
np.array([[255]], dtype=np.uint8)), 0)
for name, image in results.items():
print(f'{name}: {compute_psnr(clean, image):.2f} dB')Dönüşüm, çıkarma ve kare alma işlemlerinden önce yapılır; uint8 taşması önlenir.
fig, axes = plt.subplots(2, 3, figsize=(12, 8))
for ax, (name, image) in zip(
axes.ravel(), [('Referans', clean), *results.items()]):
ax.imshow(image, cmap='gray', vmin=0, vmax=255)
ax.set_title(name)
ax.axis('off')
plt.tight_layout()
plt.show()Kenar, düz bölge ve ince dokular ayrı ayrı incelenir. Sayısal puan ile görsel gözlem birlikte değerlendirilir.
Ne izlenmeli? Gürültü türünü değiştirin: aynı gürültülü girdiye üç filtre uygulanır, PSNR çubukları temiz referansa yakınlığı karşılaştırır.
rng = np.random.default_rng(42)
impulse = clean.copy()
r = rng.random(clean.shape)
impulse[r < 0.025] = 0
impulse[r > 0.975] = 255
impulse_results = {
'Gürültülü': impulse,
'Gauss': cv2.GaussianBlur(impulse, (5, 5), 1.0,
borderType=border),
'Medyan': cv2.medianBlur(impulse, 5),
}
fig, axes = plt.subplots(1, 3, figsize=(12, 4))
for ax, (name, image) in zip(axes, impulse_results.items()):
print(f'{name}: {compute_psnr(clean, image):.2f} dB')
ax.imshow(image, cmap='gray', vmin=0, vmax=255)
ax.set_title(name)
ax.axis('off')
plt.tight_layout()
plt.show()Ne bakılır? Gauss aşırı değerli pikseli komşulara yayar; medyan çoğu zaman tek tek bozulmuş pikselleri siler. Önceki Gauss gürültüsü deneyindeki sıralama bu gürültüde de geçerli mi? PSNR ve görüntüyü birlikte yorumlayın.
variants = {
'3×3, sigma=0.8': cv2.GaussianBlur(noisy, (3, 3), 0.8),
'9×9, sigma=0.8': cv2.GaussianBlur(noisy, (9, 9), 0.8),
'9×9, sigma=2.0': cv2.GaussianBlur(noisy, (9, 9), 2.0),
}
fig, axes = plt.subplots(1, 3, figsize=(12, 4))
for ax, (name, image) in zip(axes, variants.items()):
ax.imshow(image, cmap='gray', vmin=0, vmax=255)
ax.set_title(name)
ax.axis('off')
plt.tight_layout()
plt.show()Ne bakılır?
settings = [(9, 10, 3), (9, 60, 3), (9, 60, 1)]
fig, axes = plt.subplots(1, 3, figsize=(12, 4))
for ax, (diameter, sigma_r, sigma_s) in zip(axes, settings):
image = cv2.bilateralFilter(noisy, diameter, sigma_r, sigma_s,
borderType=border)
ax.imshow(image, cmap='gray', vmin=0, vmax=255)
ax.set_title(f'sigma_r={sigma_r}, sigma_s={sigma_s}')
ax.axis('off')
plt.tight_layout()
plt.show()Ne bakılır? Komşuluk çapı sabittir.
\[ k=\begin{bmatrix}0&-1&0\\-1&5&-1\\0&-1&0\end{bmatrix} \]
Çekirdeğin toplamı 1’dir: sabit bir iç bölgede yoğunluk korunur.
Komşulara göre farklı olan merkez değerler vurgulanır. Bu işlem, yalnızca yüksek geçiren detay çıktısı üretmekten farklıdır.
Bir görüntü satırındaki yumuşak basamak kenarı için:
Yoğunluk artışını doğrudan “pozitif ikinci türev”, azalışını “negatif ikinci türev” olarak yorumlamak doğru değildir.
Ne izlenmeli? Sarı çizgi üç grafikte aynı konumu izler: kenarın ortasında birinci türev tepe yapar, ikinci türev sıfırdan geçer.
\[ \nabla^2f=\frac{\partial^2f}{\partial x^2}+\frac{\partial^2f}{\partial y^2} \]
Ayrık yaklaşımlar:
4 komşulu
\[L_4=\begin{bmatrix}0&1&0\\1&-4&1\\0&1&0\end{bmatrix}\]
8 komşulu (köşegenler de katılır)
\[L_8=\begin{bmatrix}1&1&1\\1&-8&1\\1&1&1\end{bmatrix}\]
Bu derste 4 komşulu \(L\) kullanılır: iki eksendeki ikinci türev tepkilerini toplar. Sabit bölgede sonuç sıfırdır; gürültüye duyarlıdır.
\[ A=\begin{bmatrix} 120&130&150&140&130\\ 120&130&150&140&130\\ 120&130&150&140&130\\ 120&120&120&120&120\\ 120&120&120&120&120 \end{bmatrix} \]
İndeksler [satır, sütun] ve sıfır tabanlıdır. Görüntü dışındaki değerler 0 kabul edilir.
Kenar: 3. sütundaki parlak 150 değerleri. Çekirdek: önceki slayttaki 4 komşulu \(L\).
\(L = \text{üst}+\text{alt}+\text{sol}+\text{sağ}-4\cdot\text{merkez}\)
| Piksel | Üst | Alt | Sol | Sağ | Merkez | Hesap | \(L\) |
|---|---|---|---|---|---|---|---|
| [0,2] | 0 (dışarısı) | 150 | 130 | 140 | 150 | \(420-600\) | −180 |
| [1,2] | 150 | 150 | 130 | 140 | 150 | \(570-600\) | −30 |
| [2,2] | 150 | 120 | 130 | 140 | 150 | \(540-600\) | −60 |
İlk satırdaki büyük negatif tepkinin bir bölümü, üst komşunun sıfır kabul edilmesinden kaynaklanır.
\[ L(A)=\begin{bmatrix} -230&-120&-180&-140&-250\\ -110&10&-30&0&-120\\ -110&0&-60&-20&-130\\ -120&10&30&20&-110\\ -240&-120&-120&-120&-240 \end{bmatrix} \]
Yalnızca parlak sütun tepki vermez. Sıfır dolgulama, görüntünün dış çerçevesinde de büyük tepkiler üretir.
Nasıl okunur? Negatif: piksel dört komşusunun ortalamasından parlak. Pozitif: daha koyu. Sıfır: komşularıyla uyumlu.
Negatif merkezli \(L\) çekirdeği için:
\[ g=f-\alpha L(f),\qquad \alpha>0 \]
\(\alpha=1\) için eşdeğer çekirdek:
\[ \delta-L=\begin{bmatrix}0&-1&0\\-1&5&-1\\0&-1&0\end{bmatrix} \]
Çekirdeğin işareti ters çevrilirse ekleme/çıkarma işareti de ters çevrilmelidir.
Ne izlenmeli? Önce işaretli Laplasyen tepkisi, sonra kaynaktan çıkarılması: g = f − α·L(f). Sınırdaki büyük değerler sıfır dolgulamadan gelir.
lap = cv2.Laplacian(clean, cv2.CV_32F, ksize=1,
borderType=cv2.BORDER_REFLECT_101)
sharp_lap = clean - 0.5 * lap
sharp_display = np.clip(sharp_lap, 0, 255).astype(np.uint8)\[ m=f-f_b,\qquad g=f+\lambda m \]
“Unsharp” adı, maskenin keskin olmayan (bulanık) bir kopyadan üretilmesinden gelir; sonuç ise daha keskindir.
Ne izlenmeli? Sırayla: kaynak, bulanık kopya, detay maskesi, sonuç. Maske kaynaktan bulanığın çıkarılmasıyla oluşur.
blurred = cv2.GaussianBlur(clean, (5, 5), 1.0,
borderType=border)
mask = clean - blurred
amount = 1.0
unsharp = clean + amount * mask
fig, axes = plt.subplots(1, 3, figsize=(12, 4))
for ax, title, image in zip(axes,
['Kaynak', 'İşaretli detay maskesi', 'Keskinleştirilmiş'],
[clean, mask, unsharp]):
if title == 'İşaretli detay maskesi':
ax.imshow(image, cmap='gray', vmin=-50, vmax=50)
else:
ax.imshow(np.clip(image, 0, 255), cmap='gray', vmin=0, vmax=255)
ax.set_title(title)
ax.axis('off')
plt.tight_layout()
plt.show()Bu derste kullanılan tanım:
\[ g=Af-f_b=(A-1)f+(f-f_b) \]
| \(A\) | Sonuç |
|---|---|
| 1 | Yalnızca detay maskesi \(f-f_b\) |
| 2 | \(\lambda=1\) Unsharp sonucu \(2f-f_b\) |
| \(>2\) | Kaynak katkısı ve sabit bölge yoğunluğu da artar |
High-Boost teriminin farklı kullanımları vardır. Karşılaştırmada ad yerine formül ve katsayılar esas alınır.
\(f=f_b=c\) olan bir bölgede:
\[ \begin{aligned} \text{Unsharp: }&c+\lambda(c-c)=c\\ \text{Bu High-Boost tanımı: }&Ac-c=(A-1)c \end{aligned} \]
Unsharp sabit bölgeyi korur. \(Af-f_b\) ise \(A=2\) dışında sabit bölgenin yoğunluğunu değiştirir. Parlaklık değişimi, keskinlik artışıyla aynı şey değildir.
Ne izlenmeli? A kazancını değiştirin ve sabit bölgenin parlaklığına bakın: A = 2 dışında yoğunluk değişir.
fig, axes = plt.subplots(1, 3, figsize=(12, 4))
for ax, gain in zip(axes, [1.0, 2.0, 2.5]):
output = gain * clean - blurred
if gain == 1.0:
ax.imshow(output, cmap='gray', vmin=-50, vmax=50)
ax.set_title('A=1: detay maskesi (±50 ölçeği)')
else:
ax.imshow(np.clip(output, 0, 255), cmap='gray', vmin=0, vmax=255)
ax.set_title(f'A={gain}: çıktı (0–255 ölçeği)')
ax.axis('off')
plt.tight_layout()
plt.show()Her çıktıyı ayrı ayrı min–maks normalize etmek, parlaklık ve kazanç farklarını gizleyebilir. Görüntüleme ölçekleri açıkça belirtilmiştir.
Ne izlenmeli? λ’yı artırın: kenar çevresinde halo, 0–255 dışına taşan değerlerde clipping oluşur; gürültü de güçlenir.
| Alan | Amaç |
|---|---|
| Tıbbi görüntüleme | Sınır ve lezyon belirginleştirme (yardımcı; tanı yerine geçmez) |
| Uydu görüntüleri | Yüzey ayrıntılarını öne çıkarma |
| OCR ve belge | Yazı kenarlarını netleştirme |
| Astronomi | Ham görüntülerde yıldız ve gaz bulutu kenarlarını öne çıkarma |
| Genel iyileştirme | Algılanan keskinliği artırma |
Daha keskin görünmek, ölçüm ya da tanıma doğruluğunun arttığı anlamına gelmez.
| Kavram | Yumuşatma | Keskinleştirme |
|---|---|---|
| Amaç | Gürültü azaltma, ayrıntıları sadeleştirme | Kenar ve ayrıntıları öne çıkarma |
| Frekans | Alçak geçiren: hızlı değişimi bastırır | Hızlı değişimi (detay) çıkarıp ekler |
| Temel mantık | Pikseli komşularına yaklaştırma | Pikselin komşularından farkını vurgulama |
| Örnek yöntemler | Ortalama, Gauss, Medyan, Bilateral | Laplasyen, Unsharp, High-Boost |
| Dikkat | Gerçek ayrıntı da silinebilir | Gürültü, halo ve clipping artabilir |
Keskinleştirme yumuşatmanın matematiksel tersi değildir; kaybolan bilgiyi geri getirmez.
| İşlem | Temel çıktı | Sabit iç bölge |
|---|---|---|
| Normalize doğrusal yumuşatma | Yerel ağırlıklı ortalama | Korunur |
| Medyan / bilateral | Doğrusal olmayan yumuşatma | Korunur |
| Laplasyen | İşaretli detay tepkisi | Sıfır |
| Unsharp | Kaynak + ölçeklenmiş detay | Korunur |
| \(Af-f_b\) | Kazancı değiştirilmiş kaynak + detay | \((A-1)c\) |
Yumuşatma, detay çıkarma ve keskinleştirme farklı amaçlara hizmet eder.
Yumuşatma gürültü ile ayrıntı arasında bir denge kurar. Türevler yoğunluk değişimlerine tepki verir; keskinleştirme bu tepkileri kaynak görüntüye geri ekler.
Bir sonraki soru: Bu değişimlerden nesne sınırlarını temsil eden bir kenar haritası nasıl elde edilir?
Bilgisayarla Görü – OMÜ | 🏠