HALCON 13 ve yeni özellikler

HALCON 13, Kasım 2016’da kullanıma sunuldu. Yeni özellikleri, filtreleri, geliştirmeleri ve paralel işlemler ile hız konusunda yapılan iyileştirmeleri anlatalım.

Geliştiriciler için;

Halcon arayüzünde geliştirme yaparken, artık bütün kontrol ve ikonik değişkenlerine breakpoint konulabiliyor. Bunları Quick Navigation’dan izleyebilirsiniz.

Dokümantasyon’da notlar daha detaylı, düzenli, kısımlara ayrılmış, listeli halde.

Halcon kodu export edilip Visual Studio’da projenize eklendiyse, kullandığınız Halcon değişkenlerini watch edip izleyebiliyorsunuz.

Birkaç ayar ile uzaktaki sisteminizin Halcon üzerinden debug’ını yapabilirsiniz. Halcon’u hDevEngine ile çalıştırıp, projenizden Halcon dosyasını çalıştırarak kullanıyorsanız; uzaktan pc erişimi ile canlı proje üzerinde (sistem uzakta bir fabrikada da olabilir) Halcon arayüzü üzerinden breakpoint koyup debug yapılabiliyor. Sistem çalışırken Halcon dosyasındaki breakpoint koyduğunuz yere düşüyor, böylece siz değişkenleri görüp adım adım devam edebiliyorsunuz.

Görüntü işleme;

Yeni birçok görüntü işleme filtreleri eklendi.

bilateral_filter eklendi. Görüntüdeki geçiş noktalarını değil, yüzey kısımlarında yumuşatma yapmak için kullanılabilir, kenarı yakalamak isteyip yüzeydeki parazitleri gidermek istiyorsanız. Guided_filter da bunun gibi çalışıyor ve az daha hızlı. Bununla birlikte bilateral_filter kullanırken, hızını ve kalitesini parametrelerle ayarlayabilirsiniz.

Yeni bir threshold yöntemi; MSER (Maximally Stable Extremal Regions), yani en stabil olan threshold sonucu.
segment_image_mser komutu ile görüntü üzerinde keskin yada yumuşak geçişlerde de olsa, koyu açık ya da ikisi için de region’ları alabiliyorsunuz.

Texture inspection yöntemleri geliştirildi.

Datacode, QRcode fonksiyonları geliştirildi. Bulanık, yamuk açılı, kontrastı kötü, yazı kalitesi düşük, mürekkebi az-fazla gelse de kodları bulma oranları arttırıldı.

Barcode’lar parazitli olsa da bulabiliyor. Barkodun bir kısmı silinik gelse de, bar çubukları üzerinde okunabilen bir nokta var ise okur, bu şekilde bütün çubukların okunabilen yerlerini alır ve barkodun tamamını tanıyabilir.

OCR (karakter tanıma, yazı okuma) okuma oranları daha arttırıldı.

Dot print (nokta vuruşlu) yazılarda (sanayide döküm malzemeler üzerindeki gibi) okuma oranları geliştirildi.

Find_ncc_models komutu artık çoklu model tanımayı da destekliyor. Ayrıca görüntü üzerinde tanımada iyileştirmeler var.

3 Boyutlu Görme;

Kullanılan bazı komutlarda parametre eklemeleri var. Point Cloud (Nokta Bulutu) çıkarmaları, Kalibrasyonu, Yüzey modelleme komutları, Matching komutları geliştirildi.

HALCON arayüzündeki grafik ekranda da bazı yenilikler var.

set_window_param ile “region_quality” low-good değerleri verilerek, region kenarları daha hassas gösterilebilirsiniz.
set_window_param ile “anti_aliasing” true-false değerleri verilerek, kenarlar daha yumuşak yada keskin gösterilebilir.
dev_set_color’da artık renkler hex kodu olarak da verilebilirsiniz.
Ekranda yazı yazma göstereceğimiz zaman, top-bottom, left-right-center ile hizalanabilir.
Ekranda bir mesaj yazıldığında zoom in – zoom out yapıldığında bile mesajın da ona göre tekrar hizalanması sağlanıyor.

Komutlarda Hızlanma;

