Поиск цветового сходства - PullRequest
       3

Поиск цветового сходства

1 голос
/ 18 октября 2010

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

Мне кажется, что первая часть этого хороша, идея использования трехмерного пространства и близости, но эта вторая половина кажется мне плохой идеей, мне не нужно проверять отсканированный цветпротив каждой точки в базе данных, я должен?Никогда не занимаясь официальной CS-работой, я не знаю, что делать, но у меня ужасно отчетливое ощущение, что должен быть лучший путь.

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

Редактировать: Я использую Python для этого, если кому-то интересно.

1 Ответ

3 голосов
/ 18 октября 2010

Обращаясь к абстрактному утверждению: если в функции подобия, которая известна априори, нет структуры, нет лучшего способа, чем «попробовать все».

Ваша проблема изучается под термином "поиск ближайшего соседа" .Для этой проблемы смутно подходит дерево покрытия .Эта страница содержит указатели на код.Также может подойти kd-tree .

В отсутствие дополнительной информации о структуре или охвате базы данных эталонных цветов трудно сделать дополнительные предложения.Например, если известно, что база данных имеет разреженность в худшем случае, запрос может быть ограничен теми записями, чей компонент R отличается от компонента R тестового цвета на меньшую, чем разреженность, и так далее для компонентов G и B, уменьшаявся база данных в меньшем кубическом разделе гарантированно будет содержать результат.(Использование этого метода требует доказательства того, что ни одна точка в кубе не находится дальше X от некоторой точки в базе данных, что, по крайней мере, может быть определено только один раз для фиксированной базы данных.)

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