Görüntü işleme Hakkında

622 views
Skip to first unread message

CMLDMR

unread,
Mar 26, 2011, 3:22:48 PM3/26/11
to Qt Türkiye
Merhaba arkadaşlar,

Genel bir sorum olucak, Götüntü işleme konusunda ne gibi tavsiyelerde
bulunabilirsiniz?

mesela hızlı bir platform olarak(Win, Linux vs...)
görüntü işleme kütüphanesi olarak sadece Qt yeter mi yada MFC yada ne
bilim başka kütüphanelerde kullanmak gerekli mi, yoksa OpenCV gibi
ekstra kütüphanelere ihtiyaç duyulur mu?

bu ticari olan kütüphanelerde olabilir mesela Open eVision ücretli bir
kütüphane yada halcon gibi, ama bildiğim kadarı ile open eVision MFC
ile uyumlu çalışıyor ama benım MFC ile hiç aram iyi değil.

Arkadaşlar bu konu hakkında bilgisi olanların acil tavsiyelerini
ihtiyacım var.
Herkese teşekkürler. iyi akşamlar

Çağdaş Kayra Akman

unread,
Mar 26, 2011, 7:23:38 PM3/26/11
to qttu...@googlegroups.com
Qt ya da MFC görüntü işleme kütüphanesi değiller. İmge işleme çok geniş bir alan, bu nedenle anlamlı bir zamanda sonuç elde edebilmek için hazır bir kütüphane kullanmanız gerekir.

OpenCV: Computer Vision kütüphanesi, doğal olarak imge işlemek için çok sayıda fonksiyon içeriyor.
Halcon: Ticari bir Machine Vision kütüphanesi, OpenCV'den daha gelişmiş bir imge işleme kütüphanesi ancak Computer Vision odaklı olmadığından yüz tanıma gibi amaçlara yönelik geliştirilmiyor. Open eVision, MIL, Cognex VisionPro, Stemmer Common Vision Blox benzer ticari imge işleme / machine vision kütüphaneleri.
CImg: basit bir imge işleme kütüphanesi ancak uygulamanız için yeterli olabilir.

Google'da biraz zaman geçirince eminim başka kütüphaneler de çıkacaktır. ITK/VTK ikilisi de ilginizi çekebilir.

İmge işlemekten kastınız bir formattan başka bir formata dönüştürmek, kesmek, boyutunu ya da çözünürlüğünü değiştirmek gibi işlemlerse Qt de tek başına yeterli olur.

Çağdaş Kayra Akman

26 Mart 2011 21:22 tarihinde CMLDMR <cemald...@gmail.com> yazdı:

--
Qt Türkiye E-Posta Listesi
Yazılanlardan sadece yazan sorumludur...
Mesaj göndermek için qttu...@googlegroups.com
Listeden çıkmak için qtturkiye-...@googlegroups.com
Liste hakkında daha fazla bilgi için
http://groups.google.com/group/qtturkiye
Qt Türkiye: http://qt.comu.edu.tr

ahmet ekelik

unread,
Mar 27, 2011, 4:06:26 AM3/27/11
to qttu...@googlegroups.com
Görüntü işleme konusu çok güçlü işlemciler gerektirir. Kullandığınız işlemcinin ne olduğunu yazarsanız eğer daha net cevaplar oluşabilir. Embedded bir platform mu mesela, Omap3530 vb. Yoksa PC üzerinde İntel - AMD gibi bir işlemci ile mi çalışacaksınız.?


26 Mart 2011 21:22 tarihinde CMLDMR <cemald...@gmail.com> yazdı:
Merhaba arkadaşlar,

CMLDMR

