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.

 

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.