Artık neredeyse bütün komutlar fonksiyonlar kendi içinde paralel process ile işleniyor. Yani hepsinde bir hızlanma mevcut, bazıları ise çok daha hızlanmış durumda. Örneğin aşağıdaki komutlarda yüzde kaç hızlanma olmuş görelim;

threshold, %180
dyn_threshold, %400
mean_image, %300
trans_from_rgb, %325
find_shape_model, %300
scale_image, %300
find_text, %300
edges_color, %80

Shape based matching, Deformable shape based matching işlemleri,
OCR (karakter tanıma, yazı okuma) işlemlerinde de hızlandırmalar yapıldı.

 

HALCON 13 artık daha hızlı, daha verimli. Seneler içinde HALCON, biz görüntü işleme geliştiricileri için işimizi epeyce kolaylaştırdı..

 

HALCON 13 çıktı

Evet, görüntü işleme kütüphanesi olarak kullandığımız HALCON’un yeni versiyonu 1 kasım 2016’da çıkıyor.

Lansmanı için Almanya-Münih’e MVTEC’in merkezine gittik ve HALCON 13’ün yeni özelliklerini gördük, bununla ilgili detayları bir sonraki yazımda yazacağım.

halcon13days

 

 

 

 

 

 

Şimdilik aşağıdaki sayfadan inceleyebilirsiniz.

HALCON 13 Release

 

Endüstriyel Görüntü İşlemede Yol Haritası

Son zamanlarda görüntü işleme (kameralı kontrol / optik kontrol) konusuna ilginin her geçen gün arttığını görmekteyim. Pek çok şirket sadece kendi alanında üretim yapmakla yetinmeyip, Ar-Ge faaliyetleri (ya da kişisel ilgi) kapsamında modern teknolojilere de ilgi duymakta. Pek çok firmada mühendisler kendi yazılımlarını geliştirmekte, kendi çözümlerini sunmakta ve gün geçtikçe daha çok kendi katma değerlerini yaratmaktadırlar. Ziyaret ettiğimiz pek çok firma, en modern teknolojileri içselleştirmesi ve kendi bünyesinde çözümler sunmasıyla (haklı olarak) övünmektedir. Bu kategoriye giren firmalar, hazır bir çözümü satın almak yerine, kendileri uygulamayı tercih etmektedirler. Maliyeti düşürmek, kendi alanlarına %100 uyum sağlayacak bir çözümü geliştirmek, eldeki nitelikli iş gücünü değerlendirmek gibi sebeplerden dolayı firmalar artık kendi teknolojilerini kendileri geliştirmeyi tercih ediyorlar. Firmaları bu yola iten bir diğer önemli sebep ise ülkemizde görüntü işleme / kameralı kontrol teknolojileri sunan firmaların (bir anlamda sektörel rakiplerimizin), doğrudan yabancı bir marka / ürün / yazılım entegre eden firma görünümünde olmaları. Bu distribütör / entegratör görünümündeki firmalar, sahadaki üretim yapan müşterinin gerçek gereksinimlerini algılamaktan uzak kalabiliyorlar. Masa başında çalışan bir çözüm var ellerinde ama bunu örneğin ısıl işlem ile cam üretimi yapan bir firmanın isteklerine uyarlamak kolay olmayabiliyor. Dolayısıyla müşteri tarafında güvensizlik oluşabiliyor ve sonuç olarak müşteri “bu işi sadece biz (kendi imkanlarımızla) yapabiliriz” hissiyatına kapılabiliyor. (Bizim (Mavis) açımızdan yine iyi bir durum bu. Çoğu kez müşteri, bir kaç firma denedikten sonra bu işin hiç yapılamayacağına hükmedip defteri kapatıyor. Bu da en kötü durum!)

Görüntü İşleme temelli teknolojiler de, işte bu başlığa giren en önemli öğelerden biri. Bu makalede kendi bünyesinde bu işi çözmeyi kafasına koymuş bir firma (müşteri diyelim) için bir hızlı başlangıç kılavuzu, Yol Haritası vermek istiyorum. Kendi bünyesinde, kendi imkanları ile görüntü işleme teknolojisine hakim olmak isteyen bir firma için en hızlı ve en profesyonel yöntemi açıklayacağım bir yol haritası.