unread,
Mar 27, 2011, 5:27:49 AM3/27/11
to Qt Türkiye
işlemci intel, Benım kastettiğim şey mesela bir dondurma çubuğu
düşünün. çubuğun boyunu enini kalınlığını ölçüp hata arıycak. saniyede
40 tane çubuk kontrolü, donanım kadar yazılımında etkisi var. kendi
yazdığımız code değil kütühaneden bahsediyorum. QImage üzerinde piksel
tabanlı işlemler yapılabilinniyor ama aynı şey OpenCV ilede ama hız
konusunda OpenCV ve QImage karşılaştırılaz sanırım değil mi. Yani
benim hız problemimi kullandığımım kütüphane bazın minimuma indircek
bir sistem(Kütüphane, Qt veya MFC vs, Donanım(işlemci, Cam vs..))
hassas konular oldukça

Deha Kuran

unread,
Mar 27, 2011, 6:16:26 AM3/27/11
to qttu...@googlegroups.com
Merhabalar,

Benzer bir uygulamada ben openCV kütüphanesini kullanmıştım. Belirli bir ROI( Region of Interest) belirleyip, edge detection ile dimensions ile ilgili sonuçlar elde etmiştim. Benim uygulamada zaman kriteri yoktu o yüzden openCV diğerlerine göre daha hızlıdır değildir diyemeyeceğim ama basit uygulamalar ile süre ölçümü yapar ona göre başka kütüphanelere yönelebilirsinz.

İyi Çalışmalar

27 Mart 2011 12:27 tarihinde CMLDMR <cemald...@gmail.com> yazdı:

--

Çağdaş Kayra Akman

unread,
Mar 28, 2011, 2:47:43 AM3/28/11
to qttu...@googlegroups.com
Cemal Bey,

Qt ya da başka bir GUI kütüphanesinin imge piksellerine erişim sağlamasından bahsetmeniz imge işleme algoritmalarını kodlamayı düşündüğünüz anlamına geliyor. Sizi ciddi olarak uyarmak zorundayım. Bu yola girmeyin. Ticari projeleri anlamlı sürelerde tamamlamak temel imge işleme algoritmalarını ötesinde yetenekleri olan kütüphaneler gerektirir.

Yapacağınız uygulama için OpenCV ya da benzeri bir imge işleme kütüphanesi kullanmanız zorunlu. OpenCV sizin projeniz için en doğru kütüphane değil bu arada. Ancak bu tür işlerde yazılım kadar kullanacağınız lens, kamera, ışık da önemli. Bunların herbiri ayrı bir uzmanlık konusu.

Sorularınızı bu gruba göndermeniz imge işleme alanında çalışmadığınızı düşündürüyor. Bu tür endüstriyel imge işleme projeleri ve ürünleri geliştiren bir firmada çalışıyorum. Maalesef imge işlemede kolay bir proje yok.

Saniyede 40 ürün inceleme iddialı bir uygulama gerektirir. Bu da projenizin ciddi bir endüstriyel proje olduğunun işareti.

Yazılımcı olmak imge işleme kodu geliştirmek için gerekli ancak yeterli değil ne yazık ki. Sizin projeniz için örneğin "Digital Image Processing" gibi bir kitabın renkli imge işleme ve örüntü tanıma ile ilgili olanlar dışındaki bölümlerini öğrenmiş olmayı gerektirir. Diğer bir yaklaşım da iyi bir imge işleme kütüphanesini kullanarak deneyim kazanmak olabilir. Her iki durumda da imge işlemeye odaklanmış olmak, zaman ve emek vermek gerek.

Çağdaş Kayra Akman

27 Mart 2011 12:27 tarihinde CMLDMR <cemald...@gmail.com> yazdı:
işlemci intel, Benım kastettiğim şey mesela  bir dondurma çubuğu

--

Mustafa DUMLUPINAR

unread,
Mar 28, 2011, 3:53:09 AM3/28/11
to qttu...@googlegroups.com
Çağdaş,

Zamanında benden de akan kumaş üzerindeki hataları tespit eden bir proje istemişlerdi ve ciddi bütçeleri de vardı. Ben de Cemal gibi pixel bazlı düşündüm. Sonuç; çok zorlandım ve başaramadım! Sanıldığı kadar kolay birşey değil kesinlikle.


28 Mart 2011 09:47 tarihinde Çağdaş Kayra Akman <cka...@gmail.com> yazdı:



