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