Как найти часть фотографий

Поиск изображений по фрагменту

Время на прочтение
5 мин

Количество просмотров 65K

В своем выступлении Александр Крайнов рассказал каким способом Яндекс.Картинки кластеризировали дубликаты изображений. Другими словами, выделяли и отфильтровывали дубли картинок. Где основная идея была в том, чтобы выделить контуры изображения посредством фильтра DoG, после чего найти ключевые точки и получить их дескрипторы.
Кластеризация дубликатов сводится к поиску совпадений дескрипторов. Это и есть «цифровой формат» ключевых точек из статьи Кластеризация дубликатов в поиске по картинкам.

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

Дескрипторы

Ключевые точки — это точки, которые в идеале не должны меняться при изменении или модификации изображения.
Дескрипторы — это, в общем виде, свертка характеристик и представление ключевых точек в формате доступном для проверки на совпадение.

Поиск эффективного выделения ключевых точек, их дескрипторов, а также методов проверки на совпадения, все еще остается на повестке дня.

Но надо с чего-то начинать, поэтому обратимся на помощь к библиотеке OpenCV.

Первое на что бросается взгляд — это дескрипторы SURF.
Которые обещают необычайную точность. Что и подтверждается после тестов.

Но есть несколько нюансов.
Дескрипторы SURF — это вектора из 128 (или 64) чисел на одну ключевую точку. Проверка на совпадение выполняется поиском ближайшей точки (или даже двух). И чем ближе точка, тем лучше.

Получается что на изображение с 1 000 ключевых точек, потребуется 128 000 чисел с плавающей точкой.
Кроме того, само обнаружение точек довольно сложная операция и требует значительное время. Что не позволяет эффективно использовать данный алгоритм на небольших устройствах. К тому же сам алгоритм закрытый и запатентован (в США).

После ознакомления с SIFT и SURF, захотелось чего-то простого в реализации с возможностью применить на небольшом сервере либо устройстве.

Перцептивные хеши

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

Проверка на совпадение проводится подсчетом количества отличающихся позиций между двумя хешами. Т.е. подсчет расстояния Хэмминга. И чем меньше оно, чем меньше различающихся элементов, тем больше совпадение.

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

Другими словами перцептивные хеши не годятся для поиска полудубликатов.

Исходя из этого была предпринята попытка объединить SURF дескрипторы и перцептивные хеши с целью решить проблему поиска нечетких полудубликатов.

Метод основывается на кластеризации ключевых точек таким образом, чтобы центры кластеров совпадали на оригинальном и кропнутом изображении. А далее производилось выделение фрагмента изображения вокруг ключевой точки и получения перцептивного хеша. В результате одно изображение давало порядка 200 кроп нарезков и их хешей.

У данного метода есть два с половиной значительных недостатка:
1. низкая скорость проверки на совпадение на большом наборе хешей. Поиск по 1 млн хешей занимало 20 секунд
2. низкая скорость получения ключевых точек
3. низкая точность, множество ложных срабатываний, высокие требование к целевой базе, годится не для всех картинок, требует премодерации и т.д

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

Поэтому было решено попытаться найти решения данным проблемам.

Низкая скорость выборки

Сложность поиска и подсчета расстояния Хэмминга на большом наборе данных является самостоятельной проблемой и требует независимого подхода.
После некоторых исследований тематики оказалось, что существует множество решений данной проблемы.
Был выбран и реализован наиболее эффективный из имеющихся алгоритм названный HEngine, который позволил в ~60 раз ускорить выборку из базы данных.

SURF и ключевые точки

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

В общем виде OpenCV предоставляет два типа дескрипторов:

— Дескрипторы с плавающей точкой
— И бинарные дескрипторы

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

ORB: an efficient alternative to SIFT or SURF

OpenCV уже имеет у себя отличную альтернативу SURF, которая мало того, что открытая и без лицензионных ограничений, так еще легче и работает быстрее [1].

ORB — это Oriented FAST and Rotated BRIEF — улучшенная версия и комбинация детектора ключевых точек FAST и бинарных дескрипторов BRIEF.

ORB имеет один существенный нюанс для нас — размер дескрипторов 32 байта на одну точку.
Проверка на совпадение — это сумма расстояний Хэмминга для каждого байта дескриптора (первый сравнивается с первым, второй со вторым и тд).

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

Так как наш хеш это 64битное число, то требуется 32 байта дескриптора ужать в 8 байт и при этом не сильно потерять в точности.

После некоторых тестов было решено попробовать эти 32 байта представить в виде матрицы 16×16 бит. А потом эту матрицу пропустить через перцептивный хеш PHash. Результатом должно было оказаться как раз 64 битное число.

Теперь мы подошли к полному описанию концепта.

Как работает индексация

1. Получаем ключевые точки и дескрипторы ORB, выбираем количество требуемых точек на изображении.
2. Полученные дескрипторы по 32 байта представляем в виде битовой матрицы 16×16.
3. Конвертируем матрицу в 64битное число с помощью PHash.
4. Сохраняем 64битные отпечатки в MySQL.
5. Выбираем требуемое расстояние Хэмминга и запускаем демон HEngine, который будет выполнять поиск.

Как работает поиск

