Найдите лучший регион интереса после обнаружения края в OpenCV - PullRequest
10 голосов
/ 21 февраля 2012

Я хотел бы применить OCR к некоторым изображениям 7-сегментных дисплеев на стене. Моя стратегия следующая:

  1. Скрытое изображение в градациях серого
  2. Размытие img для уменьшения ложных краев
  3. Порог IMG в двоичном IMG
  4. Применить обнаружение Canny Edge
  5. Установить область интереса (ROI) по шаблону, заданному силуэтом числа
  6. Масштаб ROI и шаблон соответствуют региону

Как установить ROI, чтобы моей программе не приходилось искать шаблон по всему изображению? Я хотел бы установить для своей базы ROI количество найденных ребер или что-то более полезное, если кто-то может мне помочь.

Я изучал Каскадную классификацию и Хаара, но я не знаю, как применить это к моей проблеме.

Вот изображение после предварительной обработки и обнаружения края: an image after being pre-processed and edge detected

исходное изображение

enter image description here

Ответы [ 2 ]

3 голосов
/ 21 февраля 2012

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

Редактировать: Хорошо, некоторые менее наивные подходы.Если у вас есть некоторые априорные знания, например, вы знаете, что фотография хорошо выровнена (и не плохо повернута или перекошена), вы можете сделать несколько проходов с решеткой с низким-высоким-низким-высоким-высоким уровнем, настроенной для захвата краев по обе стороны отсегмент, используя различные масштабы в обоих измерениях х и у.Хороший удар в обоих направлениях даст подсказки не только о рентабельности инвестиций, но и о том, с какого масштаба начать шаблон (слишком большие и слишком маленькие решетки не попадут сразу по обоим краям).

Вы можете выполнить обнаружение блобов,а затем поочередно применяйте ваши шаблоны к BLOB-объектам (возвращаясь к объединяющимся BLOB-объектам, если показатель соответствия шаблонов ниже порогового значения, в случае, если ваш сегмент номера случайно разделен).Размер блоба может снова дать вам подсказку относительно масштаба применяемого шаблона.

0 голосов
/ 05 мая 2015

Прежде всего, учитывая, что исходное изображение имеет светодиодный дисплей, и поэтому освещенная область имеет более высокую интенсивность, чем трест, я бы выполнил, скажем, преобразование цвета Yuv на исходном изображении, а затем поработал с плоскостью интенсивности(Y).

Далее, если вы знаете, что изображение хорошо выровнено (т.е. не повернуто), я бы предложил использовать отдельные горизонтальные и вертикальные краевые детекторы, а не общий детектор краев (вас не интересуют диагональные линии).Например,

 sobelx = cv2.Sobel( img, cv2.CV_64F, 1, 0, ksize=5 )
 sobely = cv2.Sobel( img, cv2.CV_64F, 0, 1, ksize=5 )

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

Далее я построюгоризонтальные и вертикальные гистограммы выходных данных этих обнаружений контуров или контуров, которые помогут вам определить «занятые» области изображения, которые содержат много краев.

Наконец, я пороговую плоскость Y и исследую каждуюРИ с моим шаблоном.

...