def bbox_intersects(bbox1, bbox2):
    """
    Checks whether two bounding boxes overlap or touch.
    Input:
        bbox1: 4-tuple of (xmin, xmax, ymin, ymax) for the first region
        bbox2: 4-tuple of (xmin, xmax, ymin, ymax) for the second region
    Output:
        boolean True/False
    """
    # Check for intersection
    xmin1, xmax1, ymin1, ymax1 = bbox1
    xmin2, xmax2, ymin2, ymax2 = bbox2
    xdist = abs( (xmin1 + xmax1) / 2.0 - (xmin2 + xmax2) / 2.0 )
    ydist = abs( (ymin1 + ymax1) / 2.0 - (ymin2 + ymax2) / 2.0 )
    xwidth = (xmax1 - xmin1 + xmax2 - xmin2) / 2.0
    ywidth = (ymax1 - ymin1 + ymax2 - ymin2) / 2.0
    return (xdist <= xwidth) and (ydist <= ywidth)