Выполняем идентичные шаги 1 — 3 из индексации, но только на запрашиваемом изображении.
4. Делаем запрос демону HEngine, который возвращает все хеши в заданном пределе.
5. Если требуется, отфильтровать неактуальные результаты.


Рис 1. Предел расстояния Хэмминга 7. Серые точки — это найденные ключевые точки. Зеленые — совпадающие точки. Красные — совпадающие стандартным ORB полным перебором.

А что в итоге?

В итоге удалось решить нескольких проблем:
— найти способ быстрого подсчета расстояния Хэмминга на большом наборе данных
— избавиться от большого и неудобного SURF
— увеличить скорость выделения ключевых точек и их отпечатков
— а также не потерять сильно в точности.

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


Рис 2. Сладкое к пятнице

Учитывая то, что в зависимости от настроек, описанный алгоритм через бинарные дескрипторы ORB выдает около 1 000 хешей на картинку.
На базу в 1 000 изображений получается 1 000 000 хешей в базе. Поиск и кластеризация всех дубликатов занимает полторы минуты. Включает в себя полный перебор и поиск совпадающих хешей.

Ссылки

[1] Ethan Rublee, Vincent Rabaud, Kurt Konolige, Gary R. Bradski: ORB: An efficient alternative to SIFT or SURF. ICCV 2011: 2564-2571.
[2] en.wikipedia.org/wiki/SURF
[3] ru.wikipedia.org/wiki/Расстояние_Хэмминга
[4] phash.org
[5] habrahabr.ru/post/143667 Кластеризация дубликатов в Яндекс.Картинках
[6] habrahabr.ru/post/211264 HEngine — алгоритм поиска хешей в пределах заданного расстояния Хэмминга на большом наборе данных
[7] github.com/valbok/img.chk Мой прототип поиска по фрагментам

Насколько помню, в OpenCV для поиска фрагмента на картинке реализована корреляционная функция. Довольно трудоемкий алгоритм, есть отличная замена — алгоритм Mean Absolute Difference (MAD). По сути, обычный модуль разности. Вроде бы именно он в TERCOMе используется, например.
Кроме того, для повышения быстродействия можно воспользоваться прореживанием, то есть не обязательно сравнивать/считать корреляцию каждого пикселя основного изображения и маленького, можно «проредить» как основное, так и маленькое изображение. Как минимум через 1 столбец можно смело проскакивать. Можно и больше, но, главное, чтобы эталонное изображение не потеряло своей отличительной черты.
Есть еще способ — так называемое введение порога. Такой порог позволяет практически по нескольким пикселям сразу понять, соответствует ли фрагмент искомому или же нет.
Положение маленького изображения на большом будет характеризоваться минимумом (в случае использования самой обычной корреляционной функции) или же максимумом (если использовать MAD). Если ваши изображения не зашумлены никак, то корреляция в том месте, где находится искомый объект, будет 0 (в случае MAD). Значит, если при расчете корреляции встретили что-то отличное от 0, то можно смело двигаться дальше. При наличии шума придется порог поправять на этот шум.
В теории, можно совмещать все методы и получить очень значительное ускорение. А вообще, использование одного лишь порога дает очень и очень существенный буст.

Нашел у себя код на С++ с OpenCV для корреляционного поля с использованием порога вот. На вход основное изображение и шаблон, который ищем, на выход — корреляционная карта. Потом просто по карте ищется минимум.

void meanAbsuluteDifference_LIM(const Mat &_img, const Mat &_templ, Mat &_res){
    int M = _res.rows,
        N = _res.cols,
        m = _templ.rows,
        n = _templ.cols;

    register float RES_ELEM = 0, TEMP_ELEM = 0;
    register int   I = 0, J = 0, i = 0, j = 0;

    for (I; I < M; ++I){
        for (J; J < N; ++J){
            RES_ELEM = 0;
            lim = 0;
            for (i; i < m; ++i){
                for (j; j < n; ++j){
                    uchar RI = _img.at<uchar>(I + i, J + j),
                        CI = _templ.at<uchar>(i, j);
                    RES_ELEM += std::abs(RI - CI);
                    lim += stdDevNoise;  // поправка порога на ско шума. шума нет - порог всегда 0.
                    if (RES_ELEM > lim){ // получили значение больше порога - останавливаем проверку и двигаемся дальше
                        goto stop;
                    }
                }
            }
        stop:
            i = 0; j = 0;
            _res.at<float>(I, J) += RES_ELEM;
        }
        J = 0;
    }
}

Содержание

  1. Как найти похожую картинку, фотографию, изображение в интернет
  2. Поиск по фото в Гугл
  3. Поиск по картинкам в Яндекс
  4. Поиск похожих картинок в тинай
  5. PhotoTracker Lite – поиск 4в1
  6. Когда это может понадобиться
  7. Как найти оригинал заданного изображения
  8. Поиск по картинке
  9. Как начать поиск по картинке
  10. Как искать картинку с другого сайта
  11. Поиск по картинке
  12. Как начать поиск по картинке
  13. Как искать картинку с другого сайта
  14. Как найти похожие фото в компьютере
  15. Find.Same.Images.OK — найти похожие картинки и фото
  16. Скачать Find.Same.Images.OK
  17. ПОЛЕЗНОЕ ВИДЕО
  18. Поиск по картинке
  19. Как начать поиск по картинке
  20. Как искать картинку с другого сайта
  21. Поиск по картинке
  22. Как начать поиск по картинке
  23. Как искать картинку с другого сайта
  24. Поиск по картинке
  25. Как начать поиск по картинке
  26. Как искать картинку с другого сайта
  27. Поиск по картинке
  28. Как начать поиск по картинке
  29. Как искать картинку с другого сайта

