Перейти к основному содержимому
Версия: 3.24.1 (последняя)

Оценка качества изображения

Блок оценки качества изображения лица

Модификации процессинг-блока оценки качества

На данный момент существует следующие модификации:

  • "assessment" - первый из реализованных режимов блока Quality Assessment, в рамках которого оцениваются следующие параметры:

    Параметры, оцениваемые модификацией "assessment" 1-й версии

    Нажмите, чтобы отобразить список оцениваемых параметров
    • total_score - численное значение, обозначает общую оценку качества изображения в баллах от 0 до 1.
    • is_background_uniform - логическое значение, указывает на однородность фона.
    • background_uniformity_score - численное значение, оценка однородности фона в баллах от 0 до 2.
    • is_dynamic_range_acceptable - логическое значение, показывает, что динамический диапазон интенсивности изображения в области лица превышает или не превышает значение 1,28.
    • dynamic_range_score - численное значение, оценка динамического диапазона интенсивности в баллах от 0 до 1.
    • is_eyes_distance_acceptable - логическое значение, обозначает допустимое/недопустимое расстояние между глазами.
    • eyes_distance - численное значение расстояния между глазами в пикселях.
    • is_evenly_illuminated - логическое значение, обозначает равномерность освещения на изображении.
    • illumination_score - численное значение, оценка равномерности освещения в баллах от 0 до 1.
    • no_flare - логическое значение, указывает на наличие или отсутствие вспышек на изображении.
    • is_left_eye_opened - логическое значение, обозначает положение левого глаза (открыт или закрыт).
    • left_eye_openness_score - численное значение, обозначает степень открытости глаза в баллах от 0 до 1.
    • is_right_eye_opened - логическое значение, обозначает положение правого глаза (открыт или закрыт).
    • right_eye_openness_score - численное значение, обозначает степень открытости глаза в баллах от 0 до 1.
    • is_neutral_emotion - логическое значение, обозначает наличие или отсутствие нейтрального выражения лица.
    • neutral_emotion_score - численное значение, оценка степени нейтральных эмоций в баллах от 0 до 1.
    • is_not_noisy - логическое значение, обозначает наличие или отсутствие шумов на изображении.
    • noise_score - численное значение, оценка зашумленности изображения в баллах от 0 до 1.
    • is_sharp - логическое значение, обозначает резкость изображения.
    • sharpness_score - численное значение, обозначает оценку резкости в баллах от 0 до 1.
    • is_margins_acceptable - логическое значение, обозначает допустимые/недопустимые отступы.
    • margin_inner_deviation - численное значение внутреннего отклонения в пикселях.
    • margin_outer_deviation - численное значение внешнего отклонения в пикселях.
    • is_rotation_acceptable - логическое значение, обозначает допустимый/недопустимый поворот головы.
    • max_rotation_deviation - численное значение, максимальный градус отклонения для трех (yaw, pitch, roll) углов поворота головы.
    • not_masked - логическое значение, указывает на наличие или отсутствие маски на лице.
    • not_masked_score - численное значение, обозначает степень уверенности в отсутствии маски на лице от 0 до 1.
    • has_watermark - логическое значение, указывает на наличие или отсутствие водяного знака на изображении.
    • watermark_score - численное значение, обозначает степень уверенности в наличии водяного знака на изображении от 0 до 1.

    Параметры, оцениваемые модификацией "assessment" 2-й версии

    Нажмите, чтобы отобразить список оцениваемых параметров
    • total_score - численное значение, обозначает общую оценку качества изображения в баллах от 0 до 1.
    • is_background_uniform - логическое значение, указывает на однородность фона.
    • background_uniformity_score - численное значение, оценка однородности фона в баллах от 0 до 2.
    • is_dynamic_range_acceptable - логическое значение, показывает, что динамический диапазон интенсивности изображения в области лица превышает или не превышает значение 1,28.
    • dynamic_range_score - численное значение, оценка динамического диапазона интенсивности в баллах от 0 до 1.
    • is_eyes_distance_acceptable - логическое значение, обозначает допустимое/недопустимое расстояние между глазами.
    • eyes_distance - численное значение расстояния между глазами в пикселях.
    • is_evenly_illuminated - логическое значение, обозначает равномерность освещения на изображении.
    • illumination_score - численное значение, оценка равномерности освещения в баллах от 0 до 1.
    • no_flare - логическое значение, указывает на наличие или отсутствие вспышек на изображении.
    • is_left_eye_opened - логическое значение, обозначает положение левого глаза (открыт или закрыт).
    • left_eye_openness_score - численное значение, обозначает степень открытости глаза в баллах от 0 до 1.
    • is_right_eye_opened - логическое значение, обозначает положение правого глаза (открыт или закрыт).
    • right_eye_openness_score - численное значение, обозначает степень открытости глаза в баллах от 0 до 1.
    • is_neutral_emotion - логическое значение, обозначает наличие или отсутствие нейтрального выражения лица.
    • neutral_emotion_score - численное значение, оценка степени нейтральных эмоций в баллах от 0 до 1.
    • is_not_noisy - логическое значение, обозначает наличие или отсутствие шумов на изображении.
    • noise_score - численное значение, оценка зашумленности изображения в баллах от 0 до 1.
    • is_sharp - логическое значение, обозначает резкость изображения.
    • sharpness_score - численное значение, обозначает оценку резкости в баллах от 0 до 1.
    • is_margins_acceptable - логическое значение, обозначает допустимые/недопустимые отступы.
    • margin_inner_deviation - численное значение внутреннего отклонения в пикселях.
    • margin_outer_deviation - численное значение внешнего отклонения в пикселях.
    • is_rotation_acceptable - логическое значение, обозначает допустимый/недопустимый поворот головы.
    • max_rotation_deviation - численное значение, максимальный градус отклонения для трех (yaw, pitch, roll) углов поворота головы.
    • not_masked - логическое значение, указывает на наличие или отсутствие маски на лице.
    • not_masked_score - численное значение, обозначает степень уверенности в отсутствии маски на лице от 0 до 1.
    • has_watermark - логическое значение, указывает на наличие или отсутствие водяного знака на изображении.
    • watermark_score - численное значение, обозначает степень уверенности в наличии водяного знака на изображении от 0 до 1.
    • face_width_pixels - численное значение, обозначает ширину лица в пикселях
    • face_height_pixels - численное значение, обозначает высоту лица в пикселях
    • face_size_on_image - численное значение, обозначает размер лица на изображении от 0 до 1 (ICAO-параметр)
    • is_face_size_acceptable - логическое значение, обозначает допустимый размер лица на изображении (70-80% от площади изображения) (ICAO-параметр)
    • is_image_gray - логическое значение, обозначает является ли изображение серым (ICAO-параметр)
    • min_image_dpi - численное значение, обозначает количество пикселей на дюйм (ICAO-параметр)
    • is_high_resolution - логическое значение, обозначает является ли изображение изображением в высоком качестве (ICAO-параметр)
    • image_width_to_height_ratio - численное значение, обозначает отношение ширины к высоте изображения
    • red_eyes_right_score - численное значение, оценка степени красноты правого глаза (ICAO-параметр)
    • red_eyes_left_score - численное значение, оценка степени красноты левого глаза (ICAO-параметр)
    • is_red_eyes - логическое значение, обозначает наличие красноты глаз (ICAO-параметр)
    • glasses_score - численное значение, обозначает оценку наличия очков от 0 до 1 (ICAO-параметр)
    • mouth_openness_score - численное значение, оценка степени открытости рта от до 1 (ICAO-параметр)
    • is_mouth_openness - логическое значение, обозначает является ли рот открытым (ICAO-параметр)
    Ключевые точки

    Для получения лучших результатов при оценке качества изображения с помощью модификации "assessment" 2 версии следует использовать FACE_FITTER с модификацией tddfa или tddfa_faster

    Проверки

    Оценка качества изображения с помощью модификации "assessment" 2-й версии позволяет отключать некоторые проверки. Отключенные проверки не будут влиять на итоговый результат

    Отключаемые проверки 2-й версии модификации "assessment"

    Нажмите, чтобы отобразить список отключаемых параметров. Все параметры включены по умолчанию
    • is_enable_check_sharpness - логическое значение, проверка резкости
    • is_enable_check_illumination - логическое значение, проверка равномерности освещения
    • is_enable_check_flare - логическое значение, проверка вспышек
    • is_enable_check_noise - логическое значение, проверка шумов
    • is_enable_check_dynamic_range - логическое значение, проверка динамического диапазона интенсивности
    • is_enable_check_watermark - логическое значение, проверка водяного знака
    • is_enable_check_background - логическое значение, проверка однородности фона
    • is_enable_check_eye_openness - логическое значение, проверка открытости глаз
    • is_enable_check_mask - логическое значение, проверка наличия маски
    • is_enable_check_neutral_emotion - логическое значение, проверка эмоций
    • is_enable_check_eye_distance - логическое значение, проверка расстояния между глазами
    • is_enable_check_margin - логическое значение, проверка отступов
    • is_enable_check_rotation - логическое значение, проверка поворота головы
    • is_enable_check_resolution - логическое значение, проверка разрешения изображения
    • is_enable_check_gray_scale - логическое значение, проверка является ли изображение серым
    • is_enable_check_face_size - логическое значение, проверка размера лица
    • is_enable_check_red_eye - логическое значение, проверка красноты глаз
    • is_enable_check_glasses - логическое значение, проверка наличия очков
    • is_enable_check_mouth_openness - логическое значение, проверка открытости рта
  • "estimation" - в данном режиме оценивается качество изображения в целом, а результат ("total_score") представляет собой реальное число от 0 (худшее качество) до 1 (идеальное качество).

