图像预处理
图像预处理有很多过程。这里只介绍函数。方便使用。
图像读取原始
tf.gfile.FastGFile().read()
图像格式的编码解码 :图像不直接记录图像上的不同位置,不同颜色的亮度。而是记录压缩编码之后的结果。所以要还原成三维矩阵,需要解码。
tf.image.decode_jpeg()
tf.image.encode_jpeg()
转换函数 tf.image.convert_image_dtype
图像大小调整
tf.image.resize_images(image,[size],method)
method 0:双线性插值 1:最近邻居法 2: 双三次插值法 3:面积差值法
tf.image.resize_image_with_crop_pad 自动裁剪或者填充
图像翻转
tf.image.flip_up_down()
tf.image.filp_left_right()
tf.image.transpose_image()
图像色彩调整
亮度调整tf.image.adjust_brightness(image,brightness)
随机亮度调整tf.image.random_brightness(image,max_delta)
同理调整,tf.image.adjust_contrast,tf.image.adjust_hue,tf.image.
saturation.
图像标准化 tf.image.per_image_whitening(image)
标注框
tf.image.draw_bounding_boxes(batch,boxes) 这个函数要求图像矩阵的数字为实数,而且输入是一个batch的数据,即多张图像组成的四维矩阵,所以将编码后的图像矩阵加一维。
tf.expand_dims() 这个加的维度大家自己要看api去理解
tf.image.sample_distorted_bounding_box(size,boxes)随机截取图像信息
随机翻转图像,随机调整颜色,随机截图图像中的有信息含量的部分,这些事提高模型健壮性的一种方式。这样可以使是训练得到的模型不受被识别物体大小的影响。
TensorFlow 读取图片数据代码:
reader = tf.WholeFileReader()
key, value = reader.read(tf.train.string_input_producer(['cat.jpg']))
image0 = tf.image.decode_jpeg(value)
代码:
resized_image = tf.image.resize_images(image0, [256, 256], \
method=tf.image.ResizeMethod.AREA)
其中 method 有四种选择:
ResizeMethod.BILINEAR :双线性插值
ResizeMethod.NEAREST_NEIGHBOR : 最近邻插值
ResizeMethod.BICUBIC : 双三次插值
ResizeMethod.AREA :面积插值
代码裁剪:
代码:
cropped_image = tf.image.crop_to_bounding_box(image0, 20, 20,256, 256)
代码:
flipped_image = tf.image.flip_left_right(image0)
除此之外还可以上下翻转:
flipped_image = tf.image.flip_up_down(image0)
代码:
rotated_image = tf.image.rot90(image0, k=1)
其中 k 值表示旋转 90 度的次数,读者可以尝试对原图旋转 180 度、270 度。
代码:
grayed_image = tf.image.rgb_to_grayscale(image0)
【转载】原文地址:https://blog.csdn.net/dss666666/article/details/81051716
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) | 黑马程序员IT技术论坛 X3.2 |