Как найти похожую картинку, фотографию, изображение в интернет

Допустим у Вас есть какое-то изображение (рисунок, картинка, фотография), и Вы хотите найти такое же (дубликат) или похожее в интернет. Это можно сделать при помощи специальных инструментов поисковиков Google и Яндекс, сервиса TinEye, а также потрясающего браузерного расширения PhotoTracker Lite, который объединяет все эти способы. Рассмотрим каждый из них.

Поиск по фото в Гугл

Тут всё очень просто. Переходим по ссылке https://www.google.ru/imghp и кликаем по иконке фотоаппарата:

poisk v google

Дальше выбираем один из вариантов поиска:

На открывшейся страничке кликаем по ссылке «Все размеры»:

all sizes

В итоге получаем полный список похожих картинок по изображению, которое было выбрано в качестве образца:

spisok 1

Есть еще один хороший способ, работающий в браузере Chrome. Находясь на страничке с интересующей Вас картинкой, подведите к ней курсор мыши, кликните правой клавишей и в открывшейся подсказке выберите пункт «Найти картинку (Google)»:

find chrome

Вы сразу переместитесь на страницу с результатами поиска!

Поиск по картинкам в Яндекс

poisk v

Укажите адрес картинки в сети интернет либо загрузите её с компьютера (можно простым перетаскиванием в специальную области в верхней части окна браузера):

ukazat original

Результат поиска выглядит таким образом:

rezult

Вы мгновенно получаете доступ к следующей информации:

Поиск похожих картинок в тинай

Многие наверняка уже слышали об онлайн сервисе TinEye, который русскоязычные пользователи часто называют Тинай. Он разработан экспертами в сфере машинного обучения и распознавания объектов. Как следствие всего этого, тинай отлично подходит не только для поиска похожих картинок и фотографий, но их составляющих.

Проиндексированная база изображений TinEye составляет более 10 миллиардов позиций, и является крупнейших во всем Интернет. «Здесь найдется всё» — это фраза как нельзя лучше характеризует сервис.

tineye poisk

Переходите по ссылке https://www.tineye.com/, и, как и в случае Яндекс и Google, загрузите файл-образец для поиска либо ссылку на него в интернет.

tineye results

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

PhotoTracker Lite – поиск 4в1

Расширение для браузера PhotoTracker Lite (работает в Google Chrome, Opera с версии 36, Яндекс.Браузере, Vivaldi) позволяет в один клик искать похожие фото не только в указанных выше источниках, но и по базе поисковика Bing (Bing Images)!

В настройках приложения укажите источники поиска, после чего кликайте правой кнопкой мыши на любое изображение в браузере и выбирайте опцию «Искать это изображение» PhotoTracker Lite:

phototracker option

Есть еще один способ поиска в один клик. По умолчанию в настройках приложения активирован пункт «Показывать иконку быстрого поиска». Когда Вы наводите на какое-то фото или картинку, всплывает круглая зеленая иконка, нажатие на которую запускает поиск похожих изображений – в новых вкладках автоматически откроются результаты поиска по Гугл, Яндекс, Тинай и Бинг.

znachok plugina

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

Когда это может понадобиться

На самом деле, случаев, когда может пригодиться поиск по фотографии, огромное множество. Можно еще привести и такой пример…

Как найти оригинал заданного изображения

Например, у Вас есть какая-то фотография, возможно кадрированная, пожатая, либо отфотошопленная, а Вы хотите найти её оригинал, или вариант в лучшем качестве. Как это сделать? Проводите поиск в Яндекс и Гугл, как описано выше, либо средствами PhotoTracker Lite и получаете список всех найденных изображений. Далее руководствуетесь следующим:

Уважаемые читатели, порекомендуйте данный материал своим друзьям в социальных сетях, а также задавайте свои вопросы в комментариях и делитесь своим мнением!

Источник

Поиск по картинке

В Яндексе можно искать информацию с помощью картинки. Это может быть полезно, если вы хотите:

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

Как начать поиск по картинке

Нажмите кнопку справа от поисковой строки и загрузите картинку одним из способов:

Нажмите значок в поисковой строке, затем сделайте фото интересующего вас объекта или загрузите исходное изображение из галереи.

Как искать картинку с другого сайта

Поиск по картинке

В Яндексе можно искать информацию с помощью картинки. Это может быть полезно, если вы хотите:

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

Как начать поиск по картинке

Нажмите кнопку справа от поисковой строки и загрузите картинку одним из способов:

HvUc1AyKCrRNR5Ps5AjnlADdEps

Нажмите значок DSEP2ofXxjKAa0pxj0 Ser kh8в поисковой строке, затем сделайте фото интересующего вас объекта или загрузите исходное изображение из галереи.

Как искать картинку с другого сайта

Источник

Как найти похожие фото в компьютере

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

