Локализация чисел в сложном изображении сцены - PullRequest
2 голосов
/ 22 июля 2011

Прежде всего, я очень благодарен за помощь, оказанную экспертами здесь, в SO.Вопросы, которые задают многие и на которые отвечают эксперты, очень полезны для меня.Это помогло мне решить очень важную проблему несколько месяцев назад, когда я был студентом, выполняющим диссертацию.

Сейчас я работаю над проблемой обнаружения (а затем и распознавания) чисел в сложном изображении сцены.Вы можете посмотреть эти изображения здесь: http://imageshack.us/g/823/dsc1757w.jpg/. Это фотографии марафонцев с их номерами на передней части рубашек.Я должен обнаружить все числа, которые появляются на изображении, а затем распознать их.Распознать не составит труда, так как они выглядят как персонажи OCR.Главное, как определить эти числа.

У меня была идея сначала отфильтровать его для черного цвета.Но когда я попробовал в Matlab, результаты не были обнадеживающими, поскольку мы видим, что многие области на изображении соответствуют этим критериям (одежда, некоторые тени позади бегунов, тени в листве и т. Д.).Либо мне нужно классифицировать этих персонажей из этих других регионов, либо нужна какая-то другая хорошая техника.Есть доступные документы, и я просмотрел некоторые из них, такие как SWT, DWT и т. Д., Но у меня есть ощущение, что они не окажут большой помощиЯ думал, что какой-то алгоритм обучения может быть полезен.Для этого есть еще одна причина: в будущем могут появиться другие фотографии, возможно, с другими шрифтами и т. Д., Поэтому я думаю, что специализированный алгоритмический подход может потерпеть неудачу.Кто-нибудь может указать мне правильное направление?

Я не новичок в обработке изображений, но и не эксперт.Таким образом, любая помощь / предложение в этом отношении будет принята с благодарностью :).

Спасибо, MD

Ответы [ 2 ]

1 голос
/ 23 июля 2011

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

Давайте возьмем 2 ваши фотографии в качестве примеров:

Фото-А: http://imageshack.us/photo/my-images/59/dsc0275a.jpg/ На нем изображен один человек с относительной «большой» зеленой этикеткой с цифрами в его рубашке.

Фото-B: http://imageshack.us/photo/my-images/546/dsc0243u.jpg/ На нем много людей с красными ярлыками поменьше в рубашках. (Высота надписей в пикселях составляет около 1/5 от надписи на Фото-А)

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

(a) Определите масштаб: Нет смысла применять алгоритм поиска для поиска меток размером от 2x2 пикселей до полного разрешения изображения. Вы должны определить минимальные / максимальные пределы для ширины и высоты этикетки. Эти ограничения могут зависеть от множества различных факторов:

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

(2) Другим фактором является фактическая точность чтения OCR, которую вы собираетесь использовать. Если высота изображения чисел меньше, чем Y1 пикселей или больше, чем Y2 пикселей, OCR не сможет его прочитать (это звучит странно, но это правда: большие изображения могут показаться человеческому глазу очень ясными, но OCR может иметь проблемы). читая это).

(b) Найдите интересующую область (и): В вашем случае это эквивалентно "Найти приблизительное положение меток". Мы можем определить метку спортсмена примерно как «(почти) прямоугольную область, которая может быть немного наклонена относительно границ фотографии, и содержит: центральную область черного + цвет C1 [например, красный или зеленый] + белый (= нейтральный) ) область сверху и / или снизу ".

Возможный алгоритм поиска приблизительного положения метки:

(1) Пройдите по всему изображению слева направо, сверху вниз и осмотрите квадратную область MinHeight / 2 x MinHeight / 2

(2) Создайте гистограмму квадратной области (или постеризуйте ее, например, до 8 уровней) и попробуйте найти, если есть только черный + другой цвет C1 в процентах, например, Черный: 40% +/- 10, Цвет: 60% +/- 10%

(3) Если (2) истинно, попробуйте расширить область до правого и нижнего, пока проценты сохраняются в указанных пределах

(4) Если квадрат полностью расширен, проверьте, находится ли размер расширенной области в пределах минимальных / максимальных пределов ширины / высоты, указанных вами в (а). Если нет, перейдите к шагу 1

(5) Обработайте расширенную область, чтобы прочитать числа - см. (С) ниже

(6) Перейти к шагу 1

(c) Обработать интересующую область (и): Попробуйте выполнить следующие действия:

(1) Преобразуйте каждую область изображения в оттенки серого, применяя цветной фильтр, который записывает цвет C1 в белый.

(2) Выровняйте шкалу серого, чтобы выделить черные буквы

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

(4) Подать область в OCR, обученный только для чисел

Удачи в вашем проекте!

0 голосов
/ 23 июля 2011

Вы можете попробовать связаться с автором этого программного обеспечения :

enter image description here

Ярослав является активным участником StackOverflow.

...