Как работает цветной поиск Google? - PullRequest
19 голосов
/ 26 марта 2009

Допустим, я запрашиваю

http://images.google.com.sg/images?q=sky&imgcolor=black

и я получаю все черное цветное небо, как на самом деле работает алгоритм позади?

Ответы [ 4 ]

31 голосов
/ 26 марта 2009

Основываясь на этой статье , опубликованной инженерами Google Генри Роули, Шумитом Балуджей и доктором Юши Цзином, кажется, что наиболее важный вывод вашего вопроса о распознавании цветов на изображениях связан с алгоритмом Google Saferank. для изображений, которые могут обнаружить телесные тона без текста вокруг него.

Работа начинается с описания «классических» методов, которые обычно основаны на нормализации яркости цвета, а затем с использованием « Гауссово распределение » или с использованием трехмерной гистограммы, построенной с использованием Значения RGB в пикселях (каждый цвет представляет собой 8-битное целое значение от 0 до 255, представляющее, сколько этого цвета включено в пиксель). Также были введены методы, основанные на таких свойствах, как «яркость» (часто ошибочно называемая «яркость»), которая представляет собой плотность интенсивности света для невооруженного глаза от данного изображения.

В статье Google упоминается, что им потребуется обработать примерно 10 ^ 9 изображений с помощью их алгоритма, поэтому он должен быть максимально эффективным. Чтобы достичь этого, они выполняют большинство своих расчетов на ROI (интересующей области), которая представляет собой прямоугольник с центром в изображении и вставкой на 1/6 размеров изображения со всех сторон. Как только они определили рентабельность инвестиций, у них есть много различных алгоритмов, которые затем применяются к изображению, включая алгоритмы обнаружения лиц, алгоритмы цветового постоянства и другие, которые в целом находят статистических трендов в цветовой гамме изображения и самое главное найти цветовые оттенки с самой высокой частотой в статистическом распределении.

Они используют другие функции, такие как энтропия, обнаружение краев и определения текстур, для Чтобы извлечь строки из изображений, они используют реализацию OpenCV (Bradski, 2000) вероятностного преобразования Хафа (Kiryati et al., 1991), вычисленного по краям связанных компонентов цвета кожи, что позволяет им найдите прямые линии , которые, вероятно, не являются частями тела и дополнительно позволяют им лучше определять, какие цвета являются наиболее важными в изображении, что является ключевым фактором при их поиске цветов изображения.

Подробнее о технических особенностях этой темы, в том числе математических уравнениях и т. Д., Читайте статью Google, на которую есть ссылки в начале, и посмотрите раздел «Исследования» на их веб-сайте.

Очень интересный вопрос и тема!

7 голосов
/ 26 марта 2009

Изображения только пиксели. Пиксели - это просто значения RGB. Мы знаем, что такое черный цвет в RGB, поэтому мы можем найти его на изображении.

3 голосов
/ 26 марта 2009

Ну, один метод, в самых основных терминах:

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

Это очень, очень простое описание одного возможного метода.

0 голосов
/ 19 января 2013

Существуют различные способы выделения цвета из изображения, и я думаю, что другие ответы на них (K-средства, распределения и т. Д.).

Если вы извлекли цвета, есть несколько способов поиска по цвету. Одним из медленных, но очевидных подходов будет вычисление расстояния между цветом поиска и доминирующими цветами изображения с использованием некоторого показателя (например, Разница в цвете ), а затем взвешивание результатов на основе "близости". 1005 *

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...