--
İyi çalışmalar...

Mustafa DUMLUPINAR
http://mdpinar.blogspot.com/

CMLDMR

unread,
Mar 28, 2011, 5:43:52 AM3/28/11
to Qt Türkiye
Cevaplarınız için çok teşekkürler arkadaşlar,

Çağdaş bahsettiğim proje aslında şuanda yapılıyor saniye 50 tane
kontrolmuş bu arada.

Aynen dediğiniz gibi bu işler en basiti bile hiç te basit değil. işe
daha yeni başladım bait projeler üzerinde uğraşıyorum şuanda ama o
dondurma çubuğu projesi beni oldukça aşar. çünkü imge işleme değilde
diğer programlama kısmında benım bilmediğim ve hiç anlamadığım donanım
kısmı var. ben sadece bu alanda kendimi nasıl yönledirmem gerektiğini
bilemiyorum yanı bu işi yapmak demek aslında ne demek.

DEHA nın dediği gibi aslın mantiken projeler basit ama uygulama
kısmında taviz veremıycegınız kısımlar olduğu zaman işler biraz daha
farklılaşıyor. dun biraz döküman araştırdım ama genel olarak
endüstride kullanılan algoritmaları yada benzer konulara değinen bir
dökuman bulamadım. Genel imge işleme algorthmalarını anlatan kitaplar
dolu.
Şuanda imge işleme bilgim var ve ne seviyede olduğunu bilmiyorum
acıkcası. neye göre değerlendirilir:(

Zaman içerisinde bu işte tecrübe kazanmak istiyorum ama yanlış
yollardan giderek zaman kaybetmek istemiyorum zaten öğrenirken zaman
kaybı oluyor.
Çağdaş bey siz bu konuda oldukça tecrübelisiniz.
bu işe ben başladım ama henüz kesin bir şey yok. yani işten atılmam
söz konusu. ama zaman sıkıntısı olmayan projelerı bir şekilde
yapıyorum. 50 tane kontrol olan projelerin altından kalkamam.
Ne gibi tavsiyelerde bulunursunuz bana, yani döküman olur kullandığım
kütüphane olur kullandığım dil platform vs vs...
Tavsiyeleriniz gerçekten benim için önemli.
ilgi gösteren tüm arkadaşlara teşekkürler, kolay gelsin gherkese

Eren TAŞ

unread,
Mar 28, 2011, 6:54:20 AM3/28/11
to qttu...@googlegroups.com
Saniyede 50 tane çubuk kontrolünü nasıl başarırsınız bilemem ama size en uygun olarak şuan OpenCV gözüküyor. OpenCV'de cvFindContours() ve cvFindApproxPoly() algoritmalarını incelerseniz, nesnenizin sınırlarını bulabilirsiniz.

Bence OpenCV ile başlayın. Fazla zaman kaybetmemiş ve temel görüntü işleme işlemlerini öğrenmiş olursunuz. Kaynak sıkıntısı da çekeceğinizi sanmıyorum.

Çağdaş Kayra Akman

unread,
Mar 28, 2011, 7:10:39 AM3/28/11
to qttu...@googlegroups.com
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

28 Mart 2011 12:43 tarihinde CMLDMR <cemald...@gmail.com> yazdı:

--

CMLDMR

unread,
Mar 29, 2011, 4:02:45 PM3/29/11
to Qt Türkiye
Hepinize çok çok teşekkürler arkadaşlar..

Çağdaş bey size ayrıca teşekkürler.
Önerdiğiniz kitap hakkında bilgim var, hatta Handbook of Machine
Vision kitabını buldum inceliyorum dünden beri oldukça iyi benim için
şuanda.. okulda imge işleme ve video işleme dersleri aldım. ama bu
tarz şeylerden bahsettiklerini söyleyemem.
imge işleme üzerinde temel imge işleme ve birde video işleme üzerinde
motion estimation uygulamam oldu C Dili ile ve QNX üzerinde.

tek bir şeye ihtiyacım daha olucak Qt, MFC, wxWidget veya FOX vs...
bunlardan hangisini öneririsiniz. Mesale Open eVision kütühanesinde
bir image oluşturuyoruz ve bunu MFC'de
image.Draw(hdc) dediğimiz zaman direk pencereye çiziyor. bu önemli bir
ayrıntı mı çünkü Qt'te böyle bir şey yok. Qt'nin MFC oranla çok
avantajlı olduğunu düşünüyorum ama bir çok kütüphanenin .Net desteği
olunca düşünüyor insan. .Net bu arada MFC değil diye biliyorum. Qt
Başlangıç-Orta Seviye aralarında bir yerdeyim. Bu tarz ticari
kütüphanelerde Hangi Arayüz kütühanesini önerirsiniz sonuçta display
etme ve threading oldukça kullanılan bir şey. Sizler ne
düşünüyorsunuz? Öneriniz nedir.

Kerem Ulutaş

unread,
Mar 29, 2011, 4:09:12 PM3/29/11
to qttu...@googlegroups.com
Bu gibi bi konuda derinlemesine bilgim yok ancak, size şu ek bilgileri verebilirim: imge işlemede otomasyon sistemleri ile çalışmalar mevcut (mobilya üretiminde hata kontrolü gibi). Windows platformunda DirectX ile yapılan programlamalarda matris işlemleri ile, ekran kartı hafızasından elle yer ayırıp işlem yapmalara kadar iniyorsunuz. Yani sırf bu işler için optimize edilmiş bir yerleşik linux sürümü dahi düşünülebilir, projesine göre.

Ayrıca, yine grafiksel işlemler içeren uygulamalarda, yapısı gereği C++ dili aşırı önem kazanıyor, ancak .Net kütüphanesi gibi Qt'a göre XML ve string işlemleri gibi pek çok konuda daha yavaş işlem yapan bir kütüphanede bu gibi bi yazılımın kesinlikle performans kaybına uğrayacağını söyleyebilirim.

Kütüphanelerde .Net desteğinin çoğunlukla olması sadece popülist yaklaşımlarının olabileceğini gösteriyor bence, yazılım dünyasını takip eden biri olarak rahatlıkla söyleyebilirim ki Microsoft'un mono ile .Net platformunu linux'a port etmesi ne kadar inandırıcı ve ne kadar gerekli bir şey ise, performans için .Net platformunu kullanmanız da o kadar gereklidir.

Kolay gelsin, happy coding..

29 Mart 2011 23:02 tarihinde CMLDMR <cemald...@gmail.com> yazdı:

--
Qt Türkiye E-Posta Listesi
Yazılanlardan sadece yazan sorumludur...
Mesaj göndermek için qttu...@googlegroups.com
Listeden çıkmak için qtturkiye-...@googlegroups.com
Liste hakkında daha fazla bilgi için
http://groups.google.com/group/qtturkiye
Qt Türkiye: http://qt.comu.edu.tr



--

Blog'umu okudunuz mu? http://www.ulutas.gen.tr

The box said "Requires Windows 95, NT, or better", so I installed Linux.

Çağdaş Kayra Akman

unread,
Mar 30, 2011, 2:26:44 AM3/30/11
to qttu...@googlegroups.com, CMLDMR
Cemal Bey,

Aldığınız dersler uygun. İşin donanım kısmına da zaman ayırırsanız iyi olur.

Machine Vision uygulamalarında aldığınız tüm görüntüleri ekrana basmanız beklenmez. Bu çoğu uygulamada ne mümkün ne de gereklidir. Örneğin sadece hatalı ürünlerin imgelerini ekranda gösterebilirsiniz.

.Net MFC değil. Qt öneririm. Signal-slot teknolojisini multi-threading'le beraber doğru kullandığınızda çok temiz bir mimari geliştirme olanağınız var.

29 Mart 2011 23:02 tarihinde CMLDMR <cemald...@gmail.com> yazdı:
Hepinize çok çok teşekkürler arkadaşlar..

--
Reply all
Reply to author
Forward
0 new messages