Как распознать или сопоставить два изображения? - PullRequest
0 голосов
/ 25 января 2019

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

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

Другие вещи помнили, что Core ML и ARKit , но Core ML определяет свойства изображения, такие как имя, тип, цвета и т. Д., И я хочу сопоставить изображение. ARKit не будет поддерживать все устройства и ios, а также возможно сопоставление изображений согласно требованию или нет, что я не имею представления.

Если у кого-то есть идеи по выполнению этого требования, им можно поделиться. любая помощь будет оценена. Спасибо:)

Ответы [ 3 ]

0 голосов
/ 25 января 2019

Самый простой способ - ARKit's imageDetection. Вы знаете ограничение устройств, которые оно поддерживает. Но результат, который он дает, широк и действительно прост в реализации. Вот пример

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

Наконец, промежуточным решением является использование OpenCV. Это может быть сложно, но удовлетворить ваши потребности. Вы можете найти различные методы соответствия функций, чтобы найти ваше изображение в канале камеры. пример здесь . Вы можете использовать target-c ++ для написания кода на c ++ для ios.

0 голосов
/ 25 января 2019

Другой подход заключается в использовании так называемой "сиамской сети". Что на самом деле означает, что вы используете модель, такую ​​как Inception-v3 или MobileNet, и оба изображения и сравниваете их результаты.

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

Если эти числа для двух изображений очень похожи - если «расстояние» между ними очень мало - тогда эти два изображения также очень похожи.

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

0 голосов
/ 25 января 2019

Ваша задача - подобие изображения, вы можете сделать это просто и с более надежными результатами, используя машинное обучение. Так как ваша задача - использовать сканирование камеры. Лучшим вариантом является CoreML. Вы можете отослать эту ссылку от apple для Image Imageity. Вы можете оптимизировать свои результаты, тренируясь с собственными наборами данных. Любые дополнительные уточнения необходимы комментарии.

...