def random_orientation()

in 04_detect_segment/utils_box.py [0:0]


def random_orientation(image_tile, rois, tile_size):
    # This function will output boxes x1, y1, x2, y2 in the standard orientation where x1 <= x2 and y1 <= y2
    rnd = tf.random_uniform([], 0, 8, tf.int32)
    img = image_tile

    def f0(): return tf.image.rot90(img, k=0), rot90(rois, tile_size, k=0)
    def f1(): return tf.image.rot90(img, k=1), rot90(rois, tile_size, k=1)
    def f2(): return tf.image.rot90(img, k=2), rot90(rois, tile_size, k=2)
    def f3(): return tf.image.rot90(img, k=3), rot90(rois, tile_size, k=3)
    def f4(): return tf.image.rot90(tf.image.flip_left_right(img), k=0), rot90(flip_left_right(rois, tile_size), tile_size, k=0)
    def f5(): return tf.image.rot90(tf.image.flip_left_right(img), k=1), rot90(flip_left_right(rois, tile_size), tile_size, k=1)
    def f6(): return tf.image.rot90(tf.image.flip_left_right(img), k=2), rot90(flip_left_right(rois, tile_size), tile_size, k=2)
    def f7(): return tf.image.rot90(tf.image.flip_left_right(img), k=3), rot90(flip_left_right(rois, tile_size), tile_size, k=3)

    image_tile, rois = tf.case({tf.equal(rnd, 0): f0,
                                tf.equal(rnd, 1): f1,
                                tf.equal(rnd, 2): f2,
                                tf.equal(rnd, 3): f3,
                                tf.equal(rnd, 4): f4,
                                tf.equal(rnd, 5): f5,
                                tf.equal(rnd, 6): f6,
                                tf.equal(rnd, 7): f7})

    return image_tile, standardize(rois)