Mustafa Sarı

Mustafa Sarı hakkında

(Samsun, 26.03.1973, ,İTÜ, Elektronik ve Haberleşme Mühendisliği, Yazılım)

Vibrasyonlu Besleme Sistemleri ve Okeymatik

Endüstride vibrasyonlu besleme sistemleri sık sık kullanılır. Dizmek, sıralamak, ayıklamak, belirli bir yere yönlendirmek vb. amaçlarla bir çok işletmede kullanılırlar.

Bir arkadaşım bana otomatik okey masasından (okeymatik) bahsettiğinde, bu işin vibrasyonlu besleme sistemi ile basit bir şekilde yapılabileceği hiç aklıma gelmemişti. Okey oynamadığımdan (ve masayı gözümle görmediğimden) youtube da birkaç video buldum. (okeymatik, otomatik okey masası ya da benim yaptığım gibi “automatic mahjong table” ifadeleri ile aratabilirsiniz. )

Aşağıdaki linkte verdiğim videoda görüldüğü gibi, son derece hızlı bir şekilde diziyordu.

http://www.youtube.com/watch?feature=player_embedded&v=FJx9n-Itl8

Peki, sistem nasıl çalışıyor.
Sistem, 2 farklı set kullanıyor. Daha önceden dizilmiş 1. set hemen masaya çıkartılırken, 2. set, vibrasyonlu besleme sistemi ile diziliyor, kullanıma hazırlanıyor. Böylece bekleme hemen hemen hiç olmuyor.

İşte bu da, sistemin nasıl çalıştığını gösteren video .

http://www.youtube.com/watch?feature=player_embedded&v=rnCgsty4_0o

İşin içine Çin işi seri üretim de girince, maliyetler çok ucuz rakamlara inebilmektedir. (Ülkemizdeki satış fiyatları genelde 2-3 bin TL mertebesinde)

TOF (Time Of Flight) Kameralar ve yeni Kinect

TOF (Time of Flight) kameralar, normal kameralara ilaveten işin içine mesafe ölçüm sensörlerinin de sokulduğu, dolayısıyla 3 boyutlu görüntü alınabilen kameralardır. Mesafe ölçüm sensörleri, genellikle infrared bir kaynaktan, hedef üzerine foton gönderir. Fotonlar hedeften yansıyıp geri gelir. Çok hassas bir zaman ölçümü ile, gelen foton gecikmesinden hedefin bulunduğu konum hassas olarak belirlenir. (Radar olarak bildiğimiz yöntem) Genellikle matris şeklinde dizilmiş binlerce sensör kullanıldığından, görüş alanındaki hedef 3 boyutlu olarak hızlı bir şekilde çıkartılmış olur.

Soldaki resim Panasonic D-Imager TOF sensörünün çalışma mantığını sembolize etmektedir. Yansıyan fotonların, günışığı ya da başka ışık kaynakları ile karışmaması için, dalga boyu bilinen IR aralığında seçilmesine özen gösterilir. Yine de gün ışığı spektrumu çok geniş olduğu için, özellikle arka plandan yansımalar bazen sonucu olumsuz etkileyebilir.

TOF konusunda, kesinlikle incelenmesi gereken bir diğer endüstriyel ürün ise MESA Imaging firmasının SwissRanger 4000 isimli ürünüdür. 4.000 USD civarında bir satış fiyatı vardır.

Daha ucuz bir alternatif için Microsoft yeni Kinect göze çarpmaktadır. Yakında piyasalarda olacak olan yeni xBox oyun konsolu için geliştirilmekle birlikte çok farklı sektörlerde sıkça karşımıza çıkacağı kesin gibidir. Yeni Kinect, eskisinin aksine TOF teknolojisine dayanmaktadır. (Eski Kinect Stereovision teknolojisine göre çalışmaktaydı.)

