图像处理算法总结

图像预处理

图像预处理有很多过程。这里只介绍函数。方便使用。

图像读取原始

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)

 



猜你喜欢

转载自blog.csdn.net/dss666666/article/details/81051716