Plastik Üzerinde Klips Kontrolü

Aracın iç dizaynında kullanılmak üzere üretilen parçaların kontrolü yapılmak isteniyor. Bu siyah parçalar üzerinde yine siyah renkli klipsler takılıyor. Ancak bu klipslerin takılmaması problemine karşı, kameralı kontrol sistemi kurulacak.

Siyah üzerinde siyah kontrolü zor olsa da, parçaya göre uygun bir kabin, aydınlatma ve tek kameralı bir sistem tasarladık. Parçanın birden fazla modeli var ve kullanıcı tarafından kontrolü yapılacak ürün program üzerinden seçtiriliyor.

Ardından konulan parça üzerindeki klipslerin kontrolü yapılıyor. Yazılım, parçanın yönü farklı gelse bile doğru çalışacak edecek şekilde ayarlandı. Farklı ürünler geldiğinde ise tabi ki uyarı veriliyor.

Parça kontrolleri “NOK” ise program kendini kilitliyor ve “bakım” şifresini bilen birinin gelip programı şifre ile açması gerekiyor.

Aşağıdan ekran görüntülerini görebilirsiniz..

Klips kontrolü

Klips kontrolü - hatalı parça

Klips kontrolü - hatalı parça

Uygun Threshold Seçimi

Kameralı kontrol uygulaması kurulum aşamasında, kameralardan alınan görüntü kalitesi tüm projenin kalitesini etkileyecği için son derece titiz çalışılmalıdır. Gerek fokus, gerek pozlama / diyafram ayarları hiç acele edilmeden, en optimal şekilde yapılmalıdır. Gerekirse alınan görüntüler, basit bir ön incelemeye tabi tutulmalı, var olan ayarlar (varsa) farklı modeller için de denenmeli ve öyle karar verilmelidir. Projenin kurulum aşamasında geçirilecek vakit ne kadar çok olursa olsun, asla ilerleyen aşamalarda istenen sonuçların elde edilemeyip yeniden başa dönülmesi ile kaybedilen zamanla kıyaslanamaz. Başlangıçta, herşeyden emin olup iyice tatmin olunduysa, ancak o zaman kod yazımına geçilmelidir. Var olan ayarlara göre bir yerlerden başlayalım, nasıl olsa ileride değiştiririz yaklaşımı (varsa) derhal terk edilmelidir. Bazen uygun açı ve görüntü kalitesini yakalamak için yapılan çalışmalar, müşteri tarafında (ya da 3. bir göz) henüz bir ilerleme sağlanamadı şeklinde yorumlanabilir. Müşteri, “Ekip günlerce gidip geliyor ama henüz ortada bir şey yok” şeklinde yakınıyorsa, o ekibin işini profesyonelce yapmaya çalıştığını düşünebiliriz. (Diğer ihtimal varsa da, biz düşünmek istemiyoruz 🙂 )

(Not : Pozlama/exposure, yazılım ile, diyafram ise lens üzerinden ayarlanır)

Pozlama/diyafram ya da uygun threshold seçiminde, projeden projeye değişebilmekle birlikte, genel doğrular şu şekilde özetlenebilir.

  1. Alınacak görüntüdeki açık-koyu arasında ortalama 100 birim fark olmalıdır. (Gray scale, 8 bit kamera ile çalıştığımız varsayılmıştır. Yani Beyaz = 255, Siyah = 0 ise)
  2. Açık renk, 255 e çok yakın olmamalıdır. 170-220 bandında gezinebilir mesela. 255 e çok yakın olması (ya da tam 255) olması durumunda, çevre ışık şartlarının biraz daha artması, bilgi kaybına sebep olacaktır. Keza, aslında açık olmayan renkler, fazla ışık şiddetinden dolayı açıkmış gibi hatalı algılamalara sebep olabilir.
  3. Koyu renk 0 a çok yakın olmamalıdır.Yukarıdakine benzer nedenlerden dolayı.
  4. Çoğu kez, göze iyi görünen açık-koyu net kontrastlar, yapay görme uygulaması açısından çok tercih edilmeyebilir. Göz – beyin yorum yapma yeteneğine sahiptir ama kamera/yazılım değildir. Özellikle barkod / karekod okuma gibi işlemlerde gözle görünenin aksine, karanlık kontrastlarda çalışmak daha iyi sonuçlar verecektir. (Aydınlık / fazla ışık, kontrolsüz şekilde ışık patlamalarına / yansımalara yol açabilir. Kural basit, Işık yoksa, yansıma da yok. Tabi, yok dediysek, hiç yok anlamında değil. Gereksiz parlaklık yok anlamında)
  5. Kamera yazılımı Gri renk dağılım histogramı veriyor ise, mutlaka incelenmelidir.

