def get_mask_file(origin_images, mask_file, height, width, channels=3):
"""blur image through a mask file"""
img_bytes = tf.read_file(mask_file)
maskimage = tf.image.decode_jpeg(img_bytes)
maskimage = tf.to_float(maskimage)
m_mean = tf.reduce_mean(maskimage, axis=(1,2))
index = tf.where(m_mean < 1.5)
side_index = tf.where(m_mean >= 1.5)
top_index = side_index + tf.to_int64(1)
down_index = side_index - tf.to_int64(1)
select = tf.zeros_like(m_mean, dtype=tf.float32)
side_select = tf.ones_like(m_mean, dtype=tf.float32)
values = tf.squeeze(tf.ones_like(index, dtype=tf.float32))
side_values = tf.squeeze(tf.ones_like(side_index, dtype=tf.float32))
top_values = tf.scalar_mul(tf.random_uniform([], minval=0, maxval=1), side_values)
down_values = tf.scalar_mul(tf.random_uniform([], minval=0, maxval=1), side_values)
delta = tf.SparseTensor(index, values, [height])
top_delta = tf.SparseTensor(top_index, top_values, [height])
down_delta = tf.SparseTensor(down_index, down_values, [height])
black_select = select + tf.sparse_tensor_to_dense(delta)
top_select = side_select + tf.sparse_tensor_to_dense(top_delta)
down_select = side_select + tf.sparse_tensor_to_dense(down_delta)
top_select = tf.expand_dims(tf.divide(tf.ones_like(top_select), top_select), -1)
top_select = tf.matmul(top_select, tf.ones([1, width]))
top_select = tf.expand_dims(top_select, -1)
down_select = tf.expand_dims(tf.divide(tf.ones_like(down_select), down_select), -1)
down_select = tf.matmul(down_select, tf.ones([1, width]))
down_select = tf.expand_dims(down_select, -1)
black_select = tf.expand_dims(black_select, -1)
black_select = tf.matmul(black_select, tf.ones([1, width]))
black_select = tf.expand_dims(black_select, 0)
black_select = tf.expand_dims(black_select, -1)
top_select = tf.expand_dims(top_select, 0)
down_select = tf.expand_dims(down_select, 0)
source = tf.mul(origin_images, top_select)
source = tf.mul(source, down_select)
source = tf.mul(source, black_select)
return source
评论列表
文章目录