Речь пойдёт про очень маленькую, лёгкую и простую, быструю и абсолютно бесплатную программку под названием Find.Same.Images.OK от проверенного производителя (на сайте описано уже наверное с десяток их (его) замечательных полезных работ).

Немного забегу вперёд и скажу Вам, что этот поисковик похожих картинок и фотографий в компьютере меня очень впечатлил своей скоростью работы и качеством нахождения дубликатов. Просто невероятный результат получился у программы «весом» всего 1 Мб.

Find.Same.Images.OK — найти похожие картинки и фото

Рассказывать и показывать буду на примере портативной версии программы (64-бит), так как произвожу такой поиск похожих фото в своём компьютере очень не часто и держать в операционной системе лишний установленный софт в режиме ожидания несколько лет считаю нецелесообразным.

Итак, разархивировал полученный по официальной ссылке, что в конце статьи, файл и кликаю по весёлому ярлыку Find.Same.Images.OK…

Find Same Images OK 10

…соглашаюсь с лицензией…

Find Same Images OK 9

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

Главное и единственное рабочее окно Find.Same.Images.OK…

Find Same Images OK 8

Верхняя панель не задержит Ваше внимание надолго — там всего-лишь можно назначить окно при запуске программы и его расположение на рабочем столе…

Читайте также на сайте:

Find Same Images OK 7

…ещё я скрыл строку состояния — пользы от неё, как выяснилось, абсолютно нет…

Find Same Images OK 14

Как видите — есть в Find.Same.Images.OK поддержка горячих клавиш и удобный полноэкранный режим.

Все приготовления закончили — можно уже и найти похожие картинки с фото в компьютере, правда? Задаём нужные параметры поиска:

Find Same Images OK 5

Find Same Images OK 1

Далее выставляем приоритет для программы — ударять на производительность (быстрее поиск будет происходить), на качество поиска — искать тщательнее и без ошибок или работать в среднем режиме (первый пункт в выпадающем меню, который я и выбрал)…

Find Same Images OK 6

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

Есть ещё вторая строка предварительных параметров поиска дублей изображений…

Find Same Images OK 15

…в которой указываю отображение результатов списком, процент похожести фото и нужно ли искать во вложенных папках. Согласен, немного запутанно всё, но как есть.

Теперь осталось только просто кликнуть по кнопке «Start» в центре рабочего окна программы…

Find Same Images OK 4

…и откинувшись в компьютерном кресле — наблюдать за работой Find.Same.Images.OK

У меня весь процесс поиска похожих фотографий в «распухшем» на целых 35.8 Гб семейном фотоальбоме занял всего 9 минут, что просто невероятно быстро…

Find Same Images OK 3

Было найдено 799 похожих изображений — результат «сброса» в общий альбом (папку) файлов всеми членами семьи без сортировки.

Find Same Images OK 2

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

Как Вы понимаете, в моём случае это очень долгий процесс будет, поэтому спешу откланяться, чтоб скорее заняться важным делом по освобождению дискового пространства в своём ноутбуке от лишних файлов.

Скачать Find.Same.Images.OK

download

На сайте автора есть целых четыре ссылки на скачивание программы — две на обычные инсталляционные версии программы, но под разную битность системы и две на портативные, тоже под системы с разной разрядностью…

Find Same Images OK 13

После того, как определитесь и нажмёте на нужную ссылку — не спешите и не тыкайте ни на что на появившейся странице…

Find Same Images OK 12

…через несколько секунд Ваш установщик скачается автоматически, а если этого не произошло всё-таки по какой-то причине — тогда уже можно кликнуть на альтернативную ссылку для запуска загрузки в ручном режиме…

Find Same Images OK 11

Find.Same.Images.OK работает во всех версиях Windows, начиная с Vista, «понимает» такие графические форматы — JPEG, GIF, PNG, BMP, PCX, WMF, TIFF, TGA и RAW.

Производитель даже приложил таблицу с результатами проверки инсталляторов программы на сервисе ВирусТотал (клик по хеш-сумме перекинет в VirusTotal)…

Find Same Images OK 16

Теперь Вы знаете, как бесплатно найти похожие картинки и фото в компьютере. До новых полезных компьютерных программ и интересных приложений для Андроид.

ПОЛЕЗНОЕ ВИДЕО

Источник

Поиск по картинке

В Яндексе можно искать информацию с помощью картинки. Это может быть полезно, если вы хотите:

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

Как начать поиск по картинке

Нажмите кнопку справа от поисковой строки и загрузите картинку одним из способов:

Нажмите значок в поисковой строке, затем сделайте фото интересующего вас объекта или загрузите исходное изображение из галереи.

Как искать картинку с другого сайта

Поиск по картинке

В Яндексе можно искать информацию с помощью картинки. Это может быть полезно, если вы хотите:

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

Как начать поиск по картинке

Нажмите кнопку справа от поисковой строки и загрузите картинку одним из способов:

HvUc1AyKCrRNR5Ps5AjnlADdEps

Нажмите значок DSEP2ofXxjKAa0pxj0 Ser kh8в поисковой строке, затем сделайте фото интересующего вас объекта или загрузите исходное изображение из галереи.

Как искать картинку с другого сайта

Источник

Поиск по картинке

В Яндексе можно искать информацию с помощью картинки. Это может быть полезно, если вы хотите:

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

Как начать поиск по картинке

