in 04_detect_segment/utils_box.py [0:0]
def one_d_intersect(px1, px2, qx1, qx2):
# this assumes px2>=px1 and qx2>=qx1
# force broadcasting
px1 = tf.add(px1, qx1-qx1)
px2 = tf.add(px2, qx2-qx2)
zeros = tf.subtract(px1, px1)
interA = tf.greater(px1, qx1)
interB = tf.greater(px2, qx1)
interC = tf.greater(px2, qx2)
interD = tf.greater(qx2, px1)
inter = tf.logical_and(interB, interD)
inter_x1 = tf.where(tf.logical_and(tf.logical_not(interA), interB), qx1, px1)
inter_x2 = tf.where(tf.logical_and(interC, interD), qx2, px2)
inter_w = inter_x2 - inter_x1
inter_w = tf.where(inter, inter_w, zeros) # for consistency
return inter, inter_x1, inter_w