Существуют ли какие-либо алгоритмы для анализа сложности изображения? В основном я пишу скрипт Perl, который будет использовать функцию system() для запуска MPlayer в фоновом режиме для создания от 10 до 20 скриншотов для входного видеофайла, и я хотел бы, чтобы он мог отбросить любые простые изображения, такие как снимок неба, черный фон и другие простые изображения и сохраняют только 3 из этих изображений с наивысшей сложностью или большим количеством цветов. Есть ли модуль или отдельная программа, которую я могу использовать для этого? Я предполагаю, что Изображение :: Magick может позаботиться об этом.Анализ сложности изображения
ответ
Посмотреть как маленький JPEG сжатый копия. JPEG работает, чтобы удалить избыточность информации об изображении и «сложные» изображения просто не имеют столько же избыточность, чтобы удалить.
Это хорошая идея - сравните размер растрового изображения с размером файла jpeg, чем больше разница между ними, тем проще изображение. – Kazar
Это может сработать для фотографических изображений, но у меня есть ощущение, что он не будет так хорошо работать в искусстве, тексте или других вещах, которые jpeg плохо обрабатывает. Однако для этих видов изображений вы можете использовать ту же технику с png или gif. – Seth
Это WORKS удивительно хорошо, я использовал его, чтобы выбрать лучший эскиз из набора миниатюр раньше, и это отлично подходит для избавления от черных только –
Возможно, вы захотите сделать FFT и искать высокочастотную информацию на изображениях ... Это даст вам общее представление о сложности.
Я не знаю готовый метод библиотеки, но есть некоторые алгоритмы для измерения этого ...
Вы могли бы попытаться сложить абсолютные значения разностей одного пикселя к другому , отдельно по цветному каналу. Тогда будет получен образец изображения с самым высоким результатом. Тем не менее, это было бы грубое измерение очень ...
бит псевдо-кода, так как я не знаю, 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)
Это предпочтет «шумные» изображения для «информации плотных» изображений. Рассмотрим кадр белого шума/снега. –
Хорошо, все верно. Но в типичных случаях это также сработает. Единственный фильм, из которого я помню шумные образы, был бы «The Ring» - и этот кадр был бы довольно типичным превью для фильма, я думаю ;-) Кстати, вы могли бы также измерить, что этот эго выкинет для изображения белого шума и запретить что-либо выше порога немного ниже этого измерения. И, если быть справедливым, этот алгот принесет ценную информацию только на изображения, имеющие одинаковые размеры. OTOH, в заявке, о которой упоминалось в OP, что было бы по своей сути. – orithena
Моим первым ответом был бы метод JPEG, но кто-то уже предложил его, поэтому следующим моим ответом было бы вычисление гистограммы ($image->Histogram()
). Просто посмотрите на количество разных цветов на изображении. Для фотографий (таких как небо), чем больше цветов в изображении, тем сложнее он.
Я не согласен. Монохромные/двууровневые изображения могут быть очень информативными. Http://obeygiant.com/images/2008/10/obey-floral-red-500x490.jpg .... Вы действительно сказали «фотографии». –
Joe: Вот почему я квалифицировал его как «Для фотографий». Его примером был «черный фон» или «небо», оба из которых подразумевают цветные фотографии. Фактически, он даже спросил, как подсчитывать цвета, что я дал. – Gabe
Хорошо, что изображение - это фотография чертежа! Но да, я вижу вашу точку зрения, и я согласен с тем, что вы предоставили решение вопроса. –
Отличная бумага here по теме. Он рассматривает более узкую проблему сопоставления изображений в военном приложении, но рассматривает исследования и содержит множество различных показателей сложности изображений, которые были рассмотрены различными авторами. Возможно, вам может понадобиться только один или два метода в вашей конкретной задаче. Проверьте это.
- 1. Анализ сложности алгоритма сортировки
- 2. Анализ сложности времени сегментации
- 3. Анализ сложности очередей
- 4. Анализ сложности в Haskell
- 5. Анализ сложности выполнения функции
- 6. Анализ сложности фрагмента кода
- 7. Анализ сложности алгоритмов
- 8. Анализ сложности времени алгоритма
- 9. анализ сложности сортировки пузыря
- 10. Анализ сложности времени
- 11. Анализ сложности для кода
- 12. Анализ сложности времени: лучшее объяснение?
- 13. Анализ сложности кода (Фибоначчи серии)
- 14. Анализ временной сложности изменения монет
- 15. Анализ сложности вложенных рекурсивных функций
- 16. вложенного цикла анализ сложности Продолжительность
- 17. Анализ сложности с разворачиванием цикла
- 18. Анализ сложности алгоритма сортировки стека
- 19. Анализ временной сложности с модулем
- 20. Неуверенный, если мой анализ сложности правильно
- 21. Анализ сложной сложности слияния Сортировка (C++)
- 22. Анализ SQL для определения уровня сложности
- 23. Анализ сложности цикла с ограниченным временем цикла
- 24. времени анализ сложности для рекурсии внутри рекурсии
- 25. Худший случай анализ сложности времени pseudocode
- 26. Анализ временной сложности алгоритма объединения-поиска?
- 27. Анализ временной сложности следующее для цикла
- 28. Анализ сложности временной разметки пятого уровня
- 29. Анализ алгоритма массива и его временной сложности
- 30. Анализ сложности времени - как упростить выражение
Вы запрашиваете гораздо более сложный алгоритм, чем вы думаете ... – RedFilter