Допустим, у нас есть разные файлы с разным качеством видео:
- один из них чрезвычайно
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
, которыйможно построить диаграммы, как показано ниже.Проверка с массивом изображений имеет большинство значений, чтобы найти изображение с лучшим качеством цветов:
(2) Подробно против обнаружения размытости ...
Вы можете попробовать использовать сверточный фильтр для обнаружения размытия на изображении.Дайте фильтру ядро ( например: матрица).Матрица (3x3), показанная ниже, дает фильтр распознавание кромок , где размытые изображения дают меньше краев (следовательно, дают больше черных пикселей).
Используйте логику, чтобы предположить, что: more black pixels EQuals a more blurred image (less detail)
.
Вы можете прочитать о свертках здесь