iDS ueye Cockpit programı, alınan görüntüde yatay ve dikey gri renk dağolım profilini bize vermektedir. Her iki profili de açarak, alınan görüntünün hem yatay, hem dikey eksende, yukarıda belirttiğim kurallara uygunluğu hemen görülebilir.

uEye Cockpit programında, yatay ve dikey eksende gri renk dağılımını açmaya yarayan butonlar.

Aşağıda, ideal threshold değerleri ile alınmış resmi görüyorsunuz. (Açık ve koyu arası 100 birimden fazla, açık, 255 e çok yaklaşmamış, koyu ise 0 a çok yaklaşmamış.)

 

Göze daha iyi görünmekle birlikte, yapay görme uygulaması açısından daha kötü sonuçlar verecek olan, yanlış pozlama değerleri (fazla pozlama – over exposure) ile alınmış aynı nesneye ilişkin görüntü ise aşağıdaki gibidir. (Parlak renklerin 255 ile kırpıldığına dikkat edin. Histogram bizi uyarıyor.)

resmi (fazla exposure ile alınmış olan) kaydedip HALCON ile açılıp, threshold değerlerini incelersek, demek istediğim daha net anlaşılacaktır.

Görüldüğü gibi, standart (global) thresholding ile açık rengi seçmek zorlaşmaktadır. (Elbette variable threshold, dynamic threshold vb. yöntemler daha iyi sonuçlar verebilir)

Özetle : Kurulum aşamasında, son derece özenle davranılıp, alınan her görüntü incelenmeli ve iyice tatmin olunmuşsa yazılım uyarlanmasına başlanmalıdır. Aksi halde tekrar tekrar ayar yapıp, yazılımın yeniden güncellenmesini gerektiren çok daha zahmetli yollara girmek gerekebilir.

IDS Fast line scan özelliği

Line scan(çizgi taramalı) kameralar tek bir satırı istenen süre(satır sayısı) kadar çekip birleştirir ve elde edilen görüntüyü verir. Genellikle yürüyen bant uygulamalarında veya döner sistemlerde kullanılmaktadır.

Örneğin: Çapı 5cm ve uzunluğu 1 metre olan demir çubuğun ölçümü yapılmak isteniyor.
1.3MP çözünürlüklü area scan(alan sensörlü) kamera ile tüm çubuğu görüntüye sığdırabilmek için bir düzenek kurduğumuzda elde ettiğimiz 1280×1024 piksel çözünürlüklü resimde boşta alanlar kalacağı için çubuk çözünürlüğü düşük olacaktır.

Aynı çubuğun görüntüsünü satır boyu 4096 piksel olan Line scan kamera ile almak istersek kamera düzeneğimizi çubuğun genişliğine göre ayarlayacağız, uzunluk ise vereceğimiz satır sayısı ile sınırlandırılacaktır. Çubuğun 4096×16000 piksel çözünürlüklü görüntüsünü elde edebiliriz.

Line Scan kameraların “Fast Line scan” ve “Triggered Line scan” olmak üzere iki farklı kullanım yöntemi vardır.

Fast Line scan : Yüksek hızlarda tarama yapabilir ve başlangıç tetiklemesi ile çalıştırılabilir.

Triggered Line scan : Fast Line scan yöntemine göre daha yavaştır. Başlangıç tetiklemesine ek olarak her bir satırın tek tek tetiklenmesi ile de çalıştırılabilir.

Başlangıç tetiklemesi için sensör, satırların tek tek tetiklenmesi için encoder kullanılabilir.

Line scan kameraların parametreleri daha fazladır. Bu yüzden kurulumu area scan kameralara göre biraz daha zordur. Kamera yerleşimine göre parametrelerin hesaplanması gerekir. Hassas ayar yapılmalı ve yüksek miktarda aydınlatma(çizgi led) kullanılmalıdır.

IDS UI-124x/UI-324x/UI-524x ve UI-125x/UI-325x/UI-525x modellerinde fast line scan özelliği bulunmaktadır. Fast line scan özelliği olan kameraların kurulumu kolaydır fakat satır ve sütun boyu kameranın çözünürlüğü ile sınırlıdır.

uEye SDK 4.22

iDS kameralar için, uEye SDK 4.22 çıktı. Yeni kameralar ve yeni özellikler sunan SDK da, en beğendiğim özellik sharpness (keskinlik) kotrolünü içermesi.

Araç çubuğunda yer alan, acı biber şeklindeki 🙂 buton yardımı ile, çizdiğimiz dörtgensel bölgenin keskinliği (sharpness) gösterilmektedir. Böylece, lens üzerinden fokus kontrolü yaparken, gözle gördüğümüze değil, programın bize gösterdiği değere göre karar vermek mümkün olmaktadır. Özellikle amatör ya da son kullanıcıların fokus ayarı yapması çok kolay bir hale gelmiştir.

Hemen aşağıda, (Out of Focus) iyi fokus edilmemiş lens ile alınan görüntüde, ekrana çizdiğim AOI kırmızı renk ile uyarıyor. (Halihazırdaki fokus değeri : 58, olması gereken : 142 ifadeleri ile)

 

Hemen aşağıda ise iyi fokus edilmiş lens ile alınan görüntü yer alıyor. (Halihazırdaki fokus değeri : 144, olması gereken : 145 ifadeleri ile)

 

Aynı fonksiyonalite, SDK tarafından sharpness sınıfı ile sağlanmaktadır. Yapay Görme uygulamamız, kameraları ilk yüklediğinde, fokus ayarlarının düzgün olup olmadığını kontrol edebilir. Eğer fokus değerimiz bozulmuş ise, kullanıcı uyarılabilir, istenen fokus değerine getirmesi sağlanabilir. (Mavis VYP arabirimi, kullanıcının focus yapabilmesine olanak tanıyan arayüz geliştirmiştir. Sola döndür, sağa hafif döndür gibi kullanıcı dostu ifadeler ile operatör yönlendirilmektedir.)

Yeni XS Kamera

iDS, yeni nesil, ultra kompakt XS kameraları yakında pazara sürüyor. Çok kısa sürede pazarda yer alacak olan yeni XS kameralar, test edilmek amacıyla her ülkeye yalnızca 1 adet olarak verildi. Yaptığımız testlerde çok iyi sonuçlar veren ultra kompakt yeni nesil XS kameralara ilişkin kısa bilgiler vermek istiyorum.

Son derece minimalist boyutları ve çok güçlü SDK desteği sunmanın yanısıra, çok uygun fiyatlara pazara sunulacaktır. Üzerinde otofokus lens ile geldiğinden dolayı ek bir lens maliyeti de oluşturmayacağı düşünülürse, pek çok projede düşük maliyet- yüksek kalite endeksinin yakalanmasında rol alabilir.

Yeni XS, diğer kamera modellerinde olmayan pek çok özellik ile gelmektedir. Bunlara kısaca değinelim.

