Специфическое сравнение картинок с поиском объекта на них. Выполнимо на РНР?

12
Asar
На сайте с 23.08.2004
Offline
330
816

Господа, просьба подсказать, можно ли такое сделать на РНР или еще на чём:

Есть куча фотографий бабочек.

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

Возможны два варианта.

— Мегафантастика:

1.1. Скрипт вычисляет бабочку на каждой фоте (отделяет от фона)

1.2. Скрипт вычисляет ракурс съемки бабочки (чтобы сравнивать только схожие ракурсы с тем, что на нужной фоте)

1.3. Скрипт сравнивает собственно бабочку на фоте с бабочками с кучи фот и выдает результат (например, десяток самых похожих).

— Попроще:

1.1. Сильно упрощаем этот пункт. Например, фон всегда должен быть однородно черным или белым

1.2. Убираем этот пункт (ракурс всегда вбивается вручную)

1.3. Тут упрощать некуда, все остается как в «Мегафантастике».

Т.е. получается почти обычное сравнение фот.

Сам не дотумкал, но не сказать, чтобы какой мощный прогер. Поспрашивал народ, который предлагает свои услуги в качестве программистров на этом форуме, но народ не взялся. Если кто имел дело с подобными задачами — скажите, реально вообще их решить (особливо, канеш, фантастики хочется) или для этого нужны космические вычислительные мощности и весь штат Гуглов?

Станислав
На сайте с 27.12.2009
Offline
254
#1

Что то фантастически выглядит все по моему =)

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

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

Мы там, где рады нас видеть.
IL
На сайте с 20.04.2007
Offline
435
#2
Asar:
можно ли такое сделать на РНР или еще на чём:

Вопрос не совсем к PHP или ещё чему.. В сторону алгоритмов нужно смотреть.

По распознаванию изображений много статей (в инете вообще и, в частности) на хабре, в т.ч. от Яндекс-картинок.

http://habrahabr.ru/post/68870/

http://habrahabr.ru/post/122372/

Теоретически - преобразовать изображение "бабочки", выделить в нём "ключевые" точки (изгибы/переломы, контрастные точки... другие варианты?).. Аналогичную процедуру провести с проверяемым изображением. И сравнивать (учитывая преобразования искривлений/вращений).

Из того, что попроще - расстояние между цветами. Позволяет учесть небольшие искажения при наложении цветов. Можно "в лоб" примерять бабочку на изображение (если рисунок без искажений) с проверкой на разницу "расстояний" меньше допустимой погрешности.

... :) Облачные серверы от RegRu - промокод 3F85-3D10-806D-7224 ( http://levik.info/regru )
Asar
На сайте с 23.08.2004
Offline
330
#3
Ms-Dred:
Может стоит завести некую базу данных по бабочкам где и будет содержаться нужная инфа для выбрки похожих картинок? Так все будет работать быстро и сердито, без всякого фанатизма по вычислениям.

Дык а какая именно инфа там в этой базе должна быть? Собираемая с картинок? Или просто признаки? Если просто признаки — то, понятное дело, это классический подход, по нему вопросов нет :--) А если с картинок, так я об этом и говорю, что инфа заранее собирается...

---------- Добавлено 02.11.2013 в 13:16 ----------

ivan-lev, вот-вот, что-то в этом духе, только в моем случае, видимо, таки цветовые характеристики значат много (ибо сравнение не просто изображений и, например, не тех же лиц). И по контрастным точкам — тоже подумал, что будет правильно в эту сторону смотреть, ибо даже по классике часто берется некий признак типа «глазков» или «хвостов» и по нему визуально сравнивается...

Asar
На сайте с 23.08.2004
Offline
330
#4

Мож еще кто чего подскажет, тема актуальна...

B
На сайте с 13.02.2008
Offline
262
#5

Asar, php - однозначно в топку.

Я бы попробовал на Питоне с использованием мощных математических библиотек (numpy, scipy), которые к Питону легко подключаются и используются.

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

Гляньте, там много вкусного:

http://scipy-lectures.github.io/advanced/image_processing/

http://docs.scipy.org/doc/scipy/reference/ndimage.html

http://docs.scipy.org/doc/scipy/reference/tutorial/ndimage.html

http://docs.scipy.org/doc/numpy/reference/

Solmyr
На сайте с 10.09.2007
Offline
501
#6

Это делается с помощью нейросетей. Только данные прежде чем им скармливать нужно конечно максимально нормализовать.

beginerx
На сайте с 13.07.2009
Offline
173
#7

на счет легкости подключения - а можете расказать как на шаредном хостинге подключить?

Топик стартре - не парьте себе мозги глупостями - сделайте распознавалку капчи и вы миллионер! а может и миллиардер! :) а то бабочки... вот уж ...

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

>>>Скорость и Реакция<<< (https://vk.com/app4629907 ): онлайн тренировка скорости и времени реакции.... (https://vk.com/app4612117 )... (https://vk.com/club18740762 ).
B
На сайте с 13.02.2008
Offline
262
#8
Asar:
реально вообще их решить

Реально то реально, но есть ли смысл это делать для одной задачи? Дорого выйдет.

Хотя надо вашу специфику смотреть. Может быть есть простое решение для вашего случая. Например, может быть достаточно сравнение по цветовым палитрам производить (если бабочек от фона как-то отделить). Тогда форма не важна будет и решение будет вероятно весьма простым. Еще многое зависит от необходимой точности сравнений.

---------- Добавлено 05.12.2013 в 01:35 ----------

beginerx:
на счет легкости подключения - а можете расказать как на шаредном хостинге подключить?

Если это про матбиблиотеки к питону, то такие задачи на шаредхостинге делать нет смысла вообще - сразу выгонят оттуда, т.к. нагрузка на процессор будет нехилая.

По хорошему нужно несколько сотен параллельных процессоров. И простое решение есть - можно задействовать игровую видеоплату. Соответствующий модуль для питона также имеется. Правде придется свой комп использовать - вряд ли вы найдете под аренду выделенный сервер с мощной игровой видюхой.

---------- Добавлено 05.12.2013 в 01:39 ----------

beginerx:
кстати в статьях по ссылкм используют MathCAD вот это и есть лучшее на сегодня, питон это круто но несколько лет на изучение придется выкинуть....

Питоновский NumPy является свободной альтернативой MATLAB.

---------- Добавлено 05.12.2013 в 01:41 ----------

beginerx:
питон это круто но несколько лет на изучение придется выкинуть....

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

beginerx
На сайте с 13.07.2009
Offline
173
#9

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

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

И не путайте матлаб с матКАДом - кад круче, более высокого уровня и в статьях не даром на нем делается. А матлаб это такая же фигня как питон, НИЧТО без ЛИБ. А либы те тащаться аж с фортрана да еще и не все оттуда конвертировано до сих пор, так что если очень хочется низко-уровневого програминга то фортран и миллиард либ к нему.

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

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

G
На сайте с 16.02.2011
Offline
42
#10

Давайте рассмотрим на примере.

Довольно харизматичная представительница)

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

т.е.

1) Отделить от фона фактически не возможно. (Программно)

2) если у вас 10 картинок , и надо выбрать из них одну, наиболее похожую на одинадцатую, то тут всё более менее реализуемо.

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

Для примера - картинка, похожая на эту Аполон по мнению гугла

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

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий