Изолировать области цветного текста в видеопотоке

Я хочу обнаружить цветные тексты с высоты 5-6 метров в живом видео. Ширина этих текстов около 30-40 см. Я использовал несколько методов. Например, один из них — HSV для обнаружения цветов. Но это бесполезно, так как значение HSV должно меняться при изменении освещенности окружающей среды. Кроме того, он не может различать цвета после 30 см. Также я искал OCR для распознавания текста. Люди говорят, что для моего исследования я должен использовать определение цвета для этой задачи, поскольку это проще, чем OCR. Кроме того, этого достаточно для желаемого результата.

В общем, как я могу обнаружить красный и зеленый тексты на расстоянии от 5 до 6 метров в прямом видеопотоке, даже если эта операция применяется в помещении или на улице?

пример изображения


person Ender Ayhan    schedule 22.08.2018    source источник
comment
@EnderAyhan Всегда ли есть ровно один красный и один зеленый текст, и всегда ли они вверху/внизу? Вы просто хотите знать, какой текст (красный/зеленый) находится наверху лабиринта, а какой внизу? Кроме того, слова, выделенные красным/зеленым, всегда одинаковы?   -  person duhaime    schedule 23.08.2018
comment
Почему люди голосуют, чтобы закрыть это? Эта проблема кажется достаточно четко определенной, и его код никому не поможет ответить на вопрос.   -  person duhaime    schedule 23.08.2018
comment
@duhaime Да, всегда есть один красный и один зеленый текст. Более того, тексты всегда такие же, как на изображении-примере. Однако они не всегда находятся в одном и том же месте. Место разное. Я просто хочу определить координату их центральной точки. Чтобы я мог найти координаты начала и конца лабиринта.   -  person Ender Ayhan    schedule 23.08.2018
comment
@EnderAyhan: красный и зеленый тексты всегда находятся на противоположных сторонах лабиринта или иногда они находятся на соседних сторонах?   -  person duhaime    schedule 23.08.2018
comment
@duhaime их можно поставить как рядом, так и напротив друг друга. Я имею в виду, что место текстов никогда точно не известно. Он всегда меняется. Кстати, спасибо за поддержку в моем вопросе. Эта проблема с отрицательным голосованием происходит всегда. К сожалению, трудно быть уверенным, что спросить.   -  person Ender Ayhan    schedule 23.08.2018


Ответы (1)


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

Зеленый (верхняя метка) имеет значение оттенка ~90, а красный (нижняя метка) имеет значение оттенка ~0, поэтому, если мы вычислим сумму значений оттенка для каждой строки изображения, мы ожидаем самые зеленые строки имеют самые высокие значения оттенка, а красные строки имеют самые низкие значения оттенка.

from scipy.misc import imread
import matplotlib.pyplot as plt
from colorsys import rgb_to_hsv
%matplotlib inline

# read in the image in RGB
img = imread('vUvMl.jpg', mode='RGB')

# find the sum of the Hue, Saturation, and Value values
# for each row in the image, top to bottom
rows = []
h_vals = []
s_vals = []
v_vals = []

for idx, row in enumerate(img):
    row_h = 0
    row_s = 0
    row_v = 0
    for pixel in row:
        r, g, b = pixel / 256
        h, s, v = rgb_to_hsv(r, g, b)
        row_h += h
        row_s += s
        row_v += v
    h_vals.append(row_h)
    s_vals.append(row_s)
    v_vals.append(row_v)
    rows.append(idx)

# plot the aggregate hue values for each row of the image
plt.scatter(rows, h_vals)
plt.title('Aggregate hue values for each row in image')
plt.show()

Результат:

введите здесь описание изображения

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

Вам нужно будет транспонировать матрицу изображения и найти значения оттенка по столбцам, если одна из меток находится на левой/правой стороне изображения, но, надеюсь, это может подстегнуть ваши идеи...

person duhaime    schedule 22.08.2018
comment
это определенно другая точка зрения, и она заставила меня задуматься над клише. И последнее, но не менее важное: вы рекомендуете делать это с помощью глубокого обучения? - person Ender Ayhan; 23.08.2018
comment
@EnderAyhan, если вам удобно работать с нейронными сетями, возможно, стоит попробовать. Хорошо, что ваше пространство предсказания хорошо ограничено: каждое изображение имеет только четыре стороны (вверх, вправо, вниз, влево), и каждая сторона будет иметь значение красного, зеленого или None. Если вы пометите некоторые изображения вручную, обучить классификатор будет несложно. Если вы учитесь в университете, другие там могут даже помочь вам с заданием... - person duhaime; 23.08.2018