Анализ сложности изображения

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

6
задан somebody 10 March 2010 в 20:33
поделиться

5 ответов

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

10
ответ дан 8 December 2019 в 17:20
поделиться

Вы можете рассмотреть возможность выполнения БПФ и поиска высокочастотной информации в изображениях... Это даст вам приблизительное представление о сложности.

0
ответ дан 8 December 2019 в 17:20
поделиться

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

3
ответ дан 8 December 2019 в 17:20
поделиться

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

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

Бит псевдокода, поскольку я не знаю 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
ответ дан 8 December 2019 в 17:20
поделиться

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

1
ответ дан 8 December 2019 в 17:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: