Cemal Bey,
Bahsettiğiniz proje yapılıyorsa ama imge işleme kısmını sizden beklemiyorlarsa o zaman bu işi yapabilecek başka biri olduğu sonucu çıkar. O kişi size yol gösterebilir. Eğer çalıştığınız firma sizin yapacağınızı varsayarak bu projeyi aldıysa o zaman ne demeli bilemiyorum, fazla ilerlemeden bu konuyu ilgili kişilerle masaya yatırmanız gerekli sanırım.
Yapılan işi adını koyalım:
Machine Vision. İmge işleme bunun içerisinde önemli ama çoğu projede küçük kısım (bu yanıt kullandığınız kütüphanenin sunduğu işlevlere göre değişir doğal olarak). Machine Vision'ı, sistem mühendisliğinin alt dalı olarak görmek gerek. Kamera, optik, ışıklandırma, imge işleme, yazılım, I/O, hatla elektromekanik entegrasyon... gibi çok sayıda problemi çözmek gerek. İnternetten araştırma yaparken computer vision ya da image processing yerine machine vision'a odaklanmanız uygun olur. Belirli bir (imge işleme) yöntemin(in) ayrıntılarına girmeniz gerektiğinde diğer terimlere dönebilirsiniz.
İmge işleme alanında en gelişmiş açık kaynak lisanlı kütüphane tartışmasız OpenCV. ITK+VTK gibi daha özellişmiş kütüphaneler de var ancak sizin durumunuzda OpenCV doğru tercih olur. OpenCV, adı üzerinde, Computer Vision kütüphanesi. Amacına ulaşmak için desteklemesi gereken imge işleme primitifleri machine vision'da da kullanılan imge işleme yöntemlerini kısmen içeriyor. Ancak blob analysis bakımından zayıf olduğundan benim bildiğim en az 2 farklı cvblob kütüphanesi var OpenCV için. OpenCV'de webcam'den daha ciddi bir kamerayla çalışmak istediğinizde ilk duvara toslamış olacaksınız. Endüstriyel kameraların çok çeşitli, göz ardı edemeyeceğiniz ayarları var. Bunları desteklemek için de her bir kameranın kendi SDK'ini öğrenmeniz ve OpenCV ile entegre etmeniz gerek. Ticari kütüphaneler endüstride kullanılan çoğu kameraya bağlanma, ayar yapma ve görüntü alma işlemini çok kolaylaştırıyor.
Bir kişinin C bilgisinin bile hangi düzeyde olduğunu belirlemek bile çok zor iş. Mutlak ölçütler olamaz, yapılacak işin gerekleri belirler kişinin yeterliliğini. Hele imge işleme gibi basit bir eşiklemeden 3D'ye kadar uzanan bir alanda bu tür bir analiz daha da zor olsa gerek. (CV'yi de katarsak iş çığrından çıkar.) Ancak iletilerinizden çıkardığım kadarıyla yolun çok başlarındasınız. Okulda herhangi bir imge işleme ya da sinyal işleme dersi almadığınızı sanıyorum. Bu durumda nasıl bu işlere heveslendiğinizi doğrusu anlayamadım. Çalıştığınız şirket artık vision işleri de yapacaksa ve bunu sizden bekliyorsa burada ciddi bir sorun var bence. Machine Vision'ın yazılım kadar donanım işi olduğunu da bilmek gerek. Bu konularda da yetkinleşmeyi hedeflemeniz ya da sizin yanınızda bu konulara eğilecek başka birinin olması gerek.
Kendinizi sınamanız için aklıma gelen bir yöntem: Daha önceki iletimde linkini verdiğim kitabın içindekilerine bakın. Oradaki bölüm başlıklarından en az %40'ı hakkında fikriniz varsa bu iyi bir noktada olduğunuzu gösterir. Alternatif bir kitap da Handbook of Machine Vision. Bu kitap çok teknik bir kitap, sadece 1 bölümü imge işleme ile ilgili (8. bölüm). O bölümün içindekilerine bakın. (Google Books'tan kitaba -kısmen- ulaşabiliriniz.) Bu kitabın 2. bölümü machine vision sistemi kurmak ne demek çok güzel özetliyor.
Benim şunu indirin ve kurcalayın ya da bu kitabı okuyun gibi tavsiyelerim ancak bu konuda kariyer yapacak kişiler için olabilir. Bir yandan da vision yapayım diyerek bu işlerin altından kalkılamaz bence.
Size verebileceğim en doğru tavsiye (eğer buna iznim varsa), MVTec Halcon, Stemmer Common Vision Blox, Matrox Imaging Library ya da Cognex VisionPro gibi bir ticari bir kütüphane kullanmayacaksınız ticari vision projeleri yapmaya giriş
memeniz olacaktır. Aksi takdirde ticari projeler için anlamlı olan bir sürede bir ürün ortaya çıkarmak mucize olur.
Bunu derken yazılım kadar önemli olan donanımla ilgili birşey söylemediğimi hatırlatmak isterim. Machine Viison'da imge işlemek kadar önemli bir iş de uygun görüntü almaktır.
Qt işin GUI'i, DB, multi-threading kısımlarını çözer sadece.
Özetle, şu anda elinizdeki en iyi araç OpenCV şüphesiz. Ama vision kariyeri hedefliyorsanız bu hedefinizi tekrar düşünmenizi öneririm.
Bu ileti dizisinde yanıt veren herkes tabi ki iyi niyetli, ancak endüstriyel bir proje, hele ölçüm gibi görece basit projeler, ya çalışır ya da çalışmaz. Bunun arası olmaz. Her zaman %100 başarıma ulaşılamaz, ancak 99'den aşağısının kabul edilebilmesi için OCR, örüntü tanıma gibi üst düzey işler yapıyor olmanız gerek. Bu nedenle komple bir machine vision sisteminin gereklerini göz önünde bulundurmadan sadece yazılım konusuna odaklanarak Cemal Bey'e yol göstermek sanıldığı kadar iyilik olmuyor aslında.
İyi çalışmalar,
Çağdaş Kayra Akman