Нажмите кнопку справа от поисковой строки и загрузите картинку одним из способов:

Нажмите значок в поисковой строке, затем сделайте фото интересующего вас объекта или загрузите исходное изображение из галереи.

Как искать картинку с другого сайта

Поиск по картинке

В Яндексе можно искать информацию с помощью картинки. Это может быть полезно, если вы хотите:

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

Как начать поиск по картинке

Нажмите кнопку справа от поисковой строки и загрузите картинку одним из способов:

HvUc1AyKCrRNR5Ps5AjnlADdEps

Нажмите значок DSEP2ofXxjKAa0pxj0 Ser kh8в поисковой строке, затем сделайте фото интересующего вас объекта или загрузите исходное изображение из галереи.

Как искать картинку с другого сайта

Источник

Как найти похожую картинку, фотографию, изображение в интернет

12.07.2019

Допустим у Вас есть какое-то изображение (рисунок, картинка, фотография), и Вы хотите найти такое же (дубликат) или похожее в интернет. Это можно сделать при помощи специальных инструментов поисковиков Google и Яндекс, сервиса TinEye, а также потрясающего браузерного расширения PhotoTracker Lite, который объединяет все эти способы. Рассмотрим каждый из них.

Поиск по фото в Гугл

Тут всё очень просто. Переходим по ссылке https://www.google.ru/imghp и кликаем по иконке фотоаппарата:

поиск по картинке в гугле

Дальше выбираем один из вариантов поиска:

  1. Указываем ссылку на изображение в интернете
  2. Загружаем файл с компьютера

На открывшейся страничке кликаем по ссылке «Все размеры»:

найти все размеры картинки

В итоге получаем полный список похожих картинок по изображению, которое было выбрано в качестве образца:

перечень найденных картинок

Есть еще один хороший способ, работающий в браузере Chrome. Находясь на страничке с интересующей Вас картинкой, подведите к ней курсор мыши, кликните правой клавишей и в открывшейся подсказке выберите пункт «Найти картинку (Google)»:

опция поиска в браузере хром

Вы сразу переместитесь на страницу с результатами поиска!

Статья по теме: Поисковые сервисы Google, о которых Вы не знали!

Поиск по картинкам в Яндекс

У Яндекса всё не менее просто чем у Гугла :)  Переходите по ссылке https://yandex.by/images/ и нажимайте значок фотоаппарата в верхнем правом углу:

поиск похожих фото в яндекс

Укажите адрес картинки в сети интернет либо загрузите её с компьютера (можно простым перетаскиванием в специальную области в верхней части окна браузера):

загрузка оригинала

Результат поиска выглядит таким образом:

результат поиска в яндекс

Вы мгновенно получаете доступ к следующей информации:

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

Поиск похожих картинок в тинай

Многие наверняка уже слышали об онлайн сервисе TinEye, который русскоязычные пользователи часто называют Тинай. Он разработан экспертами в сфере машинного обучения и распознавания объектов. Как следствие всего этого, тинай отлично подходит не только для поиска похожих картинок и фотографий, но их составляющих.

Проиндексированная база изображений TinEye составляет более 10 миллиардов позиций, и является крупнейших во всем Интернет. «Здесь найдется всё» — это фраза как нельзя лучше характеризует сервис.

окно поиска на сайте тинай

Переходите по ссылке https://www.tineye.com/, и, как и в случае Яндекс и Google, загрузите файл-образец для поиска либо ссылку на него в интернет.

результаты поиска в тинай

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

PhotoTracker Lite – поиск 4в1

Расширение для браузера PhotoTracker Lite (работает в Google Chrome, Opera с версии 36, Яндекс.Браузере, Vivaldi) позволяет в один клик искать похожие фото не только в указанных выше источниках, но и по базе поисковика Bing (Bing Images)!

Скриншот интерфейса расширения:
отметка нужных поисковых систем

В настройках приложения укажите источники поиска, после чего кликайте правой кнопкой мыши на любое изображение в браузере и выбирайте опцию «Искать это изображение» PhotoTracker Lite:

меню поиска картинки в браузере

Есть еще один способ поиска в один клик. По умолчанию в настройках приложения активирован пункт «Показывать иконку быстрого поиска». Когда Вы наводите на какое-то фото или картинку, всплывает круглая зеленая иконка, нажатие на которую запускает поиск похожих изображений – в новых вкладках автоматически откроются результаты поиска по Гугл, Яндекс, Тинай и Бинг.

значок плагина в углу фотографии

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

Когда это может понадобиться

  • Вы являетесь фотографом, выкладываете свои фото в интернет и хотите посмотреть на каких сайтах они используются и где возможно нарушаются Ваши авторские права.
  • Вы являетесь блогером или копирайтером, пишите статьи и хотите подобрать к своему материалу «незаезженное» изображение.
  • А вдруг кто-то использует Ваше фото из профиля Вконтакте или Фейсбук в качестве аватарки на форуме или фальшивой учетной записи в какой-либо социальной сети? А ведь такое более чем возможно!
  • Вы нашли фотографию знакомого актера и хотите вспомнить как его зовут.

На самом деле, случаев, когда может пригодиться поиск по фотографии, огромное множество. Можно еще привести и такой пример…

Как найти оригинал заданного изображения

