5

Görüntü segmentasyonunda yeniyim, ancak makine öğrenimi sınıflandırıcı için bir veritabanı almak için bunu yapmalıyım.Zorlu görüntü segmentasyonu: arka plan ve nesneler benzer

Cow with a rectangle

Mesleğim ön planda inekleri tespit etmektir, ya da en azından herhangi inek hiç:

Esasen bu resme benzer bir video var. Bir tıkanıklık sorunu olduğunu anlıyorum, ancak bir başlangıç ​​için, etrafındaki kırmızı bir dikdörtgenin (elle çizilmiş) olduğu gibi, yalnız bir ineği doğru bir şekilde bölmek istiyorum.

Megasteak

: bu gibi daha az zorlayıcı sorunlar olarak

, I ya da arka plan nesnenin ya da (255,255,255) için olur (0,0,0) olup, her bir piksel için bir eşik ekleyerek ayırt

Daha sonra, sınıfları almak ve yeterince büyük 'blobs' için dikdörtgen elde etmek için pikselleri aynı değerlerle etiketlerim. nesneler ve arka plan olarak çalışmayacaktır Bu yaklaşım yukarıdaki resimde İçin

benzerdir + vb gölgeler, yan aydınlatma bir yeri vardır, bu yüzden bu yaklaşım nasıl emin değilim. Herhangi bir öneri kabul edilir.

+0

Eğer bir kenar detektörü kullanmaya düşündün mü? –

+1

semantik segmentasyona bakmanız gerekiyor – Shai

+0

Çok zor problem. Büyük bir eğitim sistemi oluşturmak ve derin öğrenmeyi kullanmak için çok sayıda imginiz var mı? –

cevap

0

İki fotoğraf çekmeyi denerdim. İnekleri olmayan bir 'statik' arka planın bir fotoğrafı, daha sonra bir inek (ler) ile ikinci bir fotoğraf. O zaman bu iki görüntüyü çıkarabilirsiniz. Ben python ile çok aşina değilim ama imagemagick görüntüleri kolayca fark edebilir (http://www.imagemagick.org/Usage/compare/). İdeal olarak 'farklı' görüntü, inek (ler) i izole edecektir. Oradan ... yardımcı

Umut fantezi olsun ve vb çeşitli kenar algılama algoritmaları deneyebilirsiniz.

1

Ben bu eski bir iplik farkındayım ama bu gibi sorunlar için bir yaklaşım önermek istiyorum. çimenli arkaplan inekten farklı bir dokuya sahiptir olarak

Sen, bir doku bazlı segmentasyon deneyebilirsiniz.

bir görüntü için doku enerji özellikleri Yasalarının tekniğine uygun olarak belirlenmiştir this link bir göz atın. Python'da yasa tekniğinin uygulanması aşağıdadır. Görüntüde farklı özellikleri ayıklamak için kullanılan 2B çekirdeği, örneğin kenarları, dalgaları, lekeleri ve bunların kombinasyonlarını tanımlayarak çalışır. Aşağıdaki işlev, doku özelliklerinin çıkarılabildiği 9 görüntüyü döndürür.

def laws(array): 

    # Define the 1D kernels 
    L5 = np.array([1,4,6,4,1]) # level 
    E5 = np.array([-1,-2,0,2,1]) # edge 
    S5 = np.array([-1,0,2,0,-1]) # spot 
    R5 = np.array([1,-4,6,-4,1]) # ripples 

    # Generate 2D kernels 
    L5E5 = np.outer(L5,E5) 
    E5L5 = np.outer(E5,L5) 

    L5R5 = np.outer(L5,R5) 
    R5L5 = np.outer(R5,L5) 

    E5S5 = np.outer(E5,S5) 
    S5E5 = np.outer(S5,E5) 

    S5S5 = np.outer(S5,S5) 

    R5R5 = np.outer(R5,R5) 

    L5S5 = np.outer(L5,S5) 
    S5L5 = np.outer(S5,L5) 

    E5E5 = np.outer(E5,E5) 

    E5R5 = np.outer(E5,R5) 
    R5E5 = np.outer(R5,E5) 

    S5R5 = np.outer(S5,R5) 
    R5S5 = np.outer(R5,S5) 


    return (0.5*(correlate(array, L5E5) + correlate(array, E5L5)), \ 
      0.5*(correlate(array, L5R5) + correlate(array, R5L5)), \ 
      0.5*(correlate(array, E5S5) + correlate(array, S5E5)), \ 
      correlate(array, S5S5), \ 
      correlate(array, R5R5), \ 
      0.5*(correlate(array, L5S5) + correlate(array, S5L5)), \ 
      correlate(array, E5E5), \ 
      0.5*(correlate(array, E5R5) + correlate(array, R5E5)), \ 
      0.5*(correlate(array, R5S5) + correlate(array, S5R5))) 
+0

Yıllardır bunları görmüyorum ... –

İlgili konular