def area_depth_heuristic(height, width, pixel_height, pixel_width, distance, focal_length, mush_factor):
    """
    Returns whether the area_depth_heuristic is satisfied. Specifically, if a detected region is of small area,
    then it is expected to be far away and viceversa. This function compares the area with the measured stereo
    depth.

    Inputs:
    -height, width: real height and width of what is being observed
    -pixel_height, pixel_width: height and width of observed object in image
    -distance: measured stereo distance to the object in meters
    -focal_length: camera focal length in pixels
    -mush_factor: how much leeway to give in comparing. Usually between 0 and 1

    Outputs:
    -Boolean: True if satisfied, False if else.
    """
    # expected area occupied by an object with passed size at passed distance
    expected_area = (height * width * focal_length**2) / distance**2
    # observed area
    observed_area = pixel_width * pixel_height
    # heuristic
    if observed_area < (1 - mush_factor) * expected_area or observed_area > (1.2 + mush_factor) * expected_area:
        return False
    else:
        return True