Оцените качество изображения относительно сжатия? - PullRequest
12 голосов
/ 16 ноября 2010

У меня есть изображения, которые я использую для задачи компьютерного зрения.Задача чувствительна к качеству изображения.Я хотел бы удалить все изображения, которые ниже определенного порогового значения, но я не уверен, существует ли какой-либо метод / эвристика для автоматического обнаружения изображений, которые сильно сжаты с помощью JPEG.У кого-нибудь есть идея?

Ответы [ 3 ]

21 голосов
/ 16 ноября 2010

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

  • Поскольку вы упоминаете JPEG, есть две основные функции ухудшения качества, которые проявляются в сжатых JPEG-изображениях: блокировка и размытие
  • Метрики оценки качества изображения без опорных изображений обычно ищут эти две функции
  • Блокировку довольно легко обнаружить, так как она появляется только приграницы макроблоков.Макроблоки имеют фиксированный размер - 8x8 или 16x16, в зависимости от того, какое изображение было закодировано с помощью
  • Размытие немного сложнее.Это происходит потому, что более высокие частоты в изображении были ослаблены (удалены).Вы можете разбить изображение на блоки, DCT (дискретное косинусное преобразование) каждого блока и посмотреть на высокочастотные компоненты результата DCT.Если высокочастотные компоненты отсутствуют в большинстве блоков, то вы, вероятно, смотрите на размытое изображение
  • Другой подход к обнаружению размытия - это измерение средней ширины краев изображения.Выполните определение края Собела на изображении, а затем измерьте расстояние между локальными минимумами / максимумами с каждой стороны края.Google для «Безрецептурной метрики восприятия размытия» Марцилиано - это известный подход.«Детектирование размытия на основе блоков без ссылок» Дебинга - более свежая статья

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

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

Google Scholar действительно ваш друг здесь.Хотел бы я дать вам конкретное решение, но у меня его пока нет - если бы я это сделал, я был бы очень успешным студентом магистратуры.

ОБНОВЛЕНИЕ:

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

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

Если вы работаете в Linux, это не должно быть слишком сложно реализовать с помощью утилиты конвертации bash и imageMagick.

Вы можете попробовать другие варианты этогоподход:

  • Вместо сжатия JPEG, попробуйте другую форму деградации, такую ​​как размытие по Гауссу
  • Вместо простого сравнения размеров файлов, попробуйте полную справочную метрику, такую ​​как SSIM - есть реализация OpenCV , свободно доступная .Существуют и другие реализации (например, Matlab, C #), поэтому посмотрите вокруг.

Дайте мне знать, как вы идете.

4 голосов
/ 26 марта 2011

У меня было много фотографий, снятых в древнюю книгу (настолько похожий макет, две страницы на изображение), но некоторые были сильно размыты, до такой степени, что текст не мог быть прочитан.Я искал готовый пакетный скрипт, чтобы найти самый размытый, но я не нашел ничего полезного, поэтому я использовал другую часть скрипта, доступную в сети (на основе ImageMagick, но больше не работала; я не могполучить автора за кредиты!), который полезен для оценки уровня размытия отдельного изображения, настроил его и автоматизировал для всей папки.Я загрузил здесь:

https://gist.github.com/888239

, надеясь, что это будет полезно для кого-то еще.Он работает в системе Linux и использует ImageMagick (и некоторые обычно установленные инструменты командной строки, такие как gawk, sort, grep и т. Д.).

0 голосов
/ 16 ноября 2010

Одна простая эвристика могла бы выглядеть на width * height * color depth < sigma * file size.Конечно, вы должны определить правильное значение для sigma.sigma будет зависеть от ожидаемой энтропии изображений, которые вы смотрите.

...