Привет за прошедшую неделю (или больше) Я боролся с проблемой.
Сценарий:
Я разрабатываю приложение, которое позволитэксперт для создания рецепта, используя предоставленное изображение чего-то, что будет использоваться в качестве основы.Рецепт состоит из областей интересов.Цель программы - разрешить использовать ее не экспертам, предоставляя изображения, аналогичные оригиналу, и программное обеспечение перекрестно проверяет эти различные области интереса от изображения рецепта до предоставленного изображения.
Один сценарий варианта использования может бытьбанкноты.Эксперт выберет область на хорошем изображении подлинной банкноты, а затем пользователь предоставит программному обеспечению изображения банкнот, которые необходимо проверить.Таким образом, освещение и устройство захвата могут быть разными.
Я не хочу, чтобы вы, ребята, углублялись в природу сравнения банкнот, это еще один монстр, с которым нужно бороться, и я по большей части рассмотрел его.
Моя проблема:
Первоначально я сжимаю одно из двух изображений до размера меньшего.Так что теперь мы имеем дело с картинками одинакового размера.(На самом деле я выполняю сжатие в области, представляющей интерес, а не на всю картину, но это не должно иметь значения.)
Я пробовал и использовал разные методологии для сравнения этих частей, но у каждой из них были свои ограничения из-захарактер изображений.Освещенность может быть разной, при условии, что изображение может иметь какие-то загрязнения и т. Д.
Что я пробовал:
Простое сравнение сходства изображений с использованием RGB разница.
Проблема в том, что изображение может быть совершенно другим, но цвета могут быть похожими.Таким образом, я получал бы высокий процент «совершенно» разных банкнот.
SSIM на изображениях RGB.
дал бы очень низкий процент сходства по всем каналам.
SSIM после использования фильтра sobel.
Снова низкий процент сходства.Я использовал SSIM из Scikit в Python и SSIM из OpenCV
Соответствие функции с Flann .
Не удалось найти хороший способ использовать обнаруженные совпадения для извлечения сходства.
По сути, я предполагаю, что мне нужно использовать различные методы и алгоритмы для достижения наилучшего результата.Моя интуиция говорит мне, что мне нужно будет объединить результаты сравнения RGB с методологией, которая будет:
- Выполнить некоторую форму обнаружения края, такую как sobel.
- Сравните результаты на основе сопоставления формы или чего-то подобного.
Я новичок в области анализа изображений, и я также попытался найти способ сравнить, чистые продукты из представленных изображенийиспользуя среднее и стандартное вычисление из openCV, однако я либо сделал это неправильно, либо полученные результаты были в любом случае бесполезны.Я вычислил евклидово расстояние между векторами, полученными в результате вычисления среднего и стандартного значения, однако я не мог использовать результаты главным образом потому, что не мог видеть, как они связаны между изображениями.
Я не предоставляю код, который я использовал, во-первых, потому что я его отбросил, и, во-вторых, потому что я не ищу кодовое решение, а методологию или какое-то направление к учебному материалу.(Я уже прочитал кучу бумаг).Наконец, я не пытаюсь обнаружить похожие изображения, но, учитывая два изображения, извлекаю сходство между ними, пытаясь обойти небольшие различия, вызванные освещением или искажением бумаги и т. Д.
В заключение я хотел бы сказать, что я проверил всеметоды, предоставляя одно и то же изображение дважды, и я получал бы 100% -ное сходство, поэтому я не испортил его полностью.
Возможно ли то, что я пытаюсь сделать, без каких-либо обучающих наборов, чтобы научить программное обеспечение тому, чтоприемлемые варианты изображения?(Опять же, я понятия не имею, имеет ли это смысл: D)