1.  Yapılmaması Gerekenler : Elimdeki aletler ile ben bu işi yaparım hissi

Teknoloji geliştiren firmalar çoğu kez yazılımdan anlayan kişileri de bünyesinde barındırdığı için olsa gerek, yazılımcı kişi kendi bildiği programlama dili ile (genelde Delphi, Visual Basic, C#) görüntü işleme uygulamasını kendisi yapmaya karar veriyor. Google da bir arama yapıp, genelde bitmap operasyonları ve pixel pixel resmi okuyarak, başlıyor kod yazmaya… (Ya proje batıyor, ya çok uzun sürüyor, ya da yazılımcı arkadaş işten ayrılıyor)

Diğer bir yaklaşım, Matlab, Open CV vb. uygulamalar ile çalışan / çalıştığını iddia eden bir kaç örnek görüyor ve “evet istediğim buna benzer birşey, öyleyse ben de yaparım, ben de bu yolu izleyeyim” diyor.

Her iki yaklaşım da başarılı olamaz. (Tonla sebebi var ama burada detaya girmeyeceğim. Aksini düşünen ya da ispatlamaya çalışan varsa beni de bilgilendirsin bir zahmet.)

Bir de akıllı kamera (smart camera) ile gerçeklenmek istenen çözümler var, bu gibi durumlar için daha önce yazdığım şu makaleyi okuyabilirsiniz.

2. Elinizde olması gereken bileşenler

Gelelim düzgün bir yapay görme (görüntü işleme) uygulaması gerçekleştirmek için sahip olmanız gereken yazılım ve donanımlar bütününe.

Aydınlatma : İyi bir görüntü işleme uygulaması, kesinlikle iyi aydınlatılmış bir ortam ister. Aydınlatma koşullarının olabildiğince sabit (gece gündüz yaz kış vb. koşullardan etkilenmemesi) ve olabildiğince kontrollü olması istenir. Led ya da fluoresan tabanlı aydınlatma sistemleri kullanılabilir. Uygulamanın ihtiyacına göre en iyi aydınlatma sistemi seçilmiş olmalıdır. Fluoresan aydınlatmalar soft bir ışık verdiği için avantajlıdırlar. Led tabanlı aydınlatmalar için açma/kapama yapabilme, açısal/noktasal aydınlatma verebilme gibi avantajlara sahiptirler. Led aydınlatmalar, istenen geometrik tasarıma göre yerleştirme yapılabildiği için de kullanışlı olabilir.

Kamera – Lens : Endüstriyel bir kamera kullanılmalıdır. Yüksek hızda görüntü alabilen, tetik sinyalini görebilen (kameraya dijital sinyal verildiğinde fotoğraf çekmesi), USB ya da ethernet gibi bağlantı arabirimlerine izin veren ve en önemlisi tüm özellikleri yazılım ile yönetilebilen (güçlü bir SDK sı olan) bir kamera seçilmelidir. Lens, en az kamera kadar önemlidir. İyi bir megapixel lens ve görülmek istenen parçayı en iyi foculayabilecek odak genişliği, ayarlanabilir diyafram ve focus ayarı gibi özellikleri işinizi kolaylaştıracaktır. Unutulmamalıdır ki, iyi bir aydınlatma ve kamera ile, daha iş yazılıma gelmeden önce büyük çapta çözülebilir.

Yazılım : Güçlü bir görüntü işleme yazılımı, kütüphanesi kullanılmalıdır. Hızlı ve tutarlı çalışabilen, farklı dilleri ve platformları destekleyebilen, güncel teknolojilere uygun bir kütüphane olmalıdır. Geliştirilecek uygulama bu kütüphaneyi kullanmalıdır. Nasıl ki bir finans uygulaması verilerini SQL Server / Oracle vb. bir veritabanında tutuyorsa (ve programcıdan bir veritabanı yazması beklenmiyorsa) iyi bir görüntü işleme programı da, bu konuda geliştirilmiş ve optimize edilmiş bir kütüphane kullanmalıdır.

Giriş / Çıkış Modülü : Görüntü işleme sonuçlarının dış dünyaya bildirileceği, yine görüntü işleme işlemine başlama bilgisinin alınabileceği bir giriş çıkış modülü kullanılmalıdır.

Ve en önemlisi, bu teknolojiyi benimsemiş ve kendini bu konuda geliştirmek isteyen bir insan ve ona değer veren bir kurum gerekmektedir.

Eğer bu bileşenlere sahip olunmuşsa,  firma bünyesinde bu bileşenleri bir araya getirerek her tür görüntü işleme ihtiyacına çözüm sunabilecek altyapıyı sağlamış demektir.

Mavis olarak, en iyisi olduğuna inandığımız tüm bu bileşenlere sahibiz. Kendi projelerimizde, bu bileşenleri kullanmaktayız. Bunun bir sonucu olacak ki, çok farklı sektörlerde %100 çalışan gerçek yapay görme uygulamalarına sahibiz.

Görüntü işleme kütüphanesi olarak HALCON kullanıyoruz. HALCON var olan en hızlı ve en güçlü görüntü işleme kütüphanesidir. Daha fazla bilgi için googla da HALCON aratınız. Ya da bizimle iletişime geçip, ücretsiz deneme sürümünü elde ediniz ve aynı gün çalışmaya başlayınız) Kamera olarak Alman iDS firmasının uEye marka kameralarını kullanıyoruz. uEye, Almanya da üretilen, son derece gelişmiş bir SDK sunan, ideal bir yapay görme kamerasıdır. Lens, uygulamaya göre değişmektedir. Ölçme gerektiren bir uygulamada farklı lens, varlık kontrol eden bir uygulamada farklı lens kullanılır. Bu yüzden şu marka lensi şurada kullanırız demek yerine, projeye uygun bir lens kullanırız tabiri daha doğru olur.

