天天看點

使用TensorFlow進行簡單的圖像處理

作為計算機視覺開發者,使用TensorFlow進行簡單的圖像處理是基本技能,而TensorFlow在tf.image包中支援對圖像的常見的操作包括:

亮度調整

對比度調整

飽和度調整

圖像采樣插值放縮

色彩空間轉換

Gamma校正

标準化

圖像的讀入與顯示我們通過OpenCV來實作,這裡需要注意一點,OpenCV中圖像三個通道是BGR,如果你是通過tensorflow讀取的話三個通過順序是RGB。圖像讀取的代碼如下:

1.opencv方式

2.tensorflow方式

3.使用OpenCV顯示圖像

原圖顯示如下:

使用TensorFlow進行簡單的圖像處理

支援三種方式,分别是臨界點插值、雙線性插值與雙立方插值,不過我發現在使用雙立方插值的時候,tensorflow處理之後圖像總是會出現一些噪點,這個算不算它的BUG

- tf.image.resize_nearest_neighbor # 臨界點插值

- tf.image.resize_bilinear # 雙線性插值

- tf.image.resize_bicubic # 雙立方插值算法

示範代碼如下:

顯示圖像如下:

使用TensorFlow進行簡單的圖像處理

圖像亮度是圖像基本屬性之一,tensorflow支援兩種方式API對圖像亮度進行調整

- tf.image.adjust_brightness

- tf.image.random_brightness

使用上述API的時候需要對圖像進行次元添加為四維的tensor資料,完整的圖像亮度調整的代碼如下:

使用TensorFlow進行簡單的圖像處理

圖像對比度是圖像基本屬性之一,tensorflow支援兩種方式API對圖像對比度進行調整

- tf.image.adjust_contrast

- tf.image.random_contrast

前面一種全局調整,後面一種方式是随機調整,對比度調整的代碼示範如下:

伽瑪校正就是對圖像的伽瑪曲線進行編輯,以對圖像進行非線性色調編輯的方法,檢出圖像信号中的深色部分和淺色部分,并使兩者比例增大,進而提高圖像的對比度。相關API為:

- tf.image.adjust_gamma

常見gamma的取值範圍為0.05~5之間,tensorflow實作gamma校正的代碼示範如下:

圖像飽和度是圖像HSV色彩空間最常見的名額之一,通過調整圖像飽和度可以得到更加自然光澤的圖像,tensorflow中飽和度調整的API如下:

tf.image.adjust_saturation

常見的飽和度調整範圍在0~5之間取值即可,示範代碼如下:

這裡要特别說明一下,飽和度調整不支援4D tensor對象,是以讀入的RGB圖像即可“`。無需再次進行次元增加操作。最終調整之後的示範圖像如下:

使用TensorFlow進行簡單的圖像處理

6.圖像标準化

這個在tensorflow中對圖像資料訓練之前,經常會進行此步操作,它跟歸一化是有差別的。歸一化的圖像直方圖不會改變,标準化會改變圖像直方圖分布,标準化API如下:

- tf.image.per_image_standardization

圖像标準化實作代碼如下:

示範結果如下:

使用TensorFlow進行簡單的圖像處理

7.圖像色彩空間轉換

tensorflow支援常見圖像色彩空間轉換,包括RGB、HSV、灰階色彩空間,相關API如下:

- tf.image.rgb_ to_hsv

- tf.image.rgb_ to_grayscale

- tf.image.hsv_ to_rgb

将圖像從RGB色彩空間轉換到灰階空間的代碼示範如下:

結果顯示如下:

使用TensorFlow進行簡單的圖像處理

tensorflow中還提供一些其他的圖像操作相關API,比如裁剪、填充、随機調整亮度、對比度等,還有非最大信号壓制等操作,感興趣的可以自己進一步學習。

<b>歡迎關注微信公衆号</b>

<b>【OpenCV學堂】</b>

繼續閱讀