Tek bir Kod ile hem Siyah, hem de beyaz vidaların bulunması

HALCON komutlarından gray_range_rect ile, aynı kod kümesi işletilerek hem siyah, hem de beyaz yüzey üzerinde yer alan vidaların bulunması sağlanabilir.

Aşağıda yalın hali ile verilmiş HALCON kodu, yine aşağıda verilmiş her iki resim için de çalışmaktadır. (Resimler gerçek projeden alınmıştır. Projede Çamaşır makinası arka yüzeyindeki vidaların kontrol edilmesi istenmektedir. Makinalar Siyah, Beyaz, Gri vb. metalik ve mat renklerde olabilmektedir)

Projede kullanılan resimler (aşağıdaki resim galerisinden siyah ve beyaz makina resimlerini indirebilirsiniz)

HALCON kodu :

Burada işin büyük kısmı, gray_range_rect komutu tarafından halledilmektedir. Kodun tamamı :

dev_set_draw('margin')
*Beyaz resmi yükleyelim
read_image (Image, '024548.jpg')
gen_circle (ROI_0, 183.649, 233.052, 52.4687)
reduce_domain (Image, ROI_0, ImageReduced)
gray_range_rect (ImageReduced, ImageResult, 11, 11)
bin_threshold(ImageResult, RegionKara)
difference(ImageResult, RegionKara, RegionAk)
shape_trans(RegionAk, RegionTrans, 'convex')
dev_display(Image)
dev_display(RegionTrans)

Programın HDevelop ortamındaki görüntüsü

Kod, vidayı belirleyip, etrafını yeşil daire ile çerçevelemiştir.

Aynı kod, siyah resim için uygulandığında, yine doğru çalıştığı görülecektir.

Sonuç olarak, farklı renk skalaları için, farklı farklı threshold değerleri ve farklı kod öbekleri ile çalışmak yerine hepsi için çalışabilen bu kod, basitliğiyle avantaj sunmaktadır.