Алгоритм выбора самого яркого / самого разнообразного изображения из группы? - PullRequest
5 голосов
/ 26 апреля 2011

У меня есть 100 изображений, извлеченных из видео для использования в качестве эскиза в галерее. Мое приложение C # должно выбрать, какое из них наиболее «интересно» - или какое соблазнит пользователя просмотреть видео после просмотра эскиза.

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

  • Должен иметь высокий уровень яркости , но не полностью белый. Возможно усреднение яркости 50% - 75% по шкале от черного до белого.
  • Должен иметь разнообразный набор цветов . Предполагая, что это можно измерить, изображения с самым широким диапазоном цветов должны выделяться в группе.

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

Ответы [ 4 ]

4 голосов
/ 26 апреля 2011

Взгляните на бумагу Video Tapestries от SIGGRAPH 2010. Очевидно, что это complete излишек для вашего проекта, но посмотрите предыдущий рабочий раздел. Надеюсь, вы получите представление о том, как решить, какой материал интересен и репрезентативен.

4 голосов
/ 26 апреля 2011

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

1 голос
/ 26 апреля 2011

Проверьте эту страницу для преобразования RGB в HSL (оттенок, насыщенность, яркость):

http://130.113.54.154/~monger/hsl-rgb.html введите описание ссылки здесь

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

Как только вы это сделаете, яркость представляет «яркость». Оттенок и насыщенность вместе представляют «цвет». Оттенок - это оттенок (это зеленый или красный), а насыщенность - интенсивность.оттенка.

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

Чтобы определить цветовой диапазон, в качестве первой попытки я хотел бы сделать что-токак вычисление векторной суммы оттенков и насыщенности. Это должно дать вам «расстояние от белого». Что-то вроде:

Color Strength = Sqrt(Hue^2 + Saturation^2)

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

Возможно, вы захотите отобрать каждое изображение, другими словами, рассчитать HSL только для небольшого количества пикселей каждого изображения.Вам нужно будет поэкспериментировать с тем, какие образцы рассчитать.Может быть лучше взять что-то вроде блока 8x8 из центра и каждого угла, вычислить средний HSL для этих блоков, а затем использовать их в своих вычислениях.

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

1 голос
/ 26 апреля 2011

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

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