2012-02-19 5 views
8

Я работаю над системой ANPR с использованием OpenCV и видел в нескольких статьях способ проведения сегментации символов. Идея состоит в том, чтобы составить график, показывающий концентрацию цвета на изображении.Гистограмма концентрации Концентрации OpenCV

Как это сделать?

enter image description here

Это образ, который у меня есть:

enter image description here

мне нужно обнаружить местонахождение черных областей, как показано выше, чтобы идентифицировать каждого из персонажей.

Я попытался добавить значения до пикселя на пиксель, но я делаю это на Android, и время, которое это занимает, неприемлемо.

+0

Что это? Как вы поступаете? Попробуйте добавить более подробную информацию о том, что у вас есть на самом деле, и что вы хотите сделать. –

+0

Итак, у вас есть место для черных областей? Можете ли вы поместить фрагмент кода для того, что вы подразумеваете под «добавлением значений пикселей по пикселям»? –

+0

Если скорость - это ваша единственная проблема, я предлагаю вам масштабировать входное изображение до более низкого разрешения в 2 или даже 4 раза. Входное изображение, которое вы показываете, очень высокое разрешение для задачи, которую вы хотите выполнить. –

ответ

6

Ok, его через месяц, но я написал вам немного кода (в Python) для этого;)

(Предполагая, что вы только после того, как гистограммы плотности изображения)

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) 

Чтобы ускорить работу, вам не нужно изменять файлы изображений, просто измените ширину ячейки выборки (column_width в скрипте), очевидно, что вы потеряете некоторое разрешение, если вы это сделаете (как вы можете видеть на изображении ниже).

На картинке, я показываю результаты (графическое отображение hist) с вашим файлом, используя column_width из 1, 10 и 100. Они побежали за мной в 0,11, 0,02 и 0,01 секунды соответственно.

Я написал его также в PIL, но он работает примерно в 5-10 раз медленнее.

character density histograms

+0

Это большое спасибо –

-1

Заканчивать OpenALPR (http://www.openalpr.com). Он выполняет сегментацию символов одинаково (используя гистограммы). Это довольно быстро на рабочем столе, но я не уверен, насколько быстро это будет на Android.

Смежные вопросы