图像预处理 图像预处理有很多过程。这里只介绍函数。方便使用。
图像读取原始 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
|