Oto Fokus : Built-in autofocus (kamera üzerindeoto focus) özelliği ile sunulmaktadır. 10 cm. ye kadar mükemmel fokuslayabilmektedir. Fokus değeri, otofokus olarak kullanılabileceği gibi, yazılım ile okunabilir ve istenen değerlere set edilebilir özelliktedir. (A ürünü geldiğinde x değerine, B ürünü geldiğinde y değerine set edebilmek gibi.)

Resim Formatı : Hareketli (video) resim formatı olarak Full HD 1080p, 15 frame per second görüntü aktarabilmektedir. scaling özelliği sayesinde, field of view (görüş alanı) değişmeksizin, daha düşük çözünürlüklerde (dolayısıyla daha yüksek hızlarda) görüntü aktarabilmesi mümkündür.

CMOS sensör, 5 megapixel görüntü sunmaktadır. Tam çözünürlük 2592 x 1944 pixel dir.

Resim Kontrolü : Yeni XS, otomatik resim kontrol işlemlerini kendi içinde yapmaktadır. Böylece ek CPU yükü oluşturmaz. Bu otomatik kontroller, otomatik white balance, otomatik pozlama (auto exposure) ve auto gain (Auto ISO) özellikleridir. Üstelik, tüm bu otomatik işlemler kamera içinde oldukça hızlı gerçekleştirilmektedir.

Bunlara ilave olarak, auto contrast correction and backlight compensation fonksiyonlarını manual olarak daha detaylı ayarlayabilme seçeneğimiz de mevcut.

Renk Hesaplama : Kamera, RAW data formatındaki görüntüyü, bilgisayara istenen formata çevirerek gönderir.

XS kameraların bir diğer önemli özelliği ise, sharpness (keskinlik) ile ilgili API desteği sunmasıdır. Alınan görüntünün keskinliği (sharpness) öğrenilebilir. Bunun için uEye API SDK sına, sharpness sınıfı eklenmiştir. Bu sınıf ile, mevcut sharpness değeri öğrenilebilir, aralık alınabilir, istenen değerlere set edilebilir.

Özet olarak,

  • Geliştirilmiş API,
  • Çok uygun fiyat,
  • otofokus (ve diğer otomatikleştirilmiş özellikler)
  • çok küçük boyutlar

gibi özelliklerinden dolayı, yeni XS pek çok projede kullanılmaya aday ciddi bir kamera olarak gözükmektedir.

Resim Boyutu Hesaplama

iDS çok daha yüksek hassasiyette renk bilgisi verebilen, 12 bit derinlikli RGB36 kameraları (ve yeni SDK) pazara sundu. Renk derinliğinin 8 bitten 12 bite yükseltilmesi (RGB24 ten RGB36 ya) alınacak her bir resmin boyutunun da değişmesine neden oldu.

Mavis olarak geliştirdiğimiz bu Excel tablosu ile (indirmek için tıklayınız), farklı çözünürlüklerdeki kameralar için resim boyutunu hesaplayabilirsiniz.

 

Kalibrasyon

Özellikle ölçüm, robotik gibi hassas uygulamalarda mutlaka kamera kalibrasyonu yapılmak zorundadır. Hayli zahmetli olduğu için genellikle ihmal edilir. İyi kalibre edilmiş kamera ile 1 mikron hassasiyetli değerlerde ölçüm yapabilmek, 3D modelleme, robotik koordinat sistemleri, gerçek dünya koordinat sistemleri, pixel – mm. tarzı dönüşümler mümkün olabilmektedir. En önemlisi, lens distorsiyonları giderilmekte, balık gözü efekti, (lens küresel  olduğu için oluşan) merkezde ve kenarda ölçüm farklılıkları gibi istenmeyen etkenler giderilmektedir.

HALCON kamera kalibrasyonu için geniş kapsamlı bir modül ve sihirbaz içermektedir. Kamera kalibrasyonu yapabilmek için, öncelikle son derece hassas olarak üretilmiş kalibrasyon plakalarına ihtiyaç vardır. MVTec, farklı ihtiyaçlar için farklı ölçülerde kalibrasyon plakaları üretmiştir. Seramik, metal, şeffaf vb. olabilen kalibrasyon plakaları MAVIS ten temin edilebilir.