Microsoft, yeni Kinect için, İsrail Elron firmasının ZCam isimli ürününü kullanmaya karar verdi. Bunun için, öncelikle Elron firmasını, ortalama olarak 5 milyon USD gibi bir rakama satın aldı. Bununla da yetinmeyip, 3D konusunda öncül bir diğer sensör firması Canesta yı da (rakam açıklanmadı) bünyesine kattı. Bu satın almalar, 3D konusunda Microsoftun gözü kara bir şekilde yatırım yapmaya devam edeceği anlamına da gelmektedir. Diğer yandan, özellikle Amerikada çok sıkı olan patent ihlal davaları/mahkemeleri ile (Kinectin patenti PrimeSense firmasına aittir) uğraşmak istemediği anlamına da gelir.

Bu video http://youtu.be/Hi5kMNfgDS4?t=5m27s yeni Kinectin 3 boyutlu algılama ve yeni teknolojiler konusunda ne kadar başarılı olduğunu göstermektedir.

Bu video ise, https://www.youtube.com/watch?v=5_PVx1NbUZQ Canesta’nın yeni sensörünün yeteneklerini göstermektedir. Sensör boyutuna bakılırsa, Canesta’nın bu yeni tip 3D sensörünü mobil uygulamalar (cep telefonları) üzerinde göreceğimiz günler yakın demektir. (Videonun 3 yıl önce çekildiği düşünülürse, şu an gelinen noktanın çok daha ileride olduğunu tahmin etmeye gerek yok)

Tüm bu teknolojiler gelişirken, biz neredeyiz?

MAVIS olarak, piyasada var olan bir çok farklı ürünü denedik, SDK larını inceledik, Avantaj ve dezavantajlarını değerlendirdik. (Microsoft Kinect for Windows, Asus xTion Pro, Leuze LPS36 gibi…) Halihazırda, klasik RGB kameralar ile alınan görüntülerve HALCON 3D/Stereo Vision yöntemleri ile çalışmak daha makul gibi görünmektedir. Distribütörü olduğumuz iDS imaging firması, 3D Imaging konusunda Ensenso isimli ürününü geliştirmiştir. HALCON uyumu, iDS güvencesi ve daha makul fiyatları nedeniyle tercih edilebilir.

Bu makaleleri takip edenler için, TOF v.b. yeni nesil sensörler ve uygulama alanları hakkında yeri geldikçe bilgiler vermeyi ve yeni başladığımız bir projeyi sunmayı düşünüyorum.

Projeleriniz ve ilave bilgi için, bizimle iletişime geçebilirsiniz.

C, C++, C#, VB, Delphi ile Profesyonel Görüntü İşlemeye Giriş – III

Yazı Dizimizin 3. bölümü ile tekrar merhaba;

HALCON bölüm II de anlatıldığı şekilde indirildi ise, bilgisayarınızda aşağıdaki resimde gösterdiğim gibi, 2 dosya olmalıdır. HALCON programı /halcon-11.0.1-windows.exe) ve örneklerin çalışması için gerekli olan resimler (halcon-11.0.1-images-windows.exe).

Şimdi halcon-11.0.1-windows.exe dosyasını çalıştırarak, HALCON u yüklemeye başlayabiliriz. Standart bir yükleme arayüzüne sahip HACON 11, sorunsuzca yüklenecektir. HALCON 11 yüklenirken, Full yüklemeyi seçebilirsiniz.

İleri dediğinizde, resimleri ayrı olarak yüklemeniz gerektiğini hatırlatan bir diyalog kutusu gösterecektir.

resimler, örneklerin çalışması için gereklidir. Daha önceden indirdiğiniz halcon-11.0.1-images-windows.exe programını, kurulum bitince çalıştırabilirsiniz.

aşağıdaki ekran geldiğinde, (dongle çin driver) hiçbir kutuya işaret koymayın.

 

Tüm kurulum bittikten sonra, resimleri de yükleyin. (halcon-11.0.1-images-windows.exe programını kurun) Bilgisayarınızda, C:\Program Files\MVTec\HALCON 11 klasörünün görünümü aşağıdaki gibi olmalıdır.

 

