Defne Yaprağı Ayrıştırmada Matematiksel Yaklaşım

Daha önceki blog kayıtlarımızda sıklıkla bahsettiğimiz Hatalı Defne Yaprağı Ayrıştırma Projemize tamamen matematiksel yöntemlerle çalışan, daha hızlı ve daha güvenilir sonuçlar veren yeni bir yaklaşım ekledik.

Matematikte Saddle Point (Semer Noktası) olarak bilinen fonksiyonun,  defne yapraklarına uyarlanması temelinde yapılan işlemler, daha kısa sürede ve daha hızlı sonuçlar vermektedir. Görüntü işleme fonksiyonları ile matematiksel fonksiyonların eş zamanlı olarak kullanıldığı bu yeni yaklaşımda, işlemci (cpu) hızı artırıldıkça, doğru orantılı olarak işlemin sonlanma hızı da artmaktadır. (Salt görüntü işleme fonksiyonları kullanılsaydı, işlemci hızının artışı yine olumlu sonuçlar verecekti fakat işlemcide geçmeyen süreler – kameralardan görüntünün alınması, veriyolunda kaybedilen zamanlar, hafızaya okuma/yazma süreleri vb. – yüzünden beklenen hız artışı daha sınırlı kalacaktı.)

 

 

 

 

 

 

 

Yukarıdaki resimde, sağlam ve hatalı yaprağın, üst yarısının kenar çizgileri gösterilmiştir. İdeal bir yaprakta (hatasız) semer noktası (saddle point) hiç olmamalıdır.

Analiz Yöntemi :

  1. Yaprak yatay düzlem ile sıfır derece açı yapacak şekilde döndürülür
  2. Yaprağın alt ve üst bölgelerinin konturları (contours) çıkartılır
  3. Çıkartılan konturlara ait, satır-sütun değerleri fonksiyonel olarak çıkartılır
  4. Oluşturulan 2 boyutlu fonksiyonda semer noktaları (saddle points) aranır
  5. Semer noktaları derinliği belirlenen değerlerden fazla ise yaprak hatalıdır
  6. Yaprak yatay eksenle 90 derece açı yapacak şekilde döndürülür (Sol ve Sağ tarafı baş aşağı gelecek şekilde)
  7. Tüm kontroller yeniden yapılır.

Tüm bu işlemlerde kullanılan belli başlı HALCON operatörleri :

  • Contour processing (edge-detection, smooth contours, union contours…)
  • 1d fonksiyonel işlemleri (create_funct_1d_pairs, derivate_funct_1d  …)
  • Semer Noktası işlemleri (saddle_points_sub_pix …)

Bu kez çalışan HALCON kodu örneği yerine kullanılan fonksiyonları ve yöntemi açıkladım. Konuyla ilgilenenlerin olması ve ulaşması durumunda çalışan gerçek kodlar ile daha detaylı paylaşımlarda bulunabiliriz.

 

Akıllı Şekil Tamamlama

Görüntü işleme uygulamaları, olabildiğince net ve düzgün görüntülerle çalışmayı sever. Bizim gibi, görüntü işleme ile endüstriyel ortamlarda çalışanlar, kaliteli ve bir görüntüyü garanti etmek için sistemin kurulumuna aşırı önem gösterirler. Gece/gündüz, yaz-kış, 24 saat çalışacak uygulamalar da alınan her görüntünün yeterli kalitede olması için aydınlatma ve çevre şartlarından izolasyon işlemleri özenle yerine getirilir. Her şeye rağmen, alınan tüm görüntüler beklenen kaliteyi sağlamayabilir.

İşte bu noktada, iyi bir görüntü işleme yazılımından beklentiler yükselir. Yazılım, değişen fotoğraf kalitesinde bile en iyi sonucu verebilmeli. “Akıllı şekil tamamlama”, kenar çizgileri eksik olarak alınmış fotoğrafların, kenar çizgilerini olması gerektiği gibi tamamlayan bir algoritmadır. Bol miktarda uygulama alanı mevcuttur. Örneğin bir önceki makalede, Defne Yapraklarının kalite kontrolünü incelemiştik. Bir yaprağın kenar çizgilerinin düzgün olup olmadığını anlamak için bu algoritma uygulanabilir.

Yaprak resmine benzer bu şekli Paint ile elle çizdim. Sonra kenarlarından bazı yerleri rastgele silerek, bozulma oluşturdum. Amacım bir algoritma ile bu boş yerleri tamamlayabilmek.

HALCON kodu aşağıdaki gibidir.

read_image (Image, 'C:/Users/Mustafa/Desktop/Yaprak.jpg')
edges_sub_pix (Image, Edges, 'canny', 1, 20, 40)
regress_contours_xld(Edges, RegressContours, 'no', 1)
union_collinear_contours_xld (RegressContours, UnionContours, 30, 10, 10, 0.2, 'attr_keep')

 

Bu 3 satırlık basit HALCON kodu çalıştırıldığında,  elde edilecek sonuç :

