Алгоритм кластеризации снимков по дате съемки - PullRequest
7 голосов
/ 06 марта 2009

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

  • 1/2/2009 15 фото
  • 1/3/2009 20 фото
  • 1/4/2009 13 фото
  • 1/5/2009 19 фото
  • 1/15/2009 5 фото

Потенциально они будут сгруппированы в две группы:

  1. 1/2/2009 -> 05.01.2009
  2. 1/15/2009

Очевидно, что должны быть установлены некоторые допуски.

Есть ли какой-нибудь хорошо зарекомендовавший себя способ сделать это, кроме изобретения моего собственного подхода сверху / вниз?

Ответы [ 5 ]

6 голосов
/ 06 марта 2009

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

Удачи.

0 голосов
/ 05 июня 2009

Попробуйте обнаружить пробелы вместо кластеров.

0 голосов
/ 06 марта 2009

Чтобы получить полезную кластеризацию картинок по дате, вам необходимо:

1) Количество кластеров должно быть переменным и не фиксированным априори к кластеризации

2) Диаметр каждого кластера не должен превышать определенного количества.

Алгоритм кластеризации, который наилучшим образом удовлетворяет обоим требованиям, - это алгоритм кластеризации QT (порог качества) . Из Википедии:

QT (порог качества) кластеризация (Heyer, Kruglyak, Yooseph, 1999) является альтернативный метод разбиения данные, изобретенные для кластеризации генов. Это требует больше вычислительной мощности, чем k-означает, но не требует указав количество кластеров априори и всегда возвращает одно и то же результат при запуске несколько раз.

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

0 голосов
/ 06 марта 2009

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

0 голосов
/ 06 марта 2009

Просто сгруппируйте снимки, сделанные в последовательные дни (без дней, когда снимки не делались) вместе.

...