Şimdi, programın çalışması için lisansa ihtiyacınız olacaktır. Bizden temin edeceğiniz deneme lisansını (license_eval_halcon11_2013_07.dat gibi bir isimde, 670 byte uzunluğunda text dosya) buradaki license klasörüne kopyalayın. Artık HALCON çalışmaya hazırdır. Başlat menüsü görünümü aşağıdaki resimdeki gibi olacaktır.

 

Şimdi artık HALCON ile çalışmaya hazırız. Buradaki HDevelop isimli menü öğesini çalıştıracağız. HDevelop, HALCON geliştirme ortamıdır (IDE). Eğer lisans hatası yok ise, çalıştırdığımızda direk HDevelop IDE si karşımıza gelir.

Eğer, dil türkçe olarak gelmiş ve ingilizce ile çalışmak istiyorsanız, Düzenle menüsü –> Tercihler –> Dil sekmesinden ingilizceyi seçebilirsiniz. HDevelopu yeniden başlattığınızda bu yeni seçtiğiniz dil tercihi geçerli olacaktır.

HDevelop 4 ana pencereden oluşur

1. Graphics Window (Grafik Penceresi) Burada üzerinde çalışacağımız resim gösterilir. Büyültme, küçültme vb. araçlar ile.

2. Operator Window (Operatör Penceresi): Her bir görüntü işleme operatörünü ve parametrelerini gösteren penceredir.

3. Program window (Kod Penceresi) : program yazdığımız, HALCON kodu yazdığımız kod penceresidir.

4. Variable Window (Değişkenler penceresi) : Program çalışırken, her bir değişkeni görebileceğimiz penceredir.

Bu pencerelerin genelde hepsi sık sık kullanılır. Yanlışlıkla biri kapatılmışsa, Ana menüdeki Pencere menüsünden, kapatılmış olan seçilerek yeniden açılır. Artık buraya kadar gelinmiş ise, direk görüntü işleme uygulamaları geliştirmeye başlayabiliriz.

Program Editörde, sağ üstteki butonlardan 2. si, Use Full Text Editör olacak şekilde işaretli (yeşil çek) olsun. Bu durumda, tıpkı diğer programlama dillerinde aşina olduğumuz gibi, serbest olarak alt alta kod yazabiliriz. Aksi halde, diyalog penceresi yardımıyla kod yazılır. Başlangıçta, diyalog penceresi üzerinden kod yazmak daha mantıklı olsa da, ileri aşamalarda full text editör daha kullanışlı gelecektir.

Örneklerin Çalıştığını Teyit Etme

Ctrl-E tuşu ile, ya da araç çubuğundaki Browse Examples butonu ile, ya da Dosya menüsündeki Browse HDevelop Program Examples menü öğesi seçilerek, karşınıza aşağıdaki pencerenin çıkmasını sağlayın.

Yüzlerce HALCON örneğini inceleyebilirsiniz. Sağ taraftan herhangi birini seçip, Open butnuna bastığınızda, örnek HDevelop ekranında açılmış olmalıdır.

F5 tuşuna basarak, çalıştırabilirsiniz.

stop() komutunun olduğu yerde program sizden çalışabilmek için yeniden F5 tuşuna basmanızı bekler. Birkaç örneği incelemeniz, HALCON hakkında size fikir verecektir. Program penceresindeki kodlara genel bir göz atarak, HALCON kodlamasının neye benzediği konusunda fikir sahibi olabilirsiniz. Kodlar, gözünüzü korkutmasın. Zamanla aşina olacaksınız. Yapacağımız örnekler ile, kısa sürede siz de HALCON kodlamasına hakim olacaksınız. Örnekleri incelemek, çok iyi fikir verecektir. Bu yüzden sık sık örnekleri incelemenizi tavsiye ederim. Hemen hemen her konuda, her sektöre, her fikre uyan bir ya da daha çok örnek mevcuttur. Sırf bu örnekleri incelemek bile, size HALCON hakkında güçlü bir fikir verecektir. Tabi, biz sıfırdan başlayarak, HALCON kodu yazmayı, hemen arkasından bunu C#, VB gibi dillere export etmeyi ve kendi uygulamamızı geliştirmeyi adım adım göstereceğiz.

