diff options
Diffstat (limited to 'tensorflow/python/ops/image_ops_impl.py')
-rw-r--r-- | tensorflow/python/ops/image_ops_impl.py | 23 |
1 files changed, 21 insertions, 2 deletions
diff --git a/tensorflow/python/ops/image_ops_impl.py b/tensorflow/python/ops/image_ops_impl.py index 7c23321ca5..2946dbe81e 100644 --- a/tensorflow/python/ops/image_ops_impl.py +++ b/tensorflow/python/ops/image_ops_impl.py @@ -1121,7 +1121,7 @@ def rgb_to_grayscale(images, name=None): rank_1 = array_ops.expand_dims(array_ops.rank(images) - 1, 0) gray_float = math_ops.reduce_sum(flt_image * rgb_weights, rank_1, - keepdims=True) + keep_dims=True) gray_float.set_shape(images.get_shape()[:-1].concatenate([1])) return convert_image_dtype(gray_float, orig_dtype, name=name) @@ -1212,7 +1212,26 @@ def adjust_hue(image, delta, name=None): orig_dtype = image.dtype flt_image = convert_image_dtype(image, dtypes.float32) - rgb_altered = gen_image_ops.adjust_hue(flt_image, delta) + # TODO(zhengxq): we will switch to the fused version after we add a GPU + # kernel for that. + fused = os.environ.get('TF_ADJUST_HUE_FUSED', '') + fused = fused.lower() in ('true', 't', '1') + + if not fused: + hsv = gen_image_ops.rgb_to_hsv(flt_image) + + hue = array_ops.slice(hsv, [0, 0, 0], [-1, -1, 1]) + saturation = array_ops.slice(hsv, [0, 0, 1], [-1, -1, 1]) + value = array_ops.slice(hsv, [0, 0, 2], [-1, -1, 1]) + + # Note that we add 2*pi to guarantee that the resulting hue is a positive + # floating point number since delta is [-0.5, 0.5]. + hue = math_ops.mod(hue + (delta + 1.), 1.) + + hsv_altered = array_ops.concat([hue, saturation, value], 2) + rgb_altered = gen_image_ops.hsv_to_rgb(hsv_altered) + else: + rgb_altered = gen_image_ops.adjust_hue(flt_image, delta) return convert_image_dtype(rgb_altered, orig_dtype) |