Macademia'nın robotik ve mühendislik programı · ücretsiz seviye tespiti ve kişisel öğrenme yolu

3. ünite / 12

Eşikleme: sabit eşik, Otsu ve uyarlamalı eşik

Griden ikiliye: elle eşik, Otsu'nun sınıflar arası varyansı, düzensiz ışıkta uyarlamalı eşik.

Bu ünitenin sonunda

  • Sabit eşiklemeyi ve ters eşiklemeyi uygulamak
  • Otsu yönteminin hangi büyüklüğü en büyük yaptığını açıklamak
  • Düzensiz aydınlatmada uyarlamalı eşiğin neden kazandığını göstermek
  • Blok boyu ve C parametresini sonuca bakarak ayarlamak

Ders notları

Eşikleme, gri bir görüntüyü ikili (siyah-beyaz) maskeye çevirir: piksel eşikten büyükse 255, değilse 0. Konturlar, morfoloji ve sayım gibi sonraki adımların çoğu ikili görüntü ister.

Otsu

Elle eşik seçmek her görüntüde yeniden ayar demektir. Otsu histogramdaki her olası eşik t için pikselleri iki sınıfa ayırır ve sınıflar arası varyansı hesaplar; en büyük olanı seçer:

σB²(t) = ω₀(t) · ω₁(t) · (μ₀(t) − μ₁(t))²

ω sınıfların oranı, μ ortalamalarıdır. İki tepeli (nesne ve zemin) histogramda iki tepenin arasındaki vadiyi bulur. Tek tepeli ya da ışığın görüntü boyunca değiştiği durumlarda başarısız olur.

Uyarlamalı eşik

Işık soldan sağa azalıyorsa sağdaki beyaz kâğıt soldaki siyah yazıdan koyu olabilir; hiçbir tek eşik işe yaramaz. Uyarlamalı eşik her pikseli kendi komşuluğunun ortalamasıyla karşılaştırır: f(x, y) > ortalamablok(x, y) − C. Blok, yazı kalınlığından büyük olmalı; C küçük gürültünün beyaz kalmasını sağlar. Ortalama integral görüntüyle her piksel için sabit sürede hesaplanır.

Oyun alanı

Eşikleme: sabit, Otsu, uyarlamalı

Gri görüntüyü siyah-beyaza çevir. Sabit eşikte değeri sen seçersin; Otsu histogramdan sınıflar arası varyansı en büyük yapan eşiği bulur; uyarlamalı eşik her pikseli kendi komşuluğunun ortalamasıyla karşılaştırır, düzensiz aydınlatmada kazanır.

Önce: gri
Sonra: ikili maske
Gri histogram; kırmızı çizgi eşik
Otsu eşiği: 132 beyaz oranı: 0.51

Kendin dene

Düzensiz ışıktaki sayfa sahnesinde önce sabit eşikle sayfanın tamamını okunur yapmaya çalış: mümkün mü? Otsu'ya geç ve bulduğu eşiği not et; σB² eğrisinin tepesine bak. Sonra uyarlamalı eşiğe geç: blok 5, 15, 41 ve C 0, 10, 25 değerlerini dene; hangi bileşim harf aralıklarını koruyup zemini temiz bıraktı?

Kod

Python: sabit, Otsu ve uyarlamalı eşik
import cv2
import numpy as np

img = cv2.imread('girdi.png')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

_, fixed = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY)
t, otsu = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)
print('Otsu eşiği:', t)       # verilen 0 yok sayılır

blur = cv2.GaussianBlur(gray, (5, 5), 0)         # önce gürültüyü azalt
adapt = cv2.adaptiveThreshold(blur, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C,
                              cv2.THRESH_BINARY, 31, 10)   # blok 31 piksel (tek), C = 10
for name, m in [('fixed', fixed), ('otsu', otsu), ('adaptive', adapt)]:
    print(name, 'beyaz oranı:', round((m > 0).mean(), 3))
cv2.imwrite('cikti.png', np.hstack([fixed, otsu, adapt]))

Sık yapılan hatalar

  • Eşiklemeden önce bulanıklaştırmamak: gürültü her yerde küçük beyaz noktalar bırakır.
  • Uyarlamalı eşikte çift sayılı blok boyu vermek: OpenCV tek sayı ister (3, 5, 7…), aksi hâlde hata verir.
  • Otsu'yu renkli görüntüye vermek: yalnız tek kanallı uint8 görüntüde çalışır.
  • Koyu nesne açık zemindeyken THRESH_BINARY kullanıp nesnenin siyah çıkmasına şaşırmak: THRESH_BINARY_INV gerekir.

Yazılım mühendisliği bağlantısı

Eşik gibi "sihirli sayılar" sahada en çok bozulan şeydir. Otsu ve uyarlamalı eşik, sabiti veriden türeterek bu kırılganlığı azaltır.

  • Bir altın görüntü seti tut (farklı ışık, farklı kâğıt) ve her değişiklikte sonucu bunlarda karşılaştır: piksel doğruluğu ya da IoU.
  • Parametre aramasını elle değil, küçük bir ızgara taramasıyla yap ve sonucu kaydet.

Kendini sına

  1. Otsu yöntemi hangi büyüklüğü en büyük yapan eşiği seçer?

  2. Işığın görüntü boyunca güçlü biçimde değiştiği bir sayfada hangi yöntem en iyi sonuç verir?

  3. cv2.adaptiveThreshold'da C parametresi artırılınca ne olur?

  4. Açık zeminde koyu yazıyı beyaz (255) olarak almak için hangi bayrak kullanılır?

Bu üniteden sonra bitirme projesinde

  • Öneri ve test seti: Kapsam, gereksinimler (G1–G6) ve 20 fotoğraflık altın set: her fotoğrafta köşeler elle işaretlenmiş (JSON).
Esc
  • PanelAna sayfaSayfa
  • ModüllerTüm modüllerSayfa
  • ParçalarParça ansiklopedisiSayfa
  • Mühendislik yoluBüyükler için robotik: 128 parça, 7 seviyeSayfa
  • Robotik dersi (ESOF 323)Üniversite robotik dersi, 14 haftaSayfa
  • Drone dersiBüyükler için: parça, simülasyon, yazılım; 10 üniteSayfa
  • Blok atölyesiSerbest blok programlamaAraç
  • Devre laboratuvarıSanal Arduino ve devreAraç
  • Robot arenasıSanal robot sürüşüAraç
  • OyunlarBloklarla 8 öğretici oyunAraç
  • Mikro Kart atölyesiSanal LED kartı bloklarla programlaAraç
  • Robot atölyesiMikro Kart'ı robota tak, bloklarla görev yapAraç