Soldaki gibidir. Bu çalışma da, contour processing yapılarak eksikliğin tamamlanması gösterilmiştir. close_edges, region_growing, sobel_amp gibi komutlar ve daha ciddi yapılanmalarla, oldukça karmaşık eksiklikler bile düzgün olarak tamamlanabilmektedir.

 

 

Defne Yaprağı Ayıklama Kontrolü

Ülkemizde bol miktarda yetişen defne yapraklarının, ayıklanıp sağlam olanlarının paketlenmesi ile birlikte, ekonomik değeri yüksek bir ürüne dönüşmesi mümkündür. Burada asıl maliyet, sağlam yaprakların bozuk (kırık, ezik, renksiz vb.) yapraklardan ayıklanmasını sağlamaktır. Üretici ya da toplayıcılardan çuvallarla getirilen yaprak, geliştirdiğimiz bir görüntü işleme uygulaması ile seri ve hızlı olarak ayıklanmaktadır.

Mavis olarak, defne yaprağı ayıklama projemizde, her tür yaprak hatalarına göre çalışan uygulamaya sahibiz. Binlerce yaprakla test edilmiş uygulamamız, en basit hatalardan en karmaşık hatalara kadar algılayabilmektedir. Bu yazı dizimizin devam eden sayfalarında, tüm sistemin çalışması detaylı olarak anlatılacaktır.

Sistem 2 bileşenden oluşmaktadır.

  1. Yaprakların konveyör üzerine tek tek dizilmesini sağlayan otomasyon sistemi
  2. Yaprakların sağlam olup olmadığını denetleyen kameralı kontrol sistemi.

Bu iki sistemden birincisi bir çok farklı şekillerde uyarlanabilir. Pnömatik döner borularla yaprakların hava ile emilmesi ve konveyör üzerine koyulması, aynı anda çok sayıda hava kanalcığının yaprakları emmesi ve ilerleyip konveyör üzerine bırakması vb. farklı alternatifler olabilir. Mavis olarak işin bu yanı ile fazla ilgilenmemekle birlikte, halihazırda çalışan otomasyon çözümlerine de sahibiz.

İşin yaprak ayrıştırma algoritması (sağlam ve bozuk yaprakların ayırt edilmesi) aşağıdaki şekilde çalışmaktadır.

1. Konveyör üzerinde giden yaprakların görüntüsünün alınması

Yapraklar hareket halinde olacağı için, olabildiğince kısa sürede fotoğraf almak gerekmektedir. Bu yüzden pozlama süresini en azda tutarak, güçlü bir aydınlatma kullanmak gerekmektedir. Yapraklar geniş bir yüzeye dağılmış ise fluoresan aydınlatma, dar bir kanaldan geliyor ise led aydınlatma kullanılabilir.

(Fluoresan aydınlatmanın daha uygun olacağı durum. Yüzey geniş ve tüm yüzeyi aydınlatmak fluoresan ile daha homojen olabilir)

(Yapraklar ardışıl bir kanalcıklardan gelmektedir ve tüm yüzey yerine belirli bir kanal aydınlatılabilir. Dolayısıyla power led kullanılabilir)

2. Alınan Görüntünün işlenmesi

Sistemin en hassas noktası burasıdır. Görüntü işleme uygulaması ile yaprakların sağlam ya da bozuk olup olmadığına karar vermek gerekmektedir.

2.1. Alınan Görüntüdeki Tüm Yaprakların Seçilmesi

Yeterince hızlı çalışan bir sistemde her bir fotoğraf karesine birden fazla yaprak girebilir. Bu durumda her bir yaprağın tek tek ayrıştırılması gerekmektedir. HALCON görüntü işleme kütüphanesi ile her bir yaprak ayrı bir nesne olarak ele alınır ve her bii için aşağıdaki kontroller tek tek sınanır

2.1.1 İçinde Delik bulunan yaprakların elenmesi

Burada kullanıcı yaprak içindeki deliği eleyebilmek için sabir bir rakam (3 mm2 gibi) ya da oran (%2) belirleyebilmektedir. Kullanıcı tarafından belirlenen değerden daha büyük bir delik belirlenmişse yaprak elenir.

2.1.2 Sağlam Yaprağa çok yakın hatalı yaprak varsa elenmesi

Bazı durumlarda sağlam yaprağı sistem ayrıştırırken, sağlam yaprağın çok yakınında bozuk yaprak varsa, o yaprak ta sağlam sepetine gidebilmektedir. Bunu önlemek için sağlam yaprağa çok yakın hatalı yaprak varsa her ikisinin de elenmesi istenebilir (Ne de olsa hatalı yaprakları sistemden 2. kez geçirmek mümkün)

2.1.3 Bir tarafı eksik yaprağın elenmesi

Mavis tarafından matematiksel modellemeye göre geliştirilen görüntü işleme kodu, yaprağın silüetini akıllı olarak tamamlayıp, herhangi bir yerde silüetten farklılık varsa (eksiklik, kopukluk, kırıklık, içe katlanma vb.) yaprağın bozuk olarak elenmesini sağlamaktadır.