Например, у Вас есть какая-то фотография, возможно кадрированная, пожатая, либо отфотошопленная, а Вы хотите найти её оригинал, или вариант в лучшем качестве. Как это сделать? Проводите поиск в Яндекс и Гугл, как описано выше, либо средствами PhotoTracker Lite и получаете список всех найденных изображений. Далее руководствуетесь следующим:

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

    Статья в тему: Как изменить размер картинки без потери в качестве.

  2. Оригинальные фотографии часто имеют водяные знаки, обозначающие авторство снимка (фамилия, адрес сайта, название компании и пр.). Конечно водяной знак может добавить кто угодно на абсолютно на любое изображение, но в этом случае можно поискать образец фото на сайте или по фамилии автора, наверняка он где-то выкладывает своё портфолио онлайн.
  3. И наконец, совсем простой признак. Если Ваш образец фото черно-белый (сепия и пр.), а Вы нашли такую же, но полноцветную фотографию, то у Вас явно не оригинал. Добавить цветность ч/б фотографии гораздо более сложнее, чем перевести цветную фотографию в черно-белую  :)

Уважаемые читатели, порекомендуйте данный материал своим друзьям в социальных сетях, а также задавайте свои вопросы в комментариях и делитесь своим мнением!

Похожие публикации:

  • Data Recovery Wizard — легкое восстановление файлов, удаленных по ошибке
  • Решение проблемы черного экрана при воспроизведении видео с Youtube
  • Просто и понятно о VPN – с картинками и пояснениями
  • Как отключить автоматическое создание групп вкладок в Chrome
  • Как активировать режим «картинка в картинке» для видео в Хроме

Понравилось? Поделитесь с друзьями!

фото автора
Сергей Сандаков, 42 года.
С 2011 г. пишу обзоры полезных онлайн сервисов и сайтов, программ для ПК.
Интересуюсь всем, что происходит в Интернет, и с удовольствием рассказываю об этом своим читателям.

3 / 2 / 1

Регистрация: 19.06.2017

Сообщений: 76

1

Быстрый поиск фрагмента картинки

07.07.2017, 15:58. Показов 30749. Ответов 41


Студворк — интернет-сервис помощи студентам

Подскажите, существуют ли библиотеки, которые помогут мне быстро искать фрагмент изображения на картинке?
Размер основной картинки: FullHD

Думаю, что FullHD, это очень большая картинка и поиск по ней займет около 1 минуты. Это очень долго. Ну, кто знает какие библиотеки есть для этого случая.



0



nedel

07.07.2017, 17:18

Не по теме:

Цитата
Сообщение от Liza89
Посмотреть сообщение

Думаю, что FullHD, это очень большая картинка

не такая уж большая: 1920х1080



0



44 / 44 / 24

Регистрация: 01.05.2012

Сообщений: 178

07.07.2017, 17:39

3

посмотрите AForge.NET.



1



3 / 2 / 1

Регистрация: 19.06.2017

Сообщений: 76

07.07.2017, 23:06

 [ТС]

4

Цитата
Сообщение от Sigma214
Посмотреть сообщение

посмотрите AForge.NET.

Посмотрел, настроил. Использовал этот пример http://hintdesk.com/aforge-net-similar-images/
Распознование длится около 8 секунд и легко может спутать фрагмент с другим участком изображения. Все зависит от цвета фрагмента и рисунка. Например, иконку фотоаппарата из черной полоски на белом фоне не распознало. Пишет 80% и тут не поймешь да или нет.

Поддержка AForge.NET закончилась в 2013 году. Посоветуйте более свежую библиотеку для этого делаю



0



1568 / 1447 / 303

Регистрация: 01.10.2011

Сообщений: 2,636

07.07.2017, 23:37

5



0



3 / 2 / 1

Регистрация: 19.06.2017

Сообщений: 76

07.07.2017, 23:57

 [ТС]

6

Цитата
Сообщение от edward_freedom
Посмотреть сообщение

эту библиотеку я знаю. но примеров не нашлось в гугле.



0



Sigma214

44 / 44 / 24

Регистрация: 01.05.2012

Сообщений: 178

08.07.2017, 17:28

7

есть такой скриптик на Python’e:

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import cv2
import numpy as np
 
image1 = cv2.imread("<filename1>")
image2 = cv2.imread("<filename2>")
 
difference = cv2.substract(image1, image2)
 
result  = not  np.any(difference) 
 
if result is True:
      print "Images are silimlar"
Else:
    cv2.imwrite("result.jpg",difference)
     print "Image are different"

его можно прикрутить к C#, но как передать параметры в виде названий файлов не знаю.



0



Эксперт .NETАвтор FAQ

10377 / 5108 / 1824

Регистрация: 11.01.2015

Сообщений: 6,226

Записей в блоге: 34

08.07.2017, 20:26

8

Цитата
Сообщение от Liza89
Посмотреть сообщение

Подскажите, существуют ли библиотеки, которые помогут мне быстро искать фрагмент изображения на картинке?

Ваш вопрос слишком абстрактный и требует уточнения. Приведите примеры изображений, а также уточните:
1) Являются ли фрагменты в точности идентичными (пиксел в пиксел совпадают)? Если нет, то какого типа различия?
2) Одного ли они размера (шаблон и его фрагмент в большом изображении)?

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

