2016-03-31 3 views
2

Я работаю над Android-приложением, которое распознает GO board и создаст SGF file.OpenCV обнаруживает квадрат со сложным фоном

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

filledboard http://roelept82.eightytwo.axc.nl/pic/detect.png

сейчас я использовать OpenCV RGB Mat и сделайте следующее:

  • отделит каналы
  • Осторожные отдельные каналы

    Imgproc.Canny(channel, temp_canny, 30, 100); 
    
  • комбината (побитовое ИЛИ) всех каналов.

    Core.bitwise_or(temp_canny, canny, canny); 
    
  • найти на плате контурной

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

filledboard http://roelept82.eightytwo.axc.nl/pic/canny.png

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

* Важно иметь в виду *

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

это небольшая коллекция pictures with go boards я хотел бы обнаружить

* Обновление * 23-05-2016

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

+0

Если я правильно понял, вы хотите обнаружить * только * внешние границы доски, верно? Если нет, и вы хотите все выяснить, вопрос станет слишком широким и гораздо более сложным. –

+0

Целью является определение положения всех черно-белых камней на доске. Один из способов: определить точные углы доски, деформировать доску на квадрат, а затем обнаружить камни. Второй шаг довольно прост (первое изображение в моем вопросе показывает рабочий алгоритм обнаружения для этого) – MaMiFreak

ответ

1

Я работаю над той же проблемой!

Мой подход заключается в предположении, две вещей:

  1. Камера устойчива
  2. Платы устойчива

Это позволяет мне вывести параметры коробления из одного кадра, когда доска все еще пуст (перед игрой). Используйте эти параметры для деформации каждого кадра, независимо от того, сколько камней закрывает края доски.

+0

Спасибо за предложение! Я работаю над приложением adroid, и моя цель - обнаружить его в любое время во время игры. отказался от реализации openCV и пошел с машинным обучением, в настоящее время составляя хороший набор данных, но результаты с небольшим набором уже выглядят многообещающими: http://stackoverflow.com/questions/35410997/opencv-different-approach-on-detecting-go-board/35417145? Noredirect = 1 # comment59488984_35417145 (Последнее редактирование) – MaMiFreak

Смежные вопросы