İki Göz Arası Mesafeyi (Pupila mesafesi) ölçen HALCON çalışması

Yalnızca görüntü işleme çalışmalarına örnek olması açısından, 2 göz arası mesafeyi ölçen (puppila mesafesi) basit bir HALCON kodu aşağıda verilmiştir.

Mesafe pixel cinsinden ölçülmektedir. Görüntü alan cihaz (kamera, fotoğraf makinesi vb.) sabit ise, makinanın karşısındaki insanın bulunduğu yer de sabit ise, bu durumda basit bir dönüşüm ile, pixel den milimetreye geçiş yapılabilir. (Uygulama açısından gözlerin gelmesi gereken yere, hassas bir cetvel ya da mesafesi bilinen bir işaret koyarak kaç pixele denk düştüğü bulunabilir)

Şimdi HALCON koduna geçelim :

dev_set_draw('margin')
*Ekran fontunu set edelim
set_display_font (3600, 12, 'mono', 'true', 'false')
*Resmi dosyadan yükleyelim (Normalde kameradan direk alınır)
read_image (Image, 'C:/Users/Mustafa/Desktop/m1.jpg')
* Resmin ilgilendiğimiz bölgesini (gözlerin bulunduğu yer) belirtelim
gen_rectangle1 (ROI_0, 154.969, 72, 206.531, 255.75)
reduce_domain (Image, ROI_0, ImageReduced)
*koyu renkleri seçelim (göz bebekleri, kirpikler, saçlar vb.
threshold (ImageReduced, Regions, 0, 57)
closing_circle(Regions, RegionClosing, 3.5)
*içinde daire içeren şekilleri seçelim
opening_circle(RegionClosing, RegionOpening, 6)
connection(RegionOpening, ConnectedRegions)
*Belirli bir alandan büyük nesneleri seçelim
select_shape (ConnectedRegions, SelectedRegions, 'area', 'and', 150, 500)
count_obj(SelectedRegions, Number)
if (Number = 2)
    *2 adet göz seçilmiş ise
    select_obj(SelectedRegions, Goz1, 1)
    select_obj(SelectedRegions, Goz2, 2)
    * her bir gözün tam merkezinin koordinatlarını bulalım
    area_center(Goz1, Area, Row1, Column1)
    area_center(Goz2, Area, Row2, Column2)
    *Artık sonuçları ekranda gösterelim
    dev_display(Image)
    dev_set_color('blue')
    dev_display(SelectedRegions)
    dev_set_color('green')
    disp_cross(3600, Row1, Column1, 12, 0)
    disp_cross(3600, Row2, Column2, 12, 0)
    dev_set_color('red')
    disp_arrow(3600, Row1 + 30, Column1, Row1 + 30, Column2, 1)
    disp_arrow(3600, Row1 + 30, Column2, Row1 + 30, Column1, 1)
    Dist := Column1-Column2
    disp_message (3600, Dist + ' px.', 'image', Row2+40, Column2 + 20, 'black', 'false')
endif

bu projede kullandığım insan yüzü resimlerini, http://www.uni-regensburg.de/Fakultaeten/phil_Fak_II/Psychologie/Psy_II/beautycheck/english/prototypen/prototypen.htm adresinden aldım.

orijinal resimlere oradan ulaşılabilir.

bu kodu çalıştırabilmek için, HALCON yüklü olmalıdır. En gelişmiş görüntü işleme kütüphanesi olan HALCON hakkında bilgi almak ve  ücretsiz tam versiyonu (sınırlı süreli) edinmek için bizimle irtibata geçebilirsiniz.