Распознавание маркера на Android (распознающий кубики Рубика)

Я разрабатываю приложение дополненной реальности для Android, который использует камеру телефона для распознавания расположения цветных квадратов на каждой поверхности Кубика Рубика.

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

Rubik's Cube

Мой вопрос действительно, у кого-либо здесь был опыт с распознаванием изображений и Android? Идеально я хотел бы смочь реализовать и существующий API, но это будет интересный проект сделать с нуля, если кто-то мог бы указать на меня в правильном направлении для начала работы.

Заранее большое спасибо.

8
задан Community 8 February 2017 в 14:22
поделиться

4 ответа

Вы хотите направить камеру на куб и дать ей понять конфигурацию?

Распознавание объектов на фотографиях - открытая проблема ИИ. Так что вам нужно немного ограничить проблему, чтобы получить хоть какую-то поддержку. Я предлагаю начать с чего-то вроде:

  1. Куб будет сфотографирован с расстояния ровно 12 дюймов с источником света мощностью 100 Вт прямо за камерой. Куб будет установлен по диагонали, так что он будет иметь ровно 3 грани с углом в центре. Камера будет расположена так, чтобы фокусироваться прямо на углу куба в центре.

  2. Будет сделан снимок. Затем куб будет повернут на 180 градусов по вертикали и горизонтали, чтобы были видны другие три грани. Будет сделан второй снимок. Поскольку вы точно знаете, где должно быть каждое лицо, возьмите несколько пикселей из каждой области и предположите, что это цвет этого квадрата. Помните, что куб обычно будет перемешанным, а не однородным, как показано на рисунке. Таким образом, вы всегда должны смотреть на 9 * 6 = 54 маленьких квадратика, чтобы получить цвет каждого из них.

  3. Информация на этих двух изображениях определяет конфигурацию куба. Создайте изображение куба в той же конфигурации и позвольте пользователю подтвердить или исправить его.

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

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

5
ответ дан 5 December 2019 в 22:17
поделиться

Хорошая идея, я тоже планирую использовать компьютерное зрение и детекторы маркеров, но для другого проекта. Я все еще ищу, есть ли какая-либо доступная информация в Интернете, например: привязка openCV или ARtoolkit к Android SDK. Если у вас есть дополнительная информация о том, как связать API компьютерного зрения, дайте мне знать.

До скорой встречи и удачи!

0
ответ дан 5 December 2019 в 22:17
поделиться

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

1
ответ дан 5 December 2019 в 22:17
поделиться

NYARToolkit использует обнаружение маркеров и сделан на JAVA (а также на управляемом C# для устройств windows). Я не знаю, насколько хорошо он работает на платформе android, но я видел его использование на мобильных устройствах windows, и он очень хорошо сделан.

Удачи, и счастливого программирования!

0
ответ дан 5 December 2019 в 22:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: