5.12. İkili eşikleme¶
Birçok görüntü işleme işlem hattı her pikselle ilgili bir soruya indirgenir: bu parlaklık “ön plan” anlamına gelen aralığın içinde mi? Bu renk, uygulamanın izlediği işaretleyici olacak kadar kırmızıya yakın mı? Bu piksel, işlem hattının bir sonraki aşamasının bakması gereken aday kümesinin bir parçası mı? Eşikleme, bu soruları her konumda ikili bir yanıta dönüştüren işlemdir – piksel eşleşiyorsa açık, eşleşmiyorsa kapalı – ve tüm görüntüyü işlem hattının geri kalanının üzerinde çalışabileceği bir maskeye indirger.
5.12.1. binary metodu¶
binary() metodu bu sınıflandırmayı her piksel üzerinde tek bir çağrıda çalıştırır. Bir piksel listesi eşik aralığı alır – bir pikselin “açık” sayılması için eşleşebileceği koşullar – ve görüntüyü, aralıklardan en az biriyle eşleşen her pikseli formatın en yüksek değerine, eşleşmeyen her pikseli ise sıfıra ayarlayacak şekilde yeniden yazar. Sonuç, işlem hattının geri kalanının doğrudan kullanabileceği ikili maskedir.
En basit biçiminde, eşik listesinde tek bir aralık bulunur ve çağrı o aralıktaki piksellerin bir maskesini döndürür:
img.binary([(120, 255)])
binary‘yi güçlü kılan şey liste biçimidir. İki renkli işaretleyiciyi ya da bir parlaklık aralığı artı yalıtılmış bir doygunluk tepesini izlemek isteyen bir işlem hattı, her iki aralığı da aynı listede iletir ve tüm eşleşmeleri kapsayan tek bir çıktı maskesi elde eder.
Eşikleme, sürekli değerli bir görüntüyü ikili bir maskeye dönüştürür: eşik aralığının içindeki her piksel formatın en yüksek değerine, dışındaki her piksel sıfıra dönüşür.¶
5.12.2. Gri tonlama demeti¶
Gri tonlama bir görüntü için, eşik listesindeki her giriş, kapsayıcı bir parlaklık aralığını tanımlayan iki öğeli bir (lo, hi) demetidir. lo ile hi arasındaki (her ikisi dahil) değerlere sahip pikseller eşleşir; bu aralığın dışındaki her şey eşleşmez. Doğal örüntüler basittir:
(0, 60)koyu pikselleri eşleştirir – siyahtan koyu griye kadar her şey.(180, 255)parlak pikselleri eşleştirir – açık griden beyaza kadar her şey.(100, 160)orta gri pikselleri eşleştirir – parlaklık aralığının ortasında bir bant.
Bir demetin içindeki iki değerin sırası önemli değildir; lo, hi‘den büyükse metot bunları dahili olarak değiştirir, böylece (60, 0) da (0, 60) ile aynı şekilde çalışır.
5.12.3. Renk için LAB demeti¶
RGB565 bir görüntü için, her giriş, doğrudan kırmızı, yeşil ve maviyle değil, LAB renk uzayında kapsayıcı bir aralığı tanımlayan altı öğeli bir (l_lo, l_hi, a_lo, a_hi, b_lo, b_hi) demetidir. Eşikler, her biri pikselin o kanaldaki değeriyle karşılaştırılan L (açıklık), A (yeşilden kırmızıya kromatik eksen) ve B (maviden sarıya kromatik eksen) değerleridir.
RGB’yi doğrudan eşiklemek yerine LAB üzerinden gitmenin nedeni, LAB renk uzayının etrafında tasarlandığı özelliktir: LAB, açıklığı kromadan ayırır. Aynı rengi farklı parlaklıklarda gösteren iki piksel farklı L değerlerinde, ancak kabaca aynı A ve B değerlerinde sonuçlanır. Bu ayrım, eşik aralıklarının bir rengi A ve B eksenlerindeki konumuyla tanımlamasına ve o rengi gölgeden parlak noktaya kadar her parlaklıkta kabul etmek için L aralığını sonuna kadar açık bırakmasına olanak tanır. RGB tabanlı bir eşik bunu yapamaz – aydınlatmadaki herhangi bir değişiklik R, G, B değerlerinin üçünü de aynı anda kaydırır ve RGB eşikleri üzerine kurulu bir izleyici, bir bulut güneşin önünden geçtiği ilk anda çöker.
Pratik örüntü: uygulamanın izlediği rengi tanımlayan A ve B aralıklarını seçin ve uygulama özellikle renge ek olarak parlaklığa da eşik uygulamak istemediği sürece L aralığını geniş bırakın – genellikle herhangi bir parlaklığı kabul etmek için (0, 100).
Altıdan az değere sahip demetler için, eksik bileşenler varsayılan olarak maksimum aralığa ayarlanır (o eksende kısıtlama yok). Dolayısıyla bir RGB565 eşik listesindeki iki öğeli (l_lo, l_hi) demeti yalnızca açıklığa eşik uygular ve her renkle eşleşir.
Not
Gerçekten sonuna kadar açık bir L aralığının alt uçta bir tuzağı vardır. Açıklık sıfıra doğru düştükçe her renk siyaha yakınsar, A ve B değerleri sıfıra doğru çöker ve gürültü baskın hale gelir – böylece koyu pikseller A ve B aralıklarına kayıp hedef renk olarak izlenebilir. Sahnenin siyah bölgeleri eşleşme olarak yanıyorsa, bunlar elenene kadar l_lo‘yu yükseltin.
5.12.4. Bayraklar¶
Üç anahtar sözcük argümanı çıktıyı kontrol eder:
invert=Truesonucu tersine çevirir. Eşleşecek olan her piksel sıfır olur ve sıfır olacak her piksel en yüksek değer olur. Ön planı, ne olmadığıyla tanımlamanın doğal yol olduğu durumlarda kullanışlıdır.zero=Trueçalışma kipini değiştirir: eşleşen pikseller sıfırlanır ve eşleşmeyen pikseller orijinal değerlerini korur. Amaç görüntüyü onların ikili maskesine indirgemek yerine, eşleşen pikselleri görüntüden silmek olduğunda bunu kullanın.to_bitmap=True, kaynağın mevcut formatının üzerine yazmak yerine sonucu birBINARYgörüntü olarak döndürür. Piksel başına bir bitlik sonuç, sonraki maske argümanlarının doğrudan kabul ettiği şeydir ve bu dönüşüm genellikle tam formatlı bir maskeyi taşımanın bellek baskısından tasarruf sağlar.
Maske ve ROI, yüzeyin geri kalanıyla aynı kuralı izler: bir roi dikdörtgeni işlemi bir alt alanla, bir mask görüntüsü ise işlemi rastgele bir konum örüntüsüyle kapsamlandırır.
5.12.5. Varsayılan olarak yerinde¶
Aritmetik işlemler gibi, binary da varsayılan olarak yerinde çalışır: kaynak görüntünün pikselleri ikili çıktıyla üzerine yazılır ve çağrıdan sonra orijinal değerler kaybolur. to_bitmap=True biçimi, kaynağın korunması ve çıktının yeni ayrılmış bir BINARY görüntü olması gerektiğinde alternatiftir. Yeni bir arabellekte aynı formatlı bir sonuç için copy=True biçimi de kabul edilir.