Спецификация процессинг-блока оценки качества

  1. Входной контейнер Context должен содержать бинарное изображение и массив объектов, полученных после работы процессинг-блоков детекции лица и фиттера:

    Нажмите, чтобы развернуть спецификацию входного контейнера Context
    {
    "image" : {
    "format": "NDARRAY",
    "blob": "data pointer",
    "dtype": "uint8_t",
    "shape": [height, width, channels]
    },
    "objects": [{
    "id": {"type": "long", "minimum": 0},
    "class": "face",
    "confidence": {"double", "minimum": 0, "maximum": 1},
    "bbox": [x1, y2, x2, y2]
    "keypoints": {
    "left_eye_brow_left": {"proj" : [x, y]},
    "left_eye_brow_up": {"proj" : [x, y]},
    "left_eye_brow_right": {"proj" : [x, y]},
    "right_eye_brow_left": {"proj" : [x, y]},
    "right_eye_brow_up": {"proj" : [x, y]},
    "right_eye_brow_right": {"proj" : [x, y]},
    "left_eye_left": {"proj" : [x, y]},
    "left_eye": {"proj" : [x, y]},
    "left_eye_right": {"proj" : [x, y]},
    "right_eye_left": {"proj" : [x, y]},
    "right_eye": {"proj" : [x, y]},
    "right_eye_right": {"proj" : [x, y]},
    "left_ear_bottom": {"proj" : [x, y]},
    "nose_left": {"proj" : [x, y]},
    "nose": {"proj" : [x, y]},
    "nose_right": {"proj" : [x, y]},
    "right_ear_bottom": {"proj" : [x, y]},
    "mouth_left": {"proj" : [x, y]},
    "mouth": {"proj" : [x, y]},
    "mouth_right": {"proj" : [x, y]},
    "chin": {"proj" : [x, y]},
    "points": ["proj": [x, y]]
    }
    }]
    }
  2. После вызова процессинг-блока оценки качества, каждому объекту из массива "objects" будут добавлены атрибуты соответсвующие этому блоку.