Aydınlatma olarak projeye göre farklı çözümler sunmaktayız. Fluoresan aydınlatmalar üzerine yaptığımız özel geliştirmeler ile, soft ışık yakalamaktayız. Led tabanlı aydınlatma kullanan bir çok farklı modelimiz de mevcuttur.

Giriş Çıkış modülümüz, yine kendi geliştirdiğimiz modüllerdir. USB ya da Seri port üzerinden bilgisayar erişimi mümkündür. USB modeli tüm işletim sistemlerinde çalışabilen, arada hiç bir ilave sürücü yazılım ihtiyacı olmayan son derce hızlı modüllerdir. 5-24 V. arası herhangi bir işareti giriş olarak kabul edebilmekte, röle ya da tranzistör çıkışı verebilmektedir.

Mavis tüm bu bileşenleri bünyesinde barındırır (Stoklu çalışır)

Son olarak, Mavis, ihtiyaç duyulması halinde, tüm bu bileşenleri sağlamak dışında görüntü işleme eğitimi de vermektedir.

Mavis, kendi imkanları ile geliştirme yapan firmalara her tür desteği zevkle vermektedir ve kendi felsefesiyle birebir örtüşen bu tür firmalar ve kişiler ile başarılı projelere imza atmaktadır.

Diğer yandan, Mavis; anahtar teslimi olarak nitelenen sayısız çözüme sahiptir. Bu blog sayfalarında ya da web sitemizde (www.mavis.com.tr) takip edilebileceği gibi, mavis sadece görüntü işleme ile ilgilenen %100 Türk sermayeli tek firmadır ve yerli yabancı pek çok firma için %100 kontrol esasına dayanan hazır çözümler sunmaktadır.

Görüntü İşlemede Doku Analizi

Hortum üzerine sarılı kumaşın varlığının tesbiti

Görüntü işlemede son derece karmaşık ve hayli ileri derece algoritmalar gerektiren çoğu kontrol ve metodoloji, HALCON kullanarak basitçe çözülebilir. Bugün Kros Otomotivde, siyah EPDM boru üzerinde yine siyah renkli ipliklerle örülmek suretiyle oluşturulmuş dokunun var olup olmadığının kontrolünün yapılması gerekiyordu.

Görüntü işleme terminolojisinde, pattern matching, texture analysis, surface analysis vb. isimler altında ciddi çalışmalar olarak kendini gösteren bu konuya HALCON ile pratik bir yaklaşımda bulunalım.

