Ö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…)

Eski Projelere Destek (6 Kameralı Fren Kontrol Sistemi)

Bugün, 4 yıldan daha uzun bir süre önce kurmuş olduğumuz bir projeye güncelleme yapmak gerekti. En başta projede değişiklikler yapabilmek (yazılımı re-compile edebilmek) için HALCON 7.1 i yeniden kurmak gerekti. Bunun için (ne olur ne olmaz) HALCON 8.1 ve HALCON 9.0 sürümlerini bilgisayarımdan kaldırdım. Kurulum yapıldıktan sonra, istenen değişikliklere göre modifiye edilmiş versiyonu derleyip çalıştırdım. Neyseki herşey yolunda gitti.  Projede Native .NET kütüphaneleri yerine COM+ teknolojisi kullanılmıştı. Aslında değişen çok bir şey olmuyor. Nihayetinde aynı HALCON DLL leri çağırılıyor. Yine de en azından kodlama kalitesi olarak Native .NET yazılımı çok daha güçlü. Hiç değilse, değişken tanımlarını yapabiliyorsunuz. COM+ kulanımının gerektirdiği object kullanımı başta kullanışlı gelse de, VB programcısı değiliz ya, bir C# programcısı her değişkeni kendi tipinde tanımlamak ister. Değişken tanımlamada kişisel olarak takıntılı olduğumu kabul ediyorum. Name Condition olarak Pascal Case kullanımından, Camel Case kullanımına geçmek bile benim için zordu. Bir de bunlara sürekli boxing (type cast) işleçlerini eklemek hepten eziyet.

Neyseki tüm bunlar COM ile birlikte geçmişte kaldı da nadiren eski projelere destek vermek dışında günlük hayatta pek karşımıza çıkmıyorlar.

Bugünkü proje için Sabah 7:30 gibi yola çıktım. Bursa’ya gittim. Çalışma 3 saat sürdü. Renault Yeni Megane ve Fluence modelleri için fren kapağı tasarımları ve kontrolleri programa bildirildi. Programın exe si (uygulaması) yanı sıra UserControl modülü için DLL güncellemesi yapıldı. (MyViewControl isimli DLL i de güncellemek gerektiğini bulmam pek kolay olmadı) Mevcut kontrollere ilaveten Aktif ROI de, Intensity kontrolü de ekledim. Böylece farklı kapağın hattan kazara geçme şansı iyice sıfıra yaklaştı.

Birkaç saatliğine de olsa, HALCON 7.1 ile çalışmak zorunda kaldığımda, MVTec firmasının özellikle 7.1 – 8.0 geçişinde HDevelop tasarımında devasa yol katettiğini yeniden farkettim. Aynı geliştirme sürecini 8.0 dan 9.0 a geçişte söylemek pek mümkün değil. Bu durum artık görsel olgunluğa erişildiği şeklinde yorumlanabilir belki. Yine de bir sonraki versiyonu merakla bekliyorum.