Цитата
Сообщение от Liza89
Посмотреть сообщение

эту библиотеку я знаю. но примеров не нашлось в гугле.

Серьезно? Весь ComputerVision только на OpenCV и идет. Примеров — уйма.



2



3 / 2 / 1

Регистрация: 19.06.2017

Сообщений: 76

08.07.2017, 21:23

 [ТС]

9

Цитата
Сообщение от Storm23
Посмотреть сообщение

это целая отрасль, состоящая из сотен различных методов и подходов

в этом и проблема темы «поиска соответствия между изображениями»

Примеры изображений я приводить не стану, потому что не придется. Но, если вдруг, то все таки прикреплю.
Имеется 2 изображения. Первое изображение — это скриншот дисплея телефона. Разрешение первого изображения — fullhd. Второе изображение — это скопированный участок с первого изображения, к примеру, кнопка какого-нибудь приложения.
Изображения одинакового цвета и оттенка, но разного размера. Первое изображение размером 1920х1080, второе изображение меньше, чем первое.
Если второе изображение приложить на первое изображение именно на то место с которого скопировано, то пиксели и цвет сойдутся — это значит

что пиксель в пиксель совпадают

.

А задание такое: нужно на первом изображении найти второе. Идут изображения(скриншоты) один за другим и нужно узнать, когда же появится кнопка, чтобы на ее нажать.

Сейчас, в принципе, сделано все кроме поиска фрагмента на скриншоте.



0



1346 / 1272 / 218

Регистрация: 19.02.2010

Сообщений: 3,651

08.07.2017, 22:01

10

А нельзя ли просто «вычитанием» предыдущего кадра из нового получить изменившиеся на экране регионы (а, может, всего один регион — возникшую кнопку) — и с каждым таким сравнить эталон (перемасштабировав и посчитав коэффициент корреляции)?

Если же грубой силой с полным текущим кадром — то см на region covariance (гугл по этому запросу выдаст на первой позиции пдфку с научной статьёй 2006г, поимевшей за прошедшие годы более 1000 цитирований в научной литературе — т.е. классика).
Не хватит скорости (если вдруг не умеете писать быстрые расчётные программы) — уменьшайте перед обработкой кадр вдвое (втрое или даже вчетверо). Найденные для уменьшенного кадра координаты эталонного фрагмента пересчитываются в координаты полноразмерного кадра простым умножением на 2/3/4.



0



Storm23

Эксперт .NETАвтор FAQ

10377 / 5108 / 1824

Регистрация: 11.01.2015

Сообщений: 6,226

Записей в блоге: 34

08.07.2017, 22:39

11

Лучший ответ Сообщение было отмечено edward_freedom как решение

Решение

Цитата
Сообщение от Liza89
Посмотреть сообщение

Примеры изображений я приводить не стану, потому что не придется. Но, если вдруг, то все таки прикреплю.
Имеется 2 изображения. Первое изображение — это скриншот дисплея телефона. Разрешение первого изображения — fullhd. Второе изображение — это скопированный участок с первого изображения, к примеру, кнопка какого-нибудь приложения.
Изображения одинакового цвета и оттенка, но разного размера. Первое изображение размером 1920х1080, второе изображение меньше, чем первое.
Если второе изображение приложить на первое изображение именно на то место с которого скопировано, то пиксели и цвет сойдутся — это значит что пиксель в пиксель совпадают.

Ну это задача простая. Тут никаких библиотек не нужно:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
    public partial class Form1 : Form
    {
        Template template;
        Bitmap source;
        Point? foundPoint;
 
        public Form1()
        {
            InitializeComponent();
 
            //загружаем изображение
            source = new Bitmap(new WebClient().OpenRead("http://blog.webpixel.co/wp-content/uploads/City-Wallpaper-1080p-371.jpg"));
 
            //уст стандартное DPI
            source.SetResolution(96, 96);
 
            //берем фрагмент из большого изображения
            var fragment = new Bitmap(100, 100);
            using (var gr = Graphics.FromImage(fragment))
                gr.DrawImage(source, -1000, -490);
 
            //создаем шаблон
            template = new Template(fragment);
 
            //отображаем
            pbSource.Image = source;
            pbTemplate.Image = fragment;
        }
 
        private void btFind_Click(object sender, EventArgs e)
        {
            //засекаем время
            var sw = Stopwatch.StartNew();
 
            //ищем шаблон 
            foundPoint = template.Find(source);
 
            //отрисовываем
            lbFindTime.Text = "Find time: " + sw.Elapsed;
            pbSource.Invalidate();
        }
 
        private void pbSource_Paint(object sender, PaintEventArgs e)
        {
            //рисуем рамку, если найдено
            if (foundPoint != null)
            using(var pen = new Pen(Color.Red, 4))
            {
                e.Graphics.DrawRectangle(pen, foundPoint.Value.X, foundPoint.Value.Y, 100, 100);
            }
        }
    }
 
    class Template
    {
        List<ColorPoint> FeaturePoints = new List<ColorPoint>();
 
        public Template(Bitmap template)
        {
            //ищем в шаблоне 10 пикселов с разными цветами, запоминаем в FeaturePoints
            var colors = new HashSet<Color>();
            using (var wr = new ImageWrapper(template))
            foreach (var p in wr)
            {
                var c = wr[p];
                
                if (c != Color.Black || c!= Color.White)//игнорируем банальные цвета
                if (!colors.Contains(c))
                {
                    colors.Add(c);
                    FeaturePoints.Add(new ColorPoint {Color = c, Location = p});
                    if (FeaturePoints.Count > 10) break;
                }
            }
        }
 
        //ищем фрагмент в большом изображении
        public Point? Find(Bitmap source)
        {
            using (var wr = new ImageWrapper(source))
            foreach (var p in wr)
            {
                var c = wr[p];
                if (c == FeaturePoints[0].Color)
                {
                    var offset = new Point(p.X - FeaturePoints[0].Location.X, p.Y - FeaturePoints[0].Location.Y);
                    //проверяем все особые точки
                    foreach (var fp in FeaturePoints)
                    {
                        var pp = fp.Location;
                        pp.Offset(offset);
                        if (wr[pp] != fp.Color)
                            goto next;
                    }
                    return offset;
                }
                next:;
            }
 
            return null;
        }
    }
 
    struct ColorPoint
    {
        public Point Location;
        public Color Color;
    }

