обнаружение квадратов, обработка изображений - PullRequest
2 голосов
/ 17 ноября 2011

Я ищу эффективный способ обнаружения маленьких квадратиков вокруг цифр (см. Изображения)? Я уже пытался использовать грубую трансформацию безуспешно. Есть идеи? Мне нужны подсказки! Я использую opencv ...

Ответы [ 2 ]

4 голосов
/ 17 ноября 2011

Для вдохновения вы можете взглянуть на

  • Matlab video sudoku solver демонстрацию и объяснение
  • Sudoku Grab ,Приложение Iphone, автор которого объясняет часть компьютерного зрения в своем блоге

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

На целевом изображении сделайте то же самое, например, с Харрисом точками.Будьте изобретательны, вы также можете использовать различные треугольники, которые можно найти на ваших изображениях. Используя координаты из шаблона и найденные точки Харриса, определите аффинное преобразование x = Ax' между шаблоном ицелевое изображение.Затем это преобразование можно использовать для сопоставления сетки шаблона с целевым изображением.По крайней мере, это даст вам некоторую предварительную информацию, чтобы помочь направить дальнейшую сегментацию.

Суть идеи и примеры оценки аффинной матрицы A можно найти на сайте книги Зиссермана Геометрия множественного обзора в Computer Vision и Петр Ковеси

0 голосов
/ 17 ноября 2011

Я бы начал с определения прямоугольной границы всего листа, а затем применил перспективное преобразование, чтобы сделать его действительно прямоугольным.Обрежьте эту часть изображения.Если это возможно, попробуйте сделать так, чтобы чередующиеся белые и серые суб прямоугольники имели одинаковую яркость фона - возможно, попробуйте адаптивное выравнивание гистограммы .

Тогда преобразование Хафа может работать лучше.В качестве альтернативы, вы можете воспользоваться подходом, который в целом похож на эту демонстрацию Роберта Бемиса на MATLAB Central (она анализирует изображение микроматрицы ДНК, а не карты лото, но, по сути, находит ограничивающие блоки предметов, расположенные в сетке).На высоком уровне подход заключается в том, чтобы рассчитать автокорреляцию вдоль столбцов и рядов пикселей, чтобы определить периодичность элементов в сетке, и использовать ее для наложения ограничивающего прямоугольника на каждый элемент.

Извините за вышеизложенноесоветы в основном основаны на MATLAB;Боюсь, я не пользователь opencv, но, надеюсь, это даст вам хотя бы некоторые идеи.

...