HALCON, kullanılan kalibrasyon plakasına bağlı olarak, kalibrasyon plakasının özelliklerini içeren bir description dosyası yüklemeye izin verir. (Kalibrasyon plakası ile birlikte, bir de data dosyası gelmektedir.) Son derece hassas olduğu için pahalı da olan kalibrasyon plakalarından, farklı uygulamalara göre farklı boyutlarda bulundurmak gerekecektir. Böylesine atıl bir stoğu bulundurmak mantıklı olmayacağı için kalibrasyon plakası uygulamanın ihtiyaçları doğrultusunda satın alınmalıdır. Yurt dışından getirmenin zaman alması ya da diğer zorluklardan dolayı MAVIS kendi kalibrasyon plakalarını geliştirmiştir. Farklı boyutlardaki plakalar, 1 mm. kalınlığında özel kağıtlara yüksek hassasiyetli baskı merkezlerinde print edilerek çıkartılmış, her biri için postscript (.ps) ve HALCON description dosyası hazırlanmıştır.

Ölçüm ya da robotik gibi uygulamalar ile uğraşan HALCON kullanıcıları, MAVIS ile iletişime geçerek, uygun fiyatlarda kalibrasyon plakalarına sahip olabilir ve gerçek ölçüm, robotik, 3D uygulamalarını geliştirebilirler.

 

 

HALCON ile Video Processing

Image Processing (Görüntü İşleme) tekniklerinin video dosyalarına uygulanması işlemi HALCON ile mümkündür. Video, her biri işlenebilir bir görüntü içeren ardışıl frame lerden meydana gelmektedir. Dolayısıyla, tek tek bu frame lere erişmek mümkün ise, istenen “video processing” HALCON komutları ile gerçekleştirilebilir.

Video işleme neden gerekli olabilir?

  • Görüntü alınırken, işlemek için yeterli süre yoksa
  • Tüm senaryonun kaydedilip, en sonunda karar verilmesi gerekiyorsa
  • Tek tek Frame olarak görüntü alınamıyorsa
  • Kamera çıktısı video formatında ise
  • Real Time / (Canlı) işleme gerekiyorsa

vb. sebepler sayılabilir.

Sürpriz yumurtadan çıkan motosikletin, arka tekerleğini çıkartıp kamera altında fırıldak gibi döndürdüm. Tekerlek, kendi ekseni üzerinde kamera altında fırıldak gibi dönerken, görüntüyü avi formatında kaydettim. Tekerlek, yüzeyde hangi noktalardan geçti? gibi bir soru aklıma geldi. Tüm görüntü kaydetme işi bittikten sonra, bu avi formatındaki videoyu HALCON da işledim ve cevabı buldum 🙂

Fırıldak gibi dönen tekerleğe ait avi formatlı video (tıklanarak indirilebilir)

HALCON içinde video processing işlemi için, öncelikle video dosyasının open_frame_grabber ile açılması gerekir. Grabber adı olarak “DirectFile” en uygun seçenektir. CameraType değişkeni olarak avi dosyasının adı seçilmelidir. DirectFile için HALCON sürücü dosyasının versiyonu 5.1 olmalıdır. Eski versiyonlar bazı avi dosyalarını iyi tanımayabilir. (HALCON 11 ile 5.0 gelmektedir. MVTec web sitesinden indirilip, 5.1 e yükseltilmelidir)

Tekerleğe ait video içinden ayıklanmış tek bir frame

 

 

 

 

 

 

 

 

 

Tekerleğin geçtiği tüm yollarin deviation_n komutu ile çıkartılmış hali.

 

 

 

 

 

 

 

 

 

şimdi basit bir threshold ile, tekerleğin taradığı tüm alanları belirleyebiliriz.

 

 

 

 

 

 

 

 

 