Для исходного fullHD изображения (1920х1080) поиск занимает в среднем 94 мс:

Быстрый поиск фрагмента картинки

(компилировать в Release, запускать по CTRL+F5)

Время поиска — O(n), где n — число пикселов в исходном изображении.
Если это время не устраивает — можно уменьшить исходное изображение (как советовали выше). Уменьшение картинки в два раза повысит скорость поиска в 4 раза.

Вложения

Тип файла: zip WindowsFormsApplication372 (15).zip (85.9 Кб, 532 просмотров)



13



sidikd

0 / 0 / 0

Регистрация: 05.09.2017

Сообщений: 2

05.09.2017, 18:11

12

Storm23 У меня не находит мой фрагмент изображения который я вставляю в ваш код.
Фрагмент вырезаю с соурс файла, только подставляю его вручную.
Подскажите пожалуйста, в чем может быть проблема?

C#
1
2
3
4
5
6
7
source = new Bitmap(Image.FromFile("img/2017-09-05_10-32-30.jpg"));
 
//уст стандартное DPI
source.SetResolution(96, 96);
 
//берем фрагмент из большого изображения
var fragment = new Bitmap(Image.FromFile("img/1.jpg"));



0



Эксперт .NET

6315 / 3934 / 1577

Регистрация: 09.05.2015

Сообщений: 9,237

05.09.2017, 18:26

13

Цитата
Сообщение от sidikd
Посмотреть сообщение

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

Может потому что jpg хранит изображение с потерями? Цвета там могут изменяться и т.д.



1



0 / 0 / 0

Регистрация: 05.09.2017

Сообщений: 2

05.09.2017, 18:35

14

Цитата
Сообщение от Someone007
Посмотреть сообщение

Может потому что jpg хранит изображение с потерями? Цвета там могут изменяться и т.д.

Возможно в этом и есть проблема.
Мне нужно отловить на скриншоте активную красную кнопку размером 100х50 px.
Может кто подскажет, как это лучше реализовать?



0



управление сложностью

1687 / 1300 / 259

Регистрация: 22.03.2015

Сообщений: 7,545

Записей в блоге: 5

05.09.2017, 20:01

15

Цитата
Сообщение от sidikd
Посмотреть сообщение

Мне нужно отловить на скриншоте активную красную кнопку размером 100х50 px.

Каждый раз (периодически) парсить пикселы на изменение цвета определенной области (при условии что все скрины одинакового размера и разрешения), иначе — прямая дорога в opencv



0



89 / 27 / 6

Регистрация: 17.03.2016

Сообщений: 207

19.09.2017, 15:05

16

Очень круто. А не подскажете как сделать если я сохранил изображение кнопки и хочу при работе приложения вычислить её координаты?



0



управление сложностью

1687 / 1300 / 259

Регистрация: 22.03.2015

Сообщений: 7,545

Записей в блоге: 5

19.09.2017, 15:32

17

malkot, для чего такое извращение ?



0



89 / 27 / 6

Регистрация: 17.03.2016

Сообщений: 207

19.09.2017, 15:57

18

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



0



управление сложностью

1687 / 1300 / 259

Регистрация: 22.03.2015

Сообщений: 7,545

Записей в блоге: 5

19.09.2017, 16:30

19

Цитата
Сообщение от malkot
Посмотреть сообщение

Интересно было как это можно сделать по-другому

получить их хендлы и слать мессаджи этим контролам



1



89 / 27 / 6

Регистрация: 17.03.2016

Сообщений: 207

20.09.2017, 12:24

20

Нашёл хендл окна, в этом окне находится дочерний объект «TButtonGroup», подскажите пожалуйста как мне программно выгружать отчёты на диск «С», получается только по координатам, прикрепил лог spyxx при нажатии на диск «С».

Миниатюры

Быстрый поиск фрагмента картинки
 

Быстрый поиск фрагмента картинки
 



0



Понравилась статья? Поделить с друзьями:
  • Как составить баланс предприятия программа
  • Как реально можно найти человека
  • Как исправить кислоту в твороге
  • Как найти процесс заряда конденсатора
  • Как исправить веб камеру ноутбука