У нас есть фрагмент фото. Как найти его координаты на полном фото?

5e0957d34f0ca602304688.png
plyazhi-evpatorii-1.jpg

Есть фрагмент фото (изображение 1).
Есть полное фото (изображение 2).
Какой наиболее простой способ получить координаты этого фрагмента на полном фото?
Пропорции одинаковые, никакую обработку не проходили.
  • Вопрос задан
  • 1652 просмотра
Решения вопроса 2
dom1n1k
@dom1n1k
Если фрагмент строго попиксельно идентичен куску большого изображения, то всё просто.
Берется первый ряд пикселей фрагмента и проверяется его вхождение в ряды пикселей исходника.
То есть это фактически задача поиска подстроки в большой строке. Это суперклассическая задача, по ней написаны тонны научных работ, разработано стопиццот оптимизированных алгоритмов, многие реализованы в библиотеках. Да хоть википедию можно смотреть:
https://ru.wikipedia.org/wiki/%D0%9F%D0%BE%D0%B8%D...
Если найден - проверяются последующие ряды.

Вот если вхождение нестрогое (например, фрагмент отмасштабирован, или яркость не совпадает, или просто немного покоцан jpeg-пересжатием) - тогда всё сильно сложнее.
Ответ написан
@towin
В данном случае вряд ли нужна полноценная корелляция. Достаточно взять левый верхний пиксель фрагмента и построчно искать его среди пикселей большой картинки. Для каждого совпадения сравнивать другие пиксели фрагмента, пока наконец не найдем место, где все пиксели фрагмента совпадут с большой картинкой.
Ответ написан
Пригласить эксперта
Ответы на вопрос 6
hint000
@hint000
у админа три руки
Ответ написан
Комментировать
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
Ясно, что нужно начинать с крупных объектов.
На данном примере - это: небо, песок и вода.
1. Ищем линию границ крупных объектов (обводка) и находим значимые "точки" (круговая область с автоматическим радиусом): те, где линия изгибается уникально.
2. Производим сопоставление этих точек на фрагменте и полном изображении, используя повороты только этих небольших круговых областей в ч/б режиме.
3. При совпадении любых двух из них (фрагмента с полным изображением) - мы сразу же знаем точные координаты искомого фрагмента на полном изображении.
Ответ написан
@UPSA
anykey. Я не программист, я просто ленивый.
Внесу вклад для запутывания ...
Тут чистая математика с теорией вероятности (кажись) и численных методов.
Берешь Хеш фрагмента и сравниваешь с Хешем участков полного фото.
Есть программы для 3-D панорам которые сшивают плоские фото в объемное изображение. Те же принципы.
Ответ написан
Taraflex
@Taraflex
Ищу работу. Контакты в профиле.
opencv surf
Раз в тегах есть nodejs, то можно воспользоваться https://www.npmjs.com/package/opencv4nodejs
Ответ написан
Комментировать
mayton2019
@mayton2019
Bigdata Engineer
Давайте сразу самую хардкорную постановку. Изображение было скейлировано. Тоест по-пиксельное сравнение вам ничего не даст. Нужно что-то более умное.
Ответ написан
MDiMaI666
@MDiMaI666
Талантливый программист
Еще совет предварительно картинку ужать обе пропорционально и градиентом серого сделать сделать, это ускорит предварительный поиск потом уже уточнять края
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы