TensorFlow进行简单的图像处理

TensorFlow进行简单的图像处理简单概述

作为计算机视觉开发者,使用TensorFlow进行简单的图像处理是基本技能,而TensorFlow在tf.image包中支持对图像的常见的操作包括:

亮度调整

对比度调整

饱和度调整

图像采样插值放缩

色彩空间转换

Gamma校正

标准化

图像的读入与显示我们通过OpenCV来实现,这里需要注意一点,OpenCV中图像三个通道是BGR,如果你是通过tensorflow读取的话三个通过顺序是RGB。图像读取的代码如下:

1.opencv方式

2.tensorflow方式

3.使用OpenCV显示图像

原图显示如下:

1.放缩图像

支持三种方式,分别是临界点插值、双线性插值与双立方插值,不过我发现在使用双立方插值的时候,tensorflow处理之后图像总是会出现一些噪点,这个算不算它的BUG

演示代码如下:

显示图像如下:

2.图像亮度调整

图像亮度是图像基本属性之一,tensorflow支持两种方式API对图像亮度进行调整

使用上述API的时候需要对图像进行维度添加为四维的tensor数据,完整的图像亮度调整的代码如下:

显示图像如下:

3.图像对比度调整

图像对比度是图像基本属性之一,tensorflow支持两种方式API对图像对比度进行调整

前面一种全局调整,后面一种方式是随机调整,对比度调整的代码演示如下:

显示图像如下:

4.图像gamma校正

伽玛校正就是对图像的伽玛曲线进行编辑,以对图像进行非线性色调编辑的方法,检出图像信号中的深色部分和浅色部分,并使两者比例增大,从而提高图像的对比度。相关API为:

常见gamma的取值范围为0.05~5之间,tensorflow实现gamma校正的代码演示如下:

显示图像如下:

5.图像饱和度调整

图像饱和度是图像HSV色彩空间最常见的指标之一,通过调整图像饱和度可以得到更加自然光泽的图像,tensorflow中饱和度调整的API如下:

常见的饱和度调整范围在0~5之间取值即可,演示代码如下:

这里要特别说明一下,饱和度调整不支持4D tensor对象,所以读入的RGB图像即可。无需再次进行维度增加操作。最终调整之后的演示图像如下:

6.图像标准化

这个在tensorflow中对图像数据训练之前,经常会进行此步操作,它跟归一化是有区别的。归一化的图像直方图不会改变,标准化会改变图像直方图分布,标准化API如下:

图像标准化实现代码如下:

演示结果如下:

7.图像色彩空间转换 tensorflow支持常见图像色彩空间转换,包括RGB、HSV、灰度色彩空间,相关API如下:

将图像从RGB色彩空间转换到灰度空间的代码演示如下:

结果显示如下:

小结

tensorflow中还提供一些其他的图像操作相关API,比如裁剪、填充、随机调整亮度、对比度等,还有非最大信号压制等操作,感兴趣的可以自己进一步学习。

远飞者当换其新羽

关注【OpenCV学堂】

进群暗号:OpenCV

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180121G064IA00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券