Спецификация выходного контейнера Context:

{
"quality": {
"total_score": {"type": "double", "minimum": 0, "maximum": 1},
"is_sharp": {"type": "boolean"},
"sharpness_score": {"type": "double", "minimum": 0, "maximum": 1},
"is_evenly_illuminated": {"type": "boolean"},
"illumination_score": {"type": "double", "minimum": 0, "maximum": 1},
"no_flare": {"type": "boolean"},
"is_left_eye_opened": {"type": "boolean"},
"left_eye_openness_score": {"type": "double", "minimum": 0, "maximum": 1},
"is_right_eye_opened": {"type": "boolean"},
"right_eye_openness_score": {"type": "double", "minimum": 0, "maximum": 1},
"is_rotation_acceptable": {"type": "boolean"},
"max_rotation_deviation": {"type": "long"},
"not_masked": {"type": "boolean"},
"not_masked_score": {"type": "double", "minimum": 0, "maximum": 1},
"is_neutral_emotion": {"type": "boolean"},
"neutral_emotion_score": {"type": "double", "minimum": 0, "maximum": 1},
"is_eyes_distance_acceptable": {"type": "boolean"},
"eyes_distance": {"type": "long", "minimum": 0}
"is_margins_acceptable": {"type": "boolean"},
"margin_outer_deviation": {"type": "long", "minimum": 0}
"margin_inner_deviation": {"type": "long", "minimum": 0}
"is_not_noisy": {"type": "boolean"},
"noise_score": {"type": "double", "minimum": 0, "maximum": 1},
"watermark_score": {"type": "long", "minimum": 0},
"has_watermark": {"type": "boolean"},
"dynamic_range_score": {"type": "double", "minimum": 0},
"is_dynamic_range_acceptable": {"type": "boolean"},
"is_background_uniform": {"type": "boolean"},
"background_uniformity_score": {"type": "double", "minimum": 0, "maximum": 1}
}
}

Пример работы процессинг-блока

  1. Создайте конфигурационный контейнер Context и укажите значения "unit_type", "modification", "version", интересующего вас блока Пример создания процессинг-блока вы можете найти на странице Работа с процессинг-блоком.

  2. Передайте контейнер-контекст полученный после работы процессинг-блоков детекции лица и фиттера.

  3. Вызовете процессинг-блок оценки.

  4. Получите результат работы процессинг-блока.

auto configCtx = service->createContext();
configCtx["unit_type"] = "QUALITY_ASSESSMENT_ESTIMATOR";
pbio::ProcessingBlock blockQuality = service->createProcessingBlock(configCtx);

//------------------
// создание процессинг-блока и контейнера Context с бинарным изображением
//------------------

faceDetector(ioData);
faceFitter(ioData);
blockQuality(ioData);

double total_score = ioData["objects"][0]["quality"]["total_score"].getDouble();

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

Если захвачено несколько лиц, каждое из них будет обработано независимо.