Üzerinde çalıştığımız projeye ait orijinal görüntü solda yer almaktadır. Görüntüde, yeşil dörtgen ile belirtilmiş alanda kumaş örgünün varlığı, sarı dörtgen ile belirtilmiş alanda ise yokluğu araştırılacaktır.

Kumaşın varlığını test eden HALCON programı :

1. Resim Yüklenir, İlgilendiğimiz alan (ROI) oluşturulur ve resim bu ROI ye indirgenir

read_image (Image, 'D3.bmp')
*draw_rectangle2 (3600, Row, Column, Phi, Length1, Length2)
gen_rectangle2 (Rectangle, 687, 406, -1.4, 128, 24)
reduce_domain (Image, Rectangle, ImageReduced)

indirgenmiş resimde (ImageReduced) histogram değerlerine baktığımızda soldaki gibi dağılmış olduğunu görürüz. İdeal olmayan bu dağılım, üzerinde çalıştığımız resmin fazla aydınlatılmış olmasından kaynaklanmaktadır. Fazla aydınlatma, kumaş dokusunu görebilmek açısından önemli. Aksi halde kumaş olan yerler siyaha yakın görüneceğinden, ayırdetmek daha da zorlaşacaktı.

Bu aşamada ilk yapılması gereken, belirli bir aralığa yığılmış olan histogramı 0-255 arası tüm aralığa yaymak. Bunun için HALCON’un scale_image_max fonksiyonunu kullanacağız.

2. İndirgenmiş Bölgenin belirginleştirilmesi

scale_image_max fonksiyonu uygulanmış bölge, solda görüldüğü gibi oldukça belirginleşti. Histogram 0-255 arasına düzgün olarak dağıldı. Aradaki kuantalanmış boşlukları gidermek ve yumuşak bir geçiş sağlamak için mean_image filtresi uygulanabilir. Bunu uygulamadan hemen önce emphasize komutu ile birlikte, resim iyice belirginleştirilir. Artık bin_threshold ile seçim kolaylıkla yapılabilir.

3. Seçim ve Karar

solda, bin_threshold sonrası resmin son hali görülüyor. Artık kumaşı oluşturan doku iyice ortaya çıktı. Bundan sonrası ortaya çıkan bu yapıyı değerlendirmeye kalıyor. Ben bu örnekte basit olması açısından closing_circle ile boşlukları doldurmayı denedim ve gayet sağlıklı sonuçlar aldım. (Bu noktadan sonra sayısız alternatif olabilir)

Tüm HALCON kodunu listeliyorum

read_image (Image, 'D3.bmp')
*draw_rectangle2 (3600, Row, Column, Phi, Length1, Length2)
gen_rectangle2 (Rectangle, 687, 606, -1.4, 128, 24)
reduce_domain (Image, Rectangle, ImageReduced)
scale_image_max(ImageReduced, ImageScaleMax)
emphasize(ImageScaleMax, ImageEmphasize, 40, 40, 20)
mean_image(ImageEmphasize, ImageMean, 5, 5)
bin_threshold(ImageEmphasize, Region)
closing_circle(Region, RegionClosing, 5)
connection(RegionClosing, ConnectedRegions)
select_shape (ConnectedRegions, SelectedRegions, 'area', 'and', 4000, 25000)
count_obj(SelectedRegions, Number)
if (Number = 1)
    write_string(3600, 'Örgü Belirlendi.')
else
    write_string(3600, 'Örgü Belirlenemedi!')
endif

3. satırda yer alan gen_rectangle2 fonksiyonunu

gen_rectangle2 (Rectangle, 687, 606, -1.4, 128, 24)

şeklinde değiştirirseniz, örgü olmayan bölümde örgünün yokluğunu düzgün olarak test edebildiğini göreceksiniz.

Programı çalıştırmak isteyenler için, örnek olarak kullandığım D3 isimli dosyayı ekliyorum. Aşağıdaki resimler arasından D3 isimli dosyayı seçerek kendi makinanıza kaydedebilirsiniz.

Görüldüğü gibi, sadece 17 satırlık basit bir HALCON kodu ile, son derece karmaşık sayılabilecek metodolojilere pratik bir yaklaşım getirmiş olduk.