Алгоритм обнаружения углов для мобильных устройств

StackOverflow https://stackoverflow.com/questions/1149372

Вопрос

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

В частности, я пытаюсь найти сетку судоку на снимке, сделанном камерой телефона.Я использую C# и не смог найти библиотеки с базовыми функциями обработки изображений.Я реализовал фильтр Собеля для обнаружения границ, и на этом я остановился.

Чтобы прояснить вопрос: есть ли у кого-нибудь предложения по использованию конкретного алгоритма или библиотеки?

Это было полезно?

Решение

Я бы не сказал, что «обнаружение углов» само по себе является очень хорошим способом сделать это.Сделайте шаг назад и подумайте о фотографии сетки содоку: вероятно, вы можете сделать множество предположений, чтобы упростить ситуацию.

Например, сетка содоку всегда выглядит одинаково:

  • Белый квадрат
  • обычная сетка 9 x 9

обработка изображения в цветовом пространстве HSV позволит вам искать области с высокой яркостью (белые цвета), RGB не подходит для большинства методов обработки изображений.

пороговое изображение тогда следует уменьшить шум

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

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

:D

Другие советы

Поскольку вам нужна обычная сетка 9x9, рассмотрите Преобразование Хафа.Один из способов — сначала запустить детектор краев, найти все прямые линии, используя исходное преобразование Хафа, а затем попытаться выяснить, какие из них образуют сетку.Или, может быть, вы сможете придумать хитрый способ параметризации всей сетки.

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

Вот пример (на C++, но вы, вероятно, могли бы его портировать), который выполняет обнаружение углов в OpenCV.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top