Как сравнить качество двух изображений?

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

Я спрашиваю в контексте сравнения особенностей текстуры изображений и того, какой вектор признаков будет более подходящим.

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


person Deepak kumar Jha    schedule 27.06.2012    source источник
comment
Это очень широкий вопрос. Ответить почти невозможно.   -  person Eitan T    schedule 27.06.2012
comment
Покажите фотографии группе людей и спросите их, какая из них выглядит лучше.   -  person slayton    schedule 27.06.2012
comment
А если серьезно, проблема заключается в том, что вам нужно определить метрику качества изображения и найти способ ее вычисления на основе изображения. Обе задачи не тривиальны.   -  person slayton    schedule 27.06.2012


Ответы (4)


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


Метрика: сумма значений abs( разницы в цвете) по всем пикселям. Чем ниже, тем более похожи изображения.

Метод. Для каждого пикселя получите абсолютную разницу в цвете (или расстояние, если быть точным) в пространстве LAB между исходным и обработанным изображением и просуммируйте его. Не портите себе день попытками понять всю статью в Википедии и кодированием того, что это уже было сделано раньше. Попробуйте повторно использовать методы getDistanceLabFrom(Color color) или getDistanceRgbFrom(Color color) из этой реализации PHP.
Это сработало как шарм для меня, когда мне нужен был способ сопоставить цвет пикселей в изображении jpg - что в основном тот же принцип.


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

person Philzen    schedule 27.06.2012

Лучшим подходом было бы сделать некоторое соотношение шум/сигнал путем сравнения спектров изображения?

person Joel Falcou    schedule 28.06.2012

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

Затем ваш алгоритм должен удалить как можно больше добавленного шума. Результаты легко сравнить с отношением сигнал/шум (см. википедию).

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

Другой, довольно распространенный способ сделать это — тот, который рекомендует Слейтон: попросите всех своих коллег оценить результаты вашего алгоритма, а затем усредните их впечатления.

person Sam    schedule 28.06.2012

Если у вас есть только 2 изображения и нет эталонного изображения (самого высокого качества), вы можете увидеть мое грубое решение/скрипт bash: https://photo.stackexchange.com/questions/75995/how-do-i-compare-two-similar-images-sharpness/117823#117823

Он получает 2 имени файла и выводит имя файла более высокого качества. Предполагается, что содержимое изображений идентично (одинаковое исходное изображение). Хотя можно обмануть.

person A. Genchev    schedule 10.07.2020