Eğer buaraya kadar geldiyseniz, bir sonraki makalede, kendi ilk özgün HALCON kodumuzu geliştireceğiz. Bir sorun yaşamışsanız, buradan bildirebilirsiniz.

Bir sonraki bölüme geçmek için tıklayınız…

C, C++, C#, VB, Delphi ile Profesyonel Görüntü İşlemeye Giriş – II

Yazı dizimizin, yeni bölümünde tekrar merhaba.

İlk bölümde, üzerine basarak vurguladığımız, profesyonel PC tabanlı görüntü işleme uygulaması oluşturabilmek için, öncelikle profesyonel bir kütüphane kullanacağız. Bu makaleler dizisinde, bu kütüphanenin yüklenmesinden, kurulumuna, uygulama geliştirmeden, exe (çalışan kod üretmeye) kadar her şeyi detaylı olarak uzun uzun anlatılacaktır.

Şimdi bir yazılımcı olarak, neden kütüphane? diye bir soru geliyor insanın aklına. Hiç ticari (profesyonel) bir kütüphane kullanmasak, her şeyiyle kendimiz geliştirsek daha iyi olmaz mı? Bunun en kısa yanıtı : Olmaz. Bir veritabanı uygulaması geliştireceğimiz zaman, SQL, Oracle, MySQL, Acces vb. bir ürün (onlar da bir kütüphane / framework nihayetinde) kullanmamız gerektiğini sorgulamıyorsak, görüntü işleme uygulamamızda da bir kütüphane kullanmamız gerektiğini sorgulamamalıyız.

Ancak belki aşağıdaki durumlarda ticari bir kütüphane yerine kendi kütüphanemizi geliştirmemiz mantıklı olabilir;

  • ArGe desteği alan bir şirket vardır ve bu destek yazılacak bu yeni kütüphane için verilmiştir.
  • Üniversitede yüksek lisans / doktora v.b. bir çalışma yapılıyordur ve yapılacak çalışmanın özgün olması istenmektedir.
  • Ticari bir ürün gerekmiyordur. Yavaş / eksik vb. olsa bile, amaç kendi yaptığımız iy/kötü basit bir görüntü işleme uygulamasıdır ve bu yüzden detaylı bir kütüphane kullanmaya/öğrenmeye gerek duyulmamaktadır.
  • Geliştirilecek ürün binlerce adet satılacaktır ve binlerce defa başka kütüphanelere lisans ücreti ödenmek istenmemektedir.
  • Geliştirilecek ürün çerçevesi çok net belirlenmiş tek bir üründür (Plaka Tanıma / Yüz tanıma vb.) Bu durumda bir kütüphanenin yüzde 1 lik fonksiyonlarını kullanıp para ödemek yerine, hiç kullanmamak daha mantıklı olabilir.
  • Askeri ya da çok çok gizli bir proje vardır ve siyah giysili adamlar başka bir kütüphane kullanılmasına izin vermemektedirler…

Ülkemizde bu yolu izleyen (kendi görüntü işleme kütüphanesini geliştiren), bir (ençok iki) elin parmakları kadar şirket vardır. Bunlar genelde üniversite bünyelerinde ya da teknoparklarda kurulmuşlardır. Bir şekilde teşviklerle (personel ya da devletin sunduğu proje destekleri (TEYDEB, Tübitak, Kosgeb, Avrupa Birliği vb.)) ayakta kalmaktadırlar.

Eğer yukarıdaki maddelerden herhangi biri size uyuyorsa, ya da benim bilmediğim/saymadığım herhangi bir sebepten dolayı kendi görüntü işlem kütüphanenizi geliştirmek/kullanmak konusunda ısrarlı iseniz, bu yazı dizisi artık size hitap etmeyecektir. (Bir mail ile haklı gerekçelerinizi bana bildirirseniz, burada memnuniyetle paylaşmaya hazırım)