ve ağırlıklı olarak tekerleğin taradığı alanları belirlemek için, distnace_transform komutundan yararlanabiliriz.

 

 

 

 

 

 

 

 

 

Bütün programın HALCON kodu

gName := 'C:/Users/Mustafa/Desktop/don4.avi'
open_framegrabber ('DirectFile', 1, 1, 0, 0, 0, 0, 'default', 8, 'default', -1, 'false', gName, 'default', 0, -1, AcqHandle)
gen_empty_obj(Images)
for i := 1 to 132 by 1
    grab_image(Image, AcqHandle)
    concat_obj(Images, Image, Images)
endfor
close_framegrabber (AcqHandle)

channels_to_image (Images, MultiChannelImage)
deviation_n (MultiChannelImage, ImageDeviation)
threshold(ImageDeviation, Region, 28, 255)
distance_transform (Region, DistanceImage, 'euclidean', 'true', 1280, 1024)

Plastik parçalar üzerindeki yüzüklerin kontrolü

Otomotiv sektöründe hizmet veren bir firma için yüzük kontrol sistemini devreye aldık. Sistemde 3 farklı ürün bulunmaktadır. Her bir üründe yüzüğün takılacağı yerler ve renkler farklılık göstermektedir. Bu ürünler modellenerek kontrol edilmesi istenen ürünlerin doğru veya hatalı olarak ayrıştırılması sağlanmıştır.

Operatör tarafından kullanıcı girişi yapılabilen, kontrol edilecek modelin listeden seçilebileceği ve sistemin çalıştırılması veya durdurulması gibi işlemleri içeren bir arayüz tasarlanmıştır.

Sistem, konveyör sistemi üzerinde bölmelere ayrılmış bir bandın ilerlerken mekanik sensör yardımıyla adım adım durdurulması, fotoğraf çekilmesi, bu fotoğrafın bilgisayar üzerindeki yazılım ile işlenerek ürünlerin doğru veya hatalı olarak tespit edilmesi, bu bilgilerin ekranda gösterilmesi ve farklı kovalara atılması işlemlerinden oluşmaktadır.

Kontrol edilecek ürünler farklı pozisyonlarda geleceği için bu ürünlerin ve yüzüklerin aranacağı bölgelerin modellenen ürünlere göre döndürülmesi gerekmektedir. Bu işlemi sağlayan HALCON kodu:

// Kontrol edilecek ürünün fotoğrafının okunması
read_image (Image, 'C:/Projects/M1_175740.bmp')
// Matching(Eşleştirme) için kullanılacak modelin okunması
read_shape_model ('C:/Projects/P1-N.shm', ModelId)
//  Matching(Eşleştirme) işlemi
find_shape_model (Image, ModelId, rad(0), rad(360), 0.5, 1, 0.5,['least_squares','max_deformation 2'], [7,1],0.75,ModelRow, ModelColumn, ModelAngle,ModelScore)
    if (ModelScore > 0.75)
        get_shape_model_contours (ModelContours, ModelId, 1)
        hom_mat2d_identity (HomMat)
        hom_mat2d_rotate (HomMat, ModelAngle, 0, 0, HomMat)
        hom_mat2d_translate (HomMat, ModelRow, ModelColumn, HomMat)
        affine_trans_contour_xld (ModelContours, TransContours, HomMat)
        gen_rectangle1 (ModelRegion, 396.643, 361.944, 816.643, 1134.52)
        area_center (ModelRegion, ModelRegionArea, RectificationRow, RectificationCol)
        hom_mat2d_identity (Rectification)
        hom_mat2d_translate (Rectification, RectificationRow-ModelRow, RectificationCol-ModelColumn, Rectification)
        // Ürünün döndürülmesi
        hom_mat2d_rotate (Rectification, -ModelAngle, RectificationRow, RectificationCol,Rectification)
        affine_trans_image (Image, RectifiedImage, Rectification, 'constant', 'false')
    endif

Doğru ve hatalı olarak tespit edilen ürünlerin ekran görüntüleri :