Gönderen Konu: dörtgen bulma  (Okunma sayısı 12225 defa)

dörtgen bulma

« : 21.11.2010 01:30:19 »
Hızlı düğmeleri aç

xcoder

İleti: 30

Çevrimdışı
  • *
  • Newbie
    • Profili Görüntüle
son birkaç gündür görüntü üzerindeki dörgen benzeri formları bulmaya çalışıyorum.
 
opencv çat! diye buluyor. 1/10 sn gibi bir sürede. ben 5 farklı algoritma kodladım ve hala beceremedim..  Yani birşeyler çıktı da, opencv nin performansına yaklaşmadı bile.
 
resmin farklı alanlarının kontrası ve parlaklığı farklı. hatları sağlıklı trace edebilmem için 2 çeşit dinamik threshold olmalı. fakat threshold anlık hesapladığımda ya da map yapayım dediğimde çok zaman alıyor.

dörtgen bulma

« Yanıtla #1 : 21.11.2010 03:28:29 »
Hızlı düğmeleri aç

skate

İleti: 5.245

A Sinner Scener
Çevrimdışı
  • Administrator
  • *****
  • Hero Member
    • Profili Görüntüle
    • http://www.akaydin.com/
OpenCV'de kullandığın fonksiyon hangisi? cvFindContours ya da HoughLines gibi birşey mi?

dörtgen bulma

« Yanıtla #2 : 21.11.2010 14:20:49 »
Hızlı düğmeleri aç

xcoder

İleti: 30

Çevrimdışı
  • *
  • Newbie
    • Profili Görüntüle
cvFindContours ile kenarları bulduktan sonra cvApproxPoly ile dörtgen formları ayıklıyorum.
Fakat bunu ben böyle kullandım diyemem. hazır bir sample üzerinde oynayıp denemeler yaptım. amacım opencv nin bu konudaki başarısını test etmekti.
 
HoughLines ile sonuç üretmek cvFindContours kadar iyi olmadı. sanırım görüntüdeki hatlar çok düzgün olmadığından.
 
Dün kendi algoritmamın kodunu biraz daha optimize ettim, contours aramayı 1200 ms den 31 ms ye kadar düşürdüm. Fakat başarısı yetersiz. Daha çalışıyorum üzerinde.

dörtgen bulma

« Yanıtla #3 : 22.11.2010 06:05:47 »
Hızlı düğmeleri aç

skate

İleti: 5.245

A Sinner Scener
Çevrimdışı
  • Administrator
  • *****
  • Hero Member
    • Profili Görüntüle
    • http://www.akaydin.com/
daha önce şahsen şöyle bir metod ile uğraşmıştım.
 
http://sites.google.com/site/rexstribeofimageprocessing/chan-vese-active-contours/wubiaotitiezi
 
tabii bu sana polygon elde etmen için çok da ideal bir yöntem sunmuyor ve iterasyona dayandığı için de çok hızlı sayılmaz.
 
OpenCV'nin kodlarını inceledim. Birkaç pass'de düzgün bir şekilde halletmiş. "icvFindContoursInInterval" fonksiyonunu tam olarak anladığımız taktirde metodlardan birini çözmüş oluyoruz gibi. zaten sanırım şimdilik iki metod destekliyor. Diğeri de "cvStartFindContours", "cvFindNextContour", "cvEndFindContours" şeklinde üç fonksiyon kullanıyor. şu anda biz de bir projemizde aktif olarak OpenCV kullanıyoruz ve arada bir kodlarını inceliyorum ben. Bunu da roadmap'ime alırım, ileride benim de işime yarayacak sonuçta. :)

dörtgen bulma

« Yanıtla #4 : 22.11.2010 22:50:40 »
Hızlı düğmeleri aç

xcoder

İleti: 30

Çevrimdışı
  • *
  • Newbie
    • Profili Görüntüle
şuan bu aşamadayım. En sağdaki vektörel. Olası plaka hatlarının dışındaki contourleri bir miktar daha ayıkladım. ama özellikle gündüz görüntüleri hala çok sorunlu. Gece görüntülerinde şu aşamada sorun kalmadı. infrared kameralarla neredeyse sadece far ve plaka görünüyor. Bu araba kaç yapıyor merak ediyorum.
(Bu open cv değil, delphide kodladığım kendi algoritmam)

dörtgen bulma

« Yanıtla #5 : 23.11.2010 09:52:42 »
Hızlı düğmeleri aç

skate

İleti: 5.245

A Sinner Scener
Çevrimdışı
  • Administrator
  • *****
  • Hero Member
    • Profili Görüntüle
    • http://www.akaydin.com/
histogram ile hiç oynuyor musun başta? öncelikle histogram üzerinde belli bir range belirleyip, ideal minimum ve maximum'un altındaki ve üstündeki değerleri sınırlara align edersen, sonrasında da resmi background + foreground 2 colors'a kadar indirgersen zaten elinde hatlar kalacaktır çoğunlukla. Algoritman bu aşamadan sonra daha performanslı çalışabilir. Özellikle plaka okuma gibi işlerde ilk steplerin böyle olduğunu görmüştüm. tabii senin tam amacını bilemiyorum.

dörtgen bulma

« Yanıtla #6 : 23.11.2010 14:34:21 »
Hızlı düğmeleri aç

xcoder

İleti: 30

Çevrimdışı
  • *
  • Newbie
    • Profili Görüntüle
Bu denediğim 5. algoritmam. öncekilerde bazı range.ler tanımlayıp, filtreler uyguluyordum. Fakat bazı nedenlerden dolayı vazgeçtim. ızah etmek çok uzun olur diye buraya yazmadım. Hiçbiri okunmaz sonra  :) ama istersen ayrıca yazışabiliriz.
 
şöyle ifade edeyim, fuzzy logic bakmak gerektiğini düşündüğümden, keskin olan yada olmayan bir hat hisettikçe trace eden recursive bir döngüm var.
Hatladaki ufak kopmalar durumlarında tahmini bir alanda (ilerlemekte olduğu yönde, biraz ötesinde, biraz geniş bakarak) hattın devamını arıyor.
 
örnek imagedaki aracın eksozunun kabaca dörtgen gibi yorumlamasının sebebi de fuzzy incelediğimden dolayı.
 
Bir çok uygulamanın yaptığı gibi grayscale üzerinde değil, renkli görüntünün RGB renk bantlarının hepsini ayrı ayrı analiz ederek yapıyorum. Örneğin RGB(255,0,0) ve RGB(0,255,0) olan iki bölgenin arasında görünen hatı düşünelim. Bu imaja graycale ya da 1 bite düşürme gibi bir işlem yaparsak önemli olan hat kaybolacaktır diye düşünüyorum.