5.8. Flood fill ve tespit glifleri¶
Bu bölümün başındaki geometrik ilkel öğeler, işaretleri uygulamanın zaten bildiği konumlara koyar. Görüntü bileşimi bir görüntüyü diğerinin üzerine yerleştirir. Çizim yöntemlerinden oluşan küçük bir son grup ise farklı bir şey yapar: biçimi görüntüde zaten var olana ya da önceki bir algoritmanın görüntüde bulduğuna bağlı olan işaretler koyar.
5.8.1. Flood fill¶
flood_fill() tek bir pikselden – tohumdan (seed) – başlar ve dışa doğru büyür, tohuma yeterince benzeyen ve diğer benzer piksellerden oluşan bir zincir aracılığıyla ona bağlı olan her pikseli boyar. Sonuç, sınırı çağrıya iletilen herhangi bir şeyle değil, görüntünün kendisiyle belirlenen doldurulmuş bir bölgedir.
En basit biçimi tohum koordinatını ve dolgu için bir renk alır:
img.flood_fill(x=160, y=120, color=(0, 255, 0))
İki eşik parametresi dolgunun ne kadar agresif büyüyeceğini denetler. seed_threshold (0.0 ile 1.0 arası normalleştirilmiş bir kesir), bir pikselin orijinal tohumun değerinden ne kadar farklı olabileceğini ve yine de dahil edilebileceğini belirler. floating_threshold, her zaten dahil edilmiş komşudan ne kadar farklı olabileceğini belirler. İki eşik birlikte çalışır: cömert bir floating_threshold dolgunun görüntü boyunca bir gradyanı takip etmesini sağlar, sıkı bir seed_threshold ise o gradyan boyunca bile dolgunun tohum değerinden çok uzaklaşmasını engeller.
Birkaç bayrak sonucu daha da iyileştirir:
invert=True, eşleşen piksellerin kendileri yerine eşleşmeyen her pikseli – eşleşen bölgenin tümleyenini – boyar.clear_background=True, dolgu bölgesinin dışındaki her pikseli sıfırlar. Yalnızca doldurulmuş bölgeyi bir maske olarak çıkarmak için yararlıdır.maskanahtar sözcüğü her zamanki anlamına sahiptir: maskede kapalı olan pikseller, dolgunun aksi takdirde onlara ulaşıp ulaşamayacağına bakılmaksızın olduğu gibi bırakılır.
Flood fill iki desen için en yararlıdır. İlki, bir bölge tespit edicisinin bulduğunu, tespit edilen bölgeyi belirgin bir renkle doldurarak çerçevenin geri kalanına karşı öne çıkması için görselleştirmektir. İkincisi, clear_background=True ile bölge içindeki bilinen bir tohumu birleştirip elde edilen görüntüyü alt aşama işlemleri için bir maske olarak okuyarak bölgenin kendisini çıkarmaktır.
5.8.2. Tespit sonuçlarını çizmek¶
Görüntü işleme algoritmaları genellikle hem bir konumu hem de bazı ek yapıları taşıyan sonuç nesneleri döndürür: bir yönelime sahip bir anahtar nokta, sınırlayıcı kutusundan farklı bir ağırlık merkezi olan bir yüz tespiti, dört köşe noktası olan bir AprilTag. Bunları iyi çizmek – yalnızca bir sınırlayıcı kutu değil, yapıyı yakalayan bir glifle – yeterince yinelenen bir desendir ki modül bunun için iki yardımcı sunar.
draw_keypoints(), bir öznitelik çıkarıcı tarafından döndürülen bir anahtar nokta tanımlayıcısını veya düz bir (x, y, rotation) üçlüleri listesini alır ve her noktada küçük bir glif çizer. Glif hem konumu hem de yönelimi taşır: nokta etrafında bir daire ve dönüşü belirten, merkezden çıkan bir çizgi. Bu tek çağrılık görselleştirme, bir anahtar nokta çıkarıcısının uygulamanın beklediği yönelimleri döndürdüğünden emin olmanın en kolay yoludur.
draw_detection(), altı elemanlı bir (rx, ry, rw, rh, cx, cy) demeti – sınırlayıcı dikdörtgen artı ayrı olarak bildirilen bir ağırlık merkezi – alır ve ikisini birden çizer: sınırlayıcı kutu etrafında bir dikdörtgen, ağırlık merkezinde bir artı ve isteğe bağlı olarak dikdörtgenin köşesinde bir metin etiketi. Bu biçim, ağırlık merkezinin sınırlayıcı kutunun merkezinden daha hassas bir konum olduğu durumlarda bir sinir ağı tespitinin veya bir şablon izleyicisinin tipik olarak bildirdiği şeyle eşleşir.
Her iki glif yöntemi de bu bölümün başındaki geometrik ilkel öğelerin üzerindeki kolaylık katmanlarıdır. Bir uygulama, doğrudan draw_rectangle(), draw_circle(), draw_cross() ve draw_string() çağırarak aynı görselleştirmeyi her zaman yeniden üretebilir; glif yöntemleri yalnızca tekrar tekrar ortaya çıkan desenler için kayıt tutma işini ortadan kaldırır.
Bilinen geometri için geometrik ilkel öğeler, bindirmeler için görüntü bileşimi, görüntüden türetilen bölgeler için flood fill ve standart görselleştirme desenleri için tespit glifleri ile çizim araç takımı tamamlanmıştır. Bir uygulamanın algoritma çıktısını görünür kılmak için ihtiyaç duyduğu her şeyin, onu oraya koyan bir yöntemi yüzeyde mevcuttur.