2012-02-19 37 views
8

OpenCV kullanarak bir ANPR sistemi üzerinde çalışıyorum ve birkaç makalede karakter segmentasyonu yapmanın bir yolunu gördüm. Fikir, görüntüdeki renk yoğunluğunu gösteren bir grafik yapmaktır.OpenCV Renk Konsantrasyon Histogram

Bunu nasıl yaparım?

enter image description here

Bu

sahip olduklarım resimdir: karakterlerin her birini tanımlamak için yukarıda gösterildiği gibi siyah alanların yerleri tespit etmek için ihtiyaç

enter image description here

.

Piksele göre değerleri piksele eklemeye çalıştım ancak bunu Android'de yapıyorum ve bu süre kabul edilemez.

+0

Bu resim nedir? Neyi nasıl yapıyorsun? Lütfen gerçekte sahip olduklarınız ve ne yapmak istediğiniz hakkında daha fazla ayrıntı eklemeyi deneyin. –

+0

Şu an siyah alanların yerini biliyorsunuz? "Piksel değerine piksel ekleyerek" ne demek istediğniz için bir kod snippet'i koyabilir misiniz? –

+0

Hızınız tek sorunsa, giriş resminizi 2 veya 4 katıyla daha düşük bir çözünürlükte ölçeklendirmenizi öneririm. Gösterdiğiniz giriş görüntüsü gerçekleştirmek istediğiniz görev için çok yüksek çözünürlüktedir. –

cevap

6

Tamam, onun bir ay sonra ama sana bunun için (python) kod biraz yazdım; sadece

import cv 

im2 = cv.LoadImage('ph05l.jpg') 
width, height = cv.GetSize(im2) 
hist = [] 
column_width = 1 # this allows you to speed up the result, 
        # at the expense of horizontal resolution. (higher is faster) 
for x in xrange(width/column_width): 
    column = cv.GetSubRect(im2, (x * column_width, 0, column_width, height)) 
    hist.append(sum(cv.Sum(column))/3) 

) görüntü yoğunluğu histogram peşinde varsayarsak)

(Bir şeyleri hızlandırmak için, görüntü dosyalarınızı değiştirmenize gerek yoktur, sadece örneklemenin kutu genişliğini değiştiriniz (betikteki column_width), eğer bunu yaparsanız bazı çözünürlükleri kaybedersiniz (aşağıdaki resimde gördüğünüz gibi).

Resimde, (hist grafiğini) column_width'ların 1, 10 ve 100'lerini kullanarak dosyanızı (grafik hist) gösteriyorum. Sırasıyla, sırasıyla 0.11, 0.02 ve 0.01 saniyede koştum.

PIL da yazdım, ancak 5 ila 10 kat daha yavaş çalışıyor.

character density histograms

+0

Bu harika bir teşekkür –

-1

Kontrol dışarı OpenALPR (http://www.openalpr.com). Karakter segmentasyonunu aynı şekilde yapar (histogramları kullanarak). Bir masaüstünde oldukça hızlı, ancak Android'de bunun ne kadar hızlı olacağından emin değilim.