Bu arada, görüntü işleme kütüphanesi yazmaya hevesli olan arkadaşlara bu işin çok ta kolay olmadığını hatırlatmak isterim. Mesela sadece kenar bulma üzerine, 20 ye yakın yaygın algoritma vardır (canny, lanser, deriche, shen, sobel …) ve bunların tek birini bile implemente etmek pek kolay bir iş değildir. Örneğin bu PDF, canny edge detection algoritmasının mantığını anlatmaktadır.

Diğer yandan, her bir görüntü kaynağı (kamera, fotoğraf makinesi vb.) kendi SDK sı ile gelmektedir. USB2, USB3, Gigabit, CameraLink, GenICam vb. çeşitli yöntemler ile bilgisayara bağlanabilen bu cihazlardan görüntü almak, bu cihazlara hükmedebilmek (pozlama, kazanç, AOI işlemleri vb.) için, işi gücü bırakıp her bir ayrı üreticinin kamera/fotoğraf makinesi detaylarını öğrenebilmek gerekmektedir ki, yüzlerce marka/model ve yazılım sürümleri arasında kaybolmadan bunları yapabilmek te pek kolay değildir)

Özetle, (bana inanın dostlar), profesyonel bir görüntü işleme uygulaması geliştirmek istiyorsanız, en iyi yol, güçlü bir ticari kütüphane kullanmaktır.

Bu durumda soru şuna indirgeniyor. Peki hangi kütüphane? Önce cevabı vereyim, sonra sebeplerini anlatayım. cevap : HALCON.

Neden HALCON?

Burada, pazarlamacı/reklamcı ağzı ile ifadeleri bir tarafa bırakıp, gerçek dünyadan bir örnek vermek istiyorum.

1960 lı yıllardan beri, kendi görüntü işleme teknolojileri üzerine geliştirmeler yapan NASA, 2010 yılından itibaren HALCON kullanmaya karar vermiştir. Robotik görme ve 3D vision dediğimiz teknolojilerde HALCON kullanan R2 robotunu uzaya göndermiştir.

Gizliliği ve üst düzey teknolojisi ile bilinen NASA gibi bir kurumun, kendi görüntü işleme tekniklerini bir yana bırakıp, Alman malı bir görüntü işleme kütüphanesi kullanmaya karar vermesi yeterince etkileyici bir örnek. Buna rağmen, biz yine de birkaç makul gerekçe sunalım.

  • HALCON halihazırda var olan en güçlü ve en hızlı görüntü işleme kütüphanesidir.
  • Çok gelişmiş programlama desteği sunar. (.NET, Linux, MacOS..)
  • Kendi geliştirme ortamı vardır. (Sadece görsel bir tool değil, kendi programlama dili ile kod yazabildiğiniz Visual Studio benzeri bir IDE sunar)
  • Sizin adınıza C#, VB, Delphi … için kod üretir.
  • Gerçek bir exe üretirsiniz. (Interpreter / yorumlayıcı vs. değil)
  • Üniversitelerde yaygın olarak kullanılmaktadır (standart hale gelmiştir)

gibi maddeler ilk aklıma gelenler (Tekrar ediyorum, pazarlamacı/reklamcı ifadelere yer vermek istemiyorum. Yapılan Benchmark testlerinde HALCON açık ara önde bir kütüphanedir fakat uzun uzun bunlara yer verip, operatör sayısı, işlemci kullanma yüzdesi, hızı vb. vb. şimdilik gereksiz)

Peki HALCON nasıl tedarik edilir, nasıl yüklenir, maliyeti nedir?

HALCON, aşağı yukarı 500 MB büyüklüğünde bir SDK dır. bir o kadar da örnek resimleri vardır. Ortalama olarak 1 GB civarı bir üründür.

Bu ürünü öncelikle kendi web sitesinden ücretsiz olarak indirebilirsiniz.

