Image Quality

Haut.AI provides an AI algorithm that analyzes the quality of selfie images for the consequent skin analysis. Only high-quality selfie images allow for reliable skin analysis.

Description

The algorithm analyzes the overall quality of an input image for the consequent skin analysis, which is done through an API. The algorithm returns the evaluation of quality properties and human-readable feedback with an explanation of why an image is of high or low quality.

You can select the result of this algorithm by selecting:

"algorithm_tech_name": "quality"

main_metric

The main metric is an overall score that indicates the quality of a selfie image.

"main_metric": {
    "value": 78,
    "widget_type": "bad_good_line",
    "name": "Image Quality Score",
    "tech_name": "image_quality_score",
    "widget_meta": null,
    "units": null
},
  • value the image quality score ranges from [0,100]. The higher the value, the better the image quality

  • "widget_type": "bad_good_line" this indicates that a higher value is better

  • name metric name (may change)

  • tech_name metric technical name (does not change)

  • widget_meta empty, ignore

  • units empty, ignore

sub_metrics

Sub-metrics are a set of features that define an image's quality. There are 2 types of sub-metrics:

  • scores: sub-metrics with "tech_name" property ending with "_score"

  • raw metrics: other sub-metrics

"sub_metrics": [
    < here is an example of a "score" sub-metric >
    {
        "value": 0, 
        "widget_type": 
        "bad_good_line", 
        "name": "rotation_score", 
        "tech_name": "rotation_score", 
        "widget_meta": null, 
        "units": null
    }, 
    ...
    < here is an example of "raw metrics" sub-metric >
    {
        "value": -41, 
        "widget_type": "numeric", 
        "name": "angles_yaw_angle_degree", 
        "tech_name": "angles_yaw_angle_degree", 
        "widget_meta": null, 
        "units": null
    },
    ...
]

Scores

Structure

  • value the image quality score ranges from [0,100]. The higher the value, the better the image quality

  • "widget_type": "bad_good_line" this indicates that a higher value is better

  • name metric name (may change)

  • tech_name metric technical name (does not change)

  • widget_meta empty, ignore

  • units empty, ignore

Meaning

tech_namedescriptioninterpretation

full_face_score

This parameter describes the degree of face presence on image, necessary for analysis

A higher value is better.

  • 0: at least one face skin area is not present fully on the image

  • 100: the face is fully present on the image

We suggest using 50 as a threshold to separate high- and low-quality images

rotation_score

This parameter describes the deviation of a head position from looking straight into the camera.

A higher value is better.

  • 0 value: the head is significantly rotated (more than45o45^{o}along any or both axes)

  • 100: the head has a perfect position with the face looking straight into the camera

We suggest using 50 as a threshold to separate high- and low-quality images.

occlusion_score

This parameter describes the degree of face skin areas occlusion by a non-skin objects

A higher value is better.

  • 0: one or several large skin areas (forehead, cheeks, chin) are not visible because of occlusion by an object or significantly high-contrast light

  • 100: all face skin areas relevant for analysis are visible on the image

We suggest using 50 as a threshold to separate high- and low-quality images

resolution_score

This parameter describes the sufficiency of resolution of a part of an image related to the detected face

A higher value is better.

  • 0: the image resolution and/or face size in the image is too low

  • 100: the face resolution is good enough for further image analysis

We suggest using 50 as a threshold to separate high- and low-quality images

focus_score

This parameter describes the degree of image distortions similar to motion/misfocus blur that usually prevent correct small-feature extraction.

A higher value is better.

  • 0: the image has severe distortions

  • 100: the image has no detectable distortions or the distortions are negligible for further analysis

We suggest using 50 as a threshold to separate bad and good quality images

lightness_score

This parameter describes the sufficiency of face illumination (exposition)

A higher value is better.

Interpretation:

  • 0: the face illumination is poor due to global over-exposure or under-exposure

  • 100: the face illumination is sufficient enough for further image analysis

We suggest using 50 as a threshold to separate high- and low-quality images

shadows_score

This parameter describes the degree of side illumination as a uniformness of face illumination

A higher value is better.

  • 0: the face illumination is poor due to significant shadows caused by side illumination

  • 100: the face illumination is uniform enough for further image analysis

We suggest using 50 as a threshold to separate high- and low-quality images

colortone_score

This parameter describes the degree of color tone of the face illumination.

A higher value is better.

  • 0: the face illumination is poor due to significantly incorrect white balance (color tone of light)

  • 100: the face illumination is illuminated with neutral white light

We suggest using 50 as a threshold to separate high- and low-quality images

Raw Metrics

Structure

  • value float or int value

  • "widget_type": different types, describing the exact logic of value reading. The most common are:

    • "numeric" - just a number

    • "bad_good_line" - indicates that a higher value is better

  • name metric name (may change)

  • tech_name metric technical name (does not change)

  • widget_meta empty, ignore

  • units empty, ignore

problems

problems is a list of all detected issues with image quality, returned as a short codenames. The list can contain from 0 (no problems) to N (several problems):

"problems": ["wrong_angle", "low_resolution", "misfocus_or_distortion"]

Meaning

Every codename reflect exact case, described in a table below:

codenamedescription

no_detection

No face detected

out_of_frame

Face is not fully visible

far_from_camera

Face is too far from camera

wrong_angle

Head is rotated at the wrong angle

skin_occlusion

Skin is partially not visible

low_resolution

Low face resolution

misfocus_or_distortion

Image is distorted or blurred

compression_artifacts

Image compression artifacts are visible

noise

Noisy image

too_dark

Image is too dark

too_bright

Image is too bright

strong_shadows

Front facing light required

colored_illumination

Incorrect white balance

⚠️ [DEPRECATED] feedback

This field will be removed in the nearest update. Use problems instead

feedback is a message with information about the image quality in form of 2 objects:

  • overlay - short summary

  • tooltip - more verbose list of issues, split to critical / warning / good condition

"feedback": {
        "overlay": "Low quality image",
        "tooltip": {
            "positive": [
                "Good face resolution"
            ],
            "warn": [],
            "negative": [
                "Unacceptable face illumination"
            ]
        }
  • overlay is an informal message about the overall image quality. It returns an informal rating of the image quality:

    • "Good quality image" - image quality is suitable for skin analysis

    • "Low-quality image" - image quality is low for skin analysis

    • "No face detected" - face is not detected. Image can't be processed by skin assessment algorithms

    • "Not full face"- image is not fully presented in the image. Image is not suitable for skin analysis

    • "Face is rotated" - face is extremely rotated in the image. Image is not suitable for skin analysis

  • tooltip is an informal message about image quality and warnings

    • positive possible feedback values are:

      • Good face resolution

      • Good face illumination

    • warn possible feedback values are:

      • Poor face resolution

      • Poor face illumination

    • negative possible feedback values are:

      • Face is not detected

      • Face is not fully presented

      • Face is rotated

      • Misfocus or distortion

      • Noisy image

      • Unacceptable face resolution

      • Unacceptable face illumination

Example (JSON)

Last updated