uEye 3.60 (Yeni versiyon)

ids imaging firmasının uEye kameraları için geliştirdiği sürücü ve arayüz programları yeni versiyonu 3.60 yayımlandı. http://www.ueyesetup.com adresinden indirilebilir.

uEye Demo programında değişen görsel arabirim ve ilave birkaç özellik göze çarpmaktadır (Profile desteği, customization, auto contrast vb.)

uEye, programcılar için güçlü bir SDK sunmaktadır. Hemen hemen tüm görüntü işleme arabirimleri (3rd parti geliştiriciler dahil) desteklenmektedir. ActiveX, DirectShow,  GeniCAM, Twain, HALCON, CVB, LabView, Cognex, NeuroCheck için hazır API desteği hazır olarak gelmektedir. iDS, 64 bit Windows ve Linux için API geliştirmelerine devam ettiğini duyuruyor. Dolayısıyla kısa süre içinde 64 bit uygulamaları da bekleyebiliriz. (64 bit sürücü dosyaları halihazırda mevcut)

uEye SDK, HALCON, Cognex, MIL vb. gelişmiş bir arabirim kullanmak yerine, kendi görüntü görüntü işleme kütüphanesini geliştirmek isteyen geliştiriciler için eşsiz bir kaynak sunmaktadır. Hem windows hem de Linux işletim sistemini tam desteklemektedir. VB, VB.NET, C, C++, C#, Delphi gibi diller için hazır bir çok örnek ve detaylı dökümantasyon içermektedir.

uEye kameraları ve teknik bilgi, Mavis ten tedarik edilebilir. Mavis, uEye kameralar, bağlantı ekipmanları ve yazılımcılar için destek sunmaktadır. Görüntü işleme ile ilgilenen profesyonel ve amatörler, öğrenciler, akademisyenler veya kendi otomasyon projesine kamera entegre etmek isteyen hemen herkes Mavis ten teknik bilgi alabilir.

Döndürme İşlemi

Resim ve Region döndürmek, görüntü işleme uygulamalarında çok sık karşılaşılan bir durumdur. Aşağıdaki kod, en yalın döndürme örneğidir. (HALCON da farklı alternatifler de mevcut olmakla birlikte)

Aşağıdaki kalem resmini ve onu çevreleyen ROI yi, yatay düzleme paralel olacak şekilde döndürelim.

read_image (Image, ‘2.bmp’)
dev_set_line_width(2)
dev_set_draw(‘margin’)
threshold (Image, Regions, 0, 218)
fill_up (Regions, RegionFillUp)
shape_trans (RegionFillUp, RegionTrans, ‘rectangle2’)
dilation_circle(RegionTrans, RegionDilation, 20)
Kodun buraya kadar olan kısmı, kalemi seçip, etrafına ovalleştirilmiş dörtgen şeklinde bir ROI çizmeye yarar…
area_center(RegionFillUp, Area, Row, Column)
orientation_region (RegionFillUp, Phi)
hom_mat2d_identity (HomMat2DIdentity)
hom_mat2d_rotate (HomMat2DIdentity, -Phi, Column, Row, Yatay)
dev_clear_window()
affine_trans_image (Image, YatayKalem, Yatay, ‘constant’, ‘false’)
affine_trans_region (RegionDilation, RegionAffineTrans, Yatay, ‘false’)
Kodun devamının da çalıştırıldığında, kalemin ve etrafındaki ROI nin birlikte döndürülmüş hali.

Ölçüm (Measure)

Mavis olarak, son zamanlarda her zamankinden daha fazla ölçüm sistemi talebiyle karşılaşmaktayız. Üretici firmalar, daralan kar marjını sıfıra yakın hata oranlarıyla sübvanse edebileceklerinden, eskiye göre daha çok kalite kontrol ve ölçüm uygulamalarına yer vermeyi düşünüyor olmalılar. Hızlı ve hassas ölçüm dendiğinde, kameralı ölçüm sistemleri en cazip alternatif olarak görünmektedir. Mavis olarak, %100 ölçüm ve kontrol esasına dayalı görüntü işleme uygulamaları geliştirdiğimizden, var olan çözümlerimizi megapixel telecentric lens ve yüksek çözünürlükte  kamera kullanarak hassas ölçüm yapabilecek şekle getirdik. Yine kendi geliştirdiğimiz USB IO modülü ile PLC ya da konveyör gibi dış ortamlarla haberleşmek te hızlı ve basit bir hale indirgendi. En önemlisi, ölçüm gibi nokta altı hassasiyet (subpixel precision) gerektiren durumlarda, HALCON un gücünü kullanan çözümlerimiz, müşteri tarafından beklenen tolerans değerlerine uyabilmemizi sağladı.

Dağınık Kalsın

Ölçüm yapmadan önce, ölçülecek parçanın açısal olarak dönmüş vaziyette olması, görüntü işleme ile ilgilenenlerin genelde pek hoşuna gitmeyen bir durumdur. Açısal olarak dönmüş bir parça üzerinden ölçüm  yapılacak ise 2 farklı çözüm sözkonusu olabilir. Parçayı x yada y eksenine göre dik/yatay olacak şekilde  (0 ya da 90 derece) döndürmek (ki bu durumda resim kalitesinden (en azından teorik olarak) feragat etmek gerekiyor) ya da parçanın halihazırdaki konumu üzerinden ölçüm yapmak.

HALCON ile her iki durumda da ölçüm yaptığımda aynı sonucu elde ettim. Zaten HALCON ölçüm için gen_measure_rectangle2 kullanıyordu ki, dönmüş prçanın dönüş açısını belirleyip (orientation_region) rectangle2 bu açıya göre verilirse, sistem zaten direk açısal dönmüş ölçümü yapacaktı. Dolayısıyla, dönmüş parçalar için hom_mat2d_rotate, affine_trans_image vb. komutlarla uzun uzadıya uğraşmaya gerek kalmamış olur. Ben yine de uğraştım. Denedim. Aynı sonucu verdiğini gördüm. (Beklenmeyen bir durum da değil ama yinede deneyip görmek daha ikna edici oluyor… Tıpkı şimdi measure_pairs ve gen_rectangle2_contour_xld kullanmak arasında fark olmayacağını göreceğim gibi…)