2010-03-10 2 views
5

Существуют ли какие-либо алгоритмы для анализа сложности изображения? В основном я пишу скрипт Perl, который будет использовать функцию system() для запуска MPlayer в фоновом режиме для создания от 10 до 20 скриншотов для входного видеофайла, и я хотел бы, чтобы он мог отбросить любые простые изображения, такие как снимок неба, черный фон и другие простые изображения и сохраняют только 3 из этих изображений с наивысшей сложностью или большим количеством цветов. Есть ли модуль или отдельная программа, которую я могу использовать для этого? Я предполагаю, что Изображение :: Magick может позаботиться об этом.Анализ сложности изображения

+4

Вы запрашиваете гораздо более сложный алгоритм, чем вы думаете ... – RedFilter

ответ

9

Посмотреть как маленький JPEG сжатый копия. JPEG работает, чтобы удалить избыточность информации об изображении и «сложные» изображения просто не имеют столько же избыточность, чтобы удалить.

+1

Это хорошая идея - сравните размер растрового изображения с размером файла jpeg, чем больше разница между ними, тем проще изображение. – Kazar

+0

Это может сработать для фотографических изображений, но у меня есть ощущение, что он не будет так хорошо работать в искусстве, тексте или других вещах, которые jpeg плохо обрабатывает. Однако для этих видов изображений вы можете использовать ту же технику с png или gif. – Seth

+0

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

0

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

0

Я не знаю готовый метод библиотеки, но есть некоторые алгоритмы для измерения этого ...

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

бит псевдо-кода, так как я не знаю, Perl:

complexity = 0 
// image coordinates start at [0,0] 
for x = 1 to image.max_x: 
    for y = 1 to image.max_y: 
     complexity += abs(image[x,y].red - image[x,y-1].red) 
     complexity += abs(image[x,y].red - image[x-1,y].red) 
     complexity += abs(image[x,y].blue - image[x,y-1].blue) 
     complexity += abs(image[x,y].blue - image[x-1,y].blue) 
     complexity += abs(image[x,y].green - image[x,y-1].green) 
     complexity += abs(image[x,y].green - image[x-1,y].green) 
+0

Это предпочтет «шумные» изображения для «информации плотных» изображений. Рассмотрим кадр белого шума/снега. –

+0

Хорошо, все верно. Но в типичных случаях это также сработает. Единственный фильм, из которого я помню шумные образы, был бы «The Ring» - и этот кадр был бы довольно типичным превью для фильма, я думаю ;-) Кстати, вы могли бы также измерить, что этот эго выкинет для изображения белого шума и запретить что-либо выше порога немного ниже этого измерения. И, если быть справедливым, этот алгот принесет ценную информацию только на изображения, имеющие одинаковые размеры. OTOH, в заявке, о которой упоминалось в OP, что было бы по своей сути. – orithena

1

Моим первым ответом был бы метод JPEG, но кто-то уже предложил его, поэтому следующим моим ответом было бы вычисление гистограммы ($image->Histogram()). Просто посмотрите на количество разных цветов на изображении. Для фотографий (таких как небо), чем больше цветов в изображении, тем сложнее он.

+0

Я не согласен. Монохромные/двууровневые изображения могут быть очень информативными. Http://obeygiant.com/images/2008/10/obey-floral-red-500x490.jpg .... Вы действительно сказали «фотографии». –

+0

Joe: Вот почему я квалифицировал его как «Для фотографий». Его примером был «черный фон» или «небо», оба из которых подразумевают цветные фотографии. Фактически, он даже спросил, как подсчитывать цвета, что я дал. – Gabe

+0

Хорошо, что изображение - это фотография чертежа! Но да, я вижу вашу точку зрения, и я согласен с тем, что вы предоставили решение вопроса. –

2

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

Смежные вопросы