Как оценить качество изображения с помощью сравнения изображений - PullRequest
0 голосов
/ 07 октября 2018

Я хотел бы сравнить видео.Чтобы сравнить качество (не размыто), написав программу на Си.Кто-то сказал мне узнать о DFT (дискретном преобразовании Фурье) для анализа изображений и использовать инструмент FFT или DFT, чтобы узнать разницу между размытыми и подробными (не размытыми) копиями одного и того же изображения.

(скопировано из другой вопрос ):
Допустим, у нас разные файлы с разным качеством видео, один очень четкий, другой размытый, другой имеет грубые цвета.Сравнивайте все файлы в основном кадр за кадром и сообщайте пользователю, который имеет лучшее качество.

Так может ли кто-нибудь помочь мне с этим ??

1 Ответ

0 голосов
/ 10 октября 2018

Допустим, у нас есть разные файлы с разным качеством видео:

  • один из них чрезвычайно clear, другой blurred, другой rough colors.

Сравнивайте все файлы в основном по кадрам и отчитывайтесь перед пользователем с лучшим качеством.

(1) Обнаружение качества цвета ...

Чтобы проверить, какой цвет лучше, вы анализируете гистограммы тестовых изображений.Гистограмма будет подсчитывать, сколько пикселей имеют интенсивность X.Где X - это число в диапазоне от 0 до 255 (потому что каждый красный, зеленый и синий каналы содержат любую из этих 256 возможных интенсивностей).

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

Обычно это выглядит так:

  • Сначала создайте 3 массива ( например: hist_Red) для хранения данных для красного, зеленого и синего каналов.

  • Разбить (используя цикл FOR) каждый пиксель на отдельные компоненты канала R / G / B:

пример:

temp_Red = this_pixel >> 16 & 0x0ff; 
temp_Grn = this_pixel >> 8 & 0x0ff;
temp_Blu = this_pixel >> 0 & 0x0ff;
  • Затем добавьте +1 к этой определенной интенсивности красного / зеленого / синего в соответствующей гистограмме.

пример:

hist_Red[ temp_Red ] += 1;
hist_Grn[ temp_Grn ] += 1;
hist_Blu[ temp_Blu ] += 1;

Суммируя суммы красного, зеленого и синего, вы получите общую интенсивность RGB в array, которыйможно построить диаграммы, как показано ниже.Проверка с массивом изображений имеет большинство значений, чтобы найти изображение с лучшим качеством цветов:

image

(2) Подробно против обнаружения размытости ...

Вы можете попробовать использовать сверточный фильтр для обнаружения размытия на изображении.Дайте фильтру ядро ​​( например: матрица).Матрица (3x3), показанная ниже, дает фильтр распознавание кромок , где размытые изображения дают меньше краев (следовательно, дают больше черных пикселей).

Используйте логику, чтобы предположить, что: more black pixels EQuals a more blurred image (less detail).

Вы можете прочитать о свертках здесь

image

...