İndirme esnasında, register (kayıt) olmanızı isteyecektir. (Korkmadan register olabilirsiniz. Spam mail bombardımanına, gerekli gereksiz hatırlatmalara vb. maruz kalmazsınız.) Register olurken irtibatta olduğunuz firma v.b. bir yer varsa oraya MAVIS yazmanız tavsiye olunur. Girdiğiniz bilgiler, belirttiğiniz firmaya iletilecek ve eğer direk bize gelirse hızlıca size lisans verebiliriz. Aksi halde süreç biraz uzayabilir

Alternatif olarak, 2GB bir flash disk ile ofisimize gelip beni bulursanız size direk kopyalayıp / geçici lisanslayıp verebilirim.

webden yüklediyseniz, hem programı (32 ya da 64 bit) hem de resimleri ayrı ayrı yüklemeniz gerekmektedir.

Yükleme işlemi bittikten sonra, programın çalışabilmesi için sizden lisans isteyecektir. Bana ulaşarak (info@mavis.com.tr) geçici lisans alabilirsiniz.

HALCON 2 tip versiyona sahiptir.

Runtime ve Development. Runtime versiyonu son kullanıcının makinasına yüklenecek kısımdır. Development ise, geliştirme yapılacak bilgisayarda (programcının bilgisayarında) çalışacak olan versiyondur.

Lisanslama maliyeti, Runtime için kullanılacak modüllere göre değişim gösterebilmektedir. (Net rakamlar için şirketimizle irtibata geçiniz. Ben teknik bir personel olduğum için, çoğu kez lisans maliyetleri ile ilgilenmem.)

Development lisans maliyeti haliyle daha yüksektir. (Üniversiteler için gayet ciddi indirimler uygulanmaktadır.)

Şimdi, bir programcı olarak neye ihtiyacınız var. Herşeyden önce, tüm sistemi denemek, çalıştırmak için deneme lisansı ile, eksiksiz, tam fonksiyonalite ile çalışabilirsiniz. Ürününüz satılma noktasına geldiyse, o zaman net lisans rakamlarını öğrenirsiniz.

Görüntü işleme uygulamaları, çok ucuz uygulamalar değildir. Bence HALCON lisans maliyetleri, kesinlikle ürkütücü değildir. Yine de tekrar belirtmek isterim, HALCON ücretsiz bir ürün değildir. Böyle bir beklenti içinde olanlar, yazı dizisinin devamını beklemeden burada ayrılabilirler.

Programcı, kendi makinasına HALCON development ürününü kurar ve görüntü işleme dünyasına adımını atar.

Makalemizin 3. sayısına ulaşmak için tıklayınız…

Yakında Görüşmek Üzere.

 

C, C++, C#, VB, Delphi ile Profesyonel Görüntü İşlemeye Giriş

Görüntü işleme gün geçtikçe daha çok uygulama alani bulmaktadır. Bunun bir sonucu olarak, profesyonel veya amatör görüntü işlemeye ilgi duyan insan sayısı da artmaktadır. Bir yerlerden başlamak isteyenler için, boş vakitlerimde bu makaleler dizisini yazmaya karar verdim.

Görüntü işleme uygulamalarını, 2 ana başlık altında toplayabiliriz.

  1. Akıllı Kameralar (Smart Camera) ile yapılan görüntü işleme uygulamaları
  2. PC tabanlı görüntü işleme uygulamaları.

Akıllı kameralar ile yapılan uygulamalar, daha çok PLC programlama mantığına yakındır. Kamera üzerindeki işlemcide gömülü (embedded) bir yazılım ve çeşitli giriş – çıkış arabirimleri mevcuttur. Programcı, PLC programlar gibi kamerayı programlar ve programlanmış kamera bir nevi sensör gibi çalışarak, önceden belirlenmiş görevleri gerçekleştir. Daha çok önde gelen sensör firmaları tarafından üretilirler. (Festo, Cognex, Keyence, Sick, Omron, Banner … ilk aklıma gelen yaygın bilinen akıllı kamera / smart camera markalardır) Basit uygulamalarda, pratikliğinden dolayı tercih edilebilir olsalar da bu makalelerin konusu olmayacaklardır.

