İşte basit bir işlem:
- Görüntüdeki her bölgeye doku ölçümleri atayın.
- Aynı doku ölçüsüne sahip bitişik bölgeleri birleştirmek için bir bölge etiketleme / bağlantı algoritması (veya bölge büyütme algoritması) kullanın.
- Her bölgenin konturunu izlemek için basit bir kenar takip algoritması uygulayın.
Yasanın Doku Ölçümleri, bir görüntüdeki dokuyu belirlemek için daha eski ama yine de kullanışlı bir tekniktir ve A dokusunu görüntü boyunca B dokusundan ayırt etmeniz için yeterli olabilir. Wikipedia makalesinde "Yasalar Doku Enerji Önlemleri" bölümüne bakın:
http://en.wikipedia.org/wiki/Image_texture
İlk adım olarak, tüm doku ölçümlerini hesaplayın ve hangi özel ölçümün (örneğin Kenar veya Nokta) bir dokuyu diğerinden en kolay şekilde ayırt etmenize izin verdiğini belirleyin. (Bazı resimler gönderirseniz, bir doku ölçüsü tanımlamanıza yardımcı olabilirim.)
Yalnızca iki dokunuz varsa, A ve B varsa, bunları ön plan ve arka plan olarak değerlendirebilirsiniz ve standart bir bölge etiketleme algoritması çalışır. İşlemede neler olduğunu görmeyi kolaylaştırmak için, beyaz renge A dokuları (doku öğeleri, küçük doku parçaları) ve siyah renge B dokuları atayarak yeni bir görüntü oluşturabilirsiniz. Bölge etiketleme ve / veya kontur takip algoritmaları daha sonra bağlı beyaz ve siyah bölgeleri bulur. OpenCV'deki findContours () işlevi iyi çalışır.
http://en.wikipedia.org/wiki/Connected-component_labeling
Aynı Wikipedia makalesi hem geleneksel çoklu geçiş algoritmasını hem de tek geçiş algoritmasını içerir. Burada açıklanan tek geçiş algoritmasını uygulamadım, ama Chen ve Chang tarafından "Kontur İzleme Tekniğini Kullanan Bir Bileşen Etiketleme Algoritması" makalesinde açıklanan tek geçiş algoritması ile çalıştım. Chen ve Chang'un makalesinde, hızlı bir şekilde uygulanabilen standart bir kontur takip algoritması da açıklanmaktadır.
İkiden fazla dokuya sahipseniz, dokuları renklere yeniden eşledikten sonra bölgeleri kümelemek için bir havza veya ortalama kaydırma algoritması kullanabilirsiniz. Dokudan renge bu yeniden eşleme gerekli olmasa da, işlemin hata ayıklamasını ve anlaşılmasını kolaylaştırır.