Graham scan ile görüntü üzerinde obje tespiti nasıl yapılabilir?

Görüntü işlemede şekil tespiti üzerine araştırma yapıyorum.Yaptığım araştırmalar sonucunda objelerde convex hull ı bulmam gerektiğini ve bunu bulmak için uygun yöntemlerden birinin graham scan olduğunu öğrendim.Graham scanin algoritma tanımında bu işlemin x ve y koordinatlarındaki noktalar üzerinde yapıldığını öğrendim.İlk olarak en altta bulunan y koordinatı kullanılıyor.Ben görüntü işlerken bir bitmap resminin piksellerini bir diziye atıyorum ve görüntü işleme tekniklerini bu yöntemle uyguluyorum.Mesela resmi griye çevirmek için önce görüntüdeki piksel değerlerini alıp bir dizide tutuyorum. rgb değerlerini toplayıp üçe bölüyorum ve bu değerleri yeni bir diziye atıyorum.Dizi[r.g.br.g.b,…] şeklinde ve görüntü rgb olduğu için yükseklik * genişlik * 3 uzunluğunda oluyor ama Graham Scan algoritması noktalar ile çalışıyor.Piksel değerlerini x,y koordinatlarıyla yazmam mümkün mü?Bir süredir bu konu üzerine araştırma yapıyorum ama Graham Scan in bir görüntüye uygulanması üzerine bir bilgiye ulaşamadım.Bulduğum kodlar ise sadece hazır kütüphanelerle yazılmış olanlar.Bu konuda bilgisi olan biri bir açıklama yapabilirse çok sevinirim.

Görüntü işlemede şekil tespiti için görüntü öncelikle eşik değerine göre siyah beyaz olarak renklendirilir. İstenilen şeklin de siyah ve beyaz formatı algoritma içerisinde tanimlanir. Bu sayede istenilen şekil görüntü üzerinde aranır. Convex hull dış bükey gövdeyi bulmanı sağlar. Şekil tespiti yaparken convex hull’da kullanılır. Ancak dış bükey gövdeyi bulmak şekilleri tespit etmekte yeterli olmaz. Yalnızca şeklin gövdesini bulur.
Örnek vermek gerekirse yüz tespit eden algoritmalar şu şekilde çalışır. Öncelikle yüzün bulunduğu görseli eşik değerine göre siyah beyaz olarak renklendirir. Normak bir yüz görselinde gözler daha koyu gözlerin arası ise daha aydınlık bir sekildedir. Bu yüzde 3 piksellik başta ve sonda siyah ortada ise beyaz olan grup resim üzerinde boyutunu değiştirip hareket eder. Eğer gözleri bulamazsa görüntünün siyah beyaz olması için belirlenen eşik değerini değiştirip resim üzerinde tekrar hareket eder. Gözleri bulduktan sonra ise normal yüz içerisinde bulunan diğer aydınlık ve karanlık noktalar ile yüzün tamamının bulunması sağlanır. Aynı şekilde ortası siyah etrafı beyaz olan piksel grubu da şeklin bulunduğu görüntü içerisinde dolaşarak kare bir şekli tespit edebilir.
Şekli renk farkı kullanarak tespit ettik. Bunun nedeni ise sadece görüntüyü işleyerek nesneyi tespit etmekti. Bu yöntem oldukça ilkel bir yöntem ve tam çalışma oranı da yüksek değil. Nesne tespiti için bahsettiğim görüntü üzerinde gezip istenen nesneyi tespit etme algoritması kullanılarak ve veri olarak da binlerce nesne kullanılırsa ve karşılaştırma bu şekilde yapılırken kontrolü öğrenebilen bir model üzerinde tutarsan daha yapay zeka tarzı bir sistem oluşturup nesneleri kolayca tespit edebilirsin.
Ps. Neredeyse 1 yıldır bu alan üzerinde uğraşmıyorum. Yanlış veya eksik bilgi olabilir. Yazdıklarımı okuduktan sonra araştırmanı tavsiye ederim.

Ayrıntılı olarak açıkladığın için çok teşekkür ederim. Ben bu işlemi meyveler arasından şekil bozukluğu olanları ayıklayabilmek için öğrenmek istiyorum. Bunun için hem görüntüdeki şekilleri tespit etmeye hem de boyutlarını bulmaya ihtiyacım var. Mesela şekil bozuksa ya da 10 cm den büyükse ayıkla diyebilmek için. Bir süredir araştırma yapıyorum ama sanırım bir şeyleri kaçırıyorum. Yazdıklarından anladığım kadarıyla öncelikle görüntüyü siyah beyaza çevirmem gerekiyor. Bu kısmı ve threshold belirleyip arka planı kesme işlemini gerçekleştimiştim(benim kodumda threshold sabit bir değer.).Söylediğin diğer şeyler hakkında araştırma yapmam gerekiyor. Açıkçası o konudaki bilgi eksikliğimden dolayı çok fazla fikir yürütemedim .Benim yaptığım araştırmalar sonucunda bu soruyu sordum. Görüntüdeki nesnelerin(mesela bir bant üzerinden geçirilen salatalıklar olduğunu düşünelim.) şeklini çıkarmak için en uygun yöntem graham scan kullanarak convex hull algoritması geliştirmek gibi görünüyor ama birkaç şeyi kafamda oturtamadım. Mesela graham scan algoritmasına en düşük y koordinatındaki değeri alıp başlamamız gerekiyor ve bu algoritmayı uygulamayı başarsam bile öncesinde görüntüde farklı cisimler olduğunun tespit edilmesi gerekiyor ki kenar hesaplanırken tek bir cismin kenarı belirlenmeye çalışılıyor gibi olmasın. Başta sobel kullanabileceğimi düşündüm bu aşamada ama morfolojik görüntü işleme yapılırken bu tarz algoritmalar kullanılmamış. Belki bu konuda ayrıntılı bilgisi olan biri açıklama yapabilir diye bu kadar ayrıntılı yazdım .Tekrar teşekkür ediyorum cevabın için. Bahsettiğin algoritmalar üzerine de araştırma yapacağım.@ su1eyman

1 Beğeni