Biz burada, PC tabanlı, C, C++, C# veya VB ile profesyonel görüntü işleme uygulamaları geliştirmeye yönelik bilgiler vereceğiz. Tek başına çalışabilen (exe), istediğiniz yere kurulum yapabileceğiniz (dağıtılabilir) kendi yazılım kodunuz ile geliştirebileceğiniz görüntü işleme uygulamaları için yol göstereceğiz. Amaç, herhangi bir kamera kullanarak, o kameranın nitelikleri ile (bir yere kadar) bir şeyler yapmak değil, tamamen bağımsız çalışabilen kendi çözümünüzü geliştirebilmeniz olacaktır. Üstelik çoğu kez, akıllı kameralar ile yapılabilenden, çok daha fazlasını hedefleyeceğiz.

Profesyonel görüntü işleme uygulamaları, hemen her koşulda çalışabilecek, son derece hızlı ve tutarlı, belirli bir müşterisi olan (ya da paraya çevirilebilecek bir değer katan) uygulamalardır. İnternette, C# ya da VB ile görüntü işleme üzerine çeşitli fonksiyonların, bitmap işlemlerinin vb. anlatıldığı pek çok makale vardır. Bunlar, ya öğrenciler ya da konuya meraklı yazılım geliştiricileri içindir. Burada anlatılacak olanlar, bu gibi fonksiyonlar değildir. (Dolayısıyla bitirme projesi, dönem ödevi vb. bir amaçla bu makaleden yararlanmayı umuyorsanız, muhtemelen işinize yaramayacaktır.) Örneğin bir resimdeki dairenin alanını, iç içe for döngüleri ile vs. bulmaya kalkışmayacağız. Hemen her sektör için, endüstriyel ve profesyonel görüntü işleme uygulamaları geliştirebilmeyi anlatacağız.

Bu makaleler kimin için uygundur

  • Kendisine ait bir görüntü işleme uygulaması (exe) yapmak isteyenler
  • Akıllı kameralar ile yapılandan çok daha fazlasını yapmak isteyenler
  • İşyerinde / fabrikasında belirli işleri kendi geliştireceği sistemler ile kontrol etmek isteyenler
  • Yazılım bilgisi / tecrübesi olup, görüntü işleme konusunda yeni olanlar
  • Halihazırda geliştirdiği cihaz / elektronik aygıt vb. için akıllı görme yeteneği eklemek isteyenler vb.

Neye gereksinimiz var?

Neredeyse sadece bir PC. Muhtemelen Visual Studio (geliştirme ortamınıza göre) ya da en azından Visual Studio Express edition kurulu olmalıdır. Teknik bilgi olarak, temel yazılım bilgisi yeterlidir. (örneğin bir telefon defteri uygulaması yapabilecek düzeyde programlama bilginiz varsa, bu bilgi yeterlidir. Aksi halde, öncelikle programlama bilgisi edinmelisiniz.) Sanılanın aksine, herhangi bir kameraya gereksiniminiz yoktur. (İlerleyen makalelerde, kamera tavsiyesinde yeri geldikçe bulunacağım) Başlangıç için gerek yoktur ya da webcam bile olur.

Ne Tür Uygulamalar Yapabiliriz?

Hemen hemen her tür. Robotik, OCR, Ölçüm, Var-Yok, Bulma, Eşleştirme… Aklınıza ne geliyorsa.

Geliştireceğim Uygulama Nerelerde Çalışır?

PC ortamında. Genellikle Windows yüklü tüm PC lerde.

İleride, yazı dizisine devam edeceğim. Görüşleriniz/istekleriniz için yorum yapabilir ya da info@mavis.com.tr ye mail atabilirsiniz.

Yazı dizisinin 2. bölümü için tıklayınız…

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.

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.