作為計算機視覺開發者,使用TensorFlow進行簡單的圖像處理是基本技能,而TensorFlow在tf.image包中支援對圖像的常見的操作包括:
亮度調整
對比度調整
飽和度調整
圖像采樣插值放縮
色彩空間轉換
Gamma校正
标準化
圖像的讀入與顯示我們通過OpenCV來實作,這裡需要注意一點,OpenCV中圖像三個通道是BGR,如果你是通過tensorflow讀取的話三個通過順序是RGB。圖像讀取的代碼如下:
1.opencv方式
2.tensorflow方式
3.使用OpenCV顯示圖像
原圖顯示如下:
支援三種方式,分别是臨界點插值、雙線性插值與雙立方插值,不過我發現在使用雙立方插值的時候,tensorflow處理之後圖像總是會出現一些噪點,這個算不算它的BUG
- tf.image.resize_nearest_neighbor # 臨界點插值
- tf.image.resize_bilinear # 雙線性插值
- tf.image.resize_bicubic # 雙立方插值算法
示範代碼如下:
顯示圖像如下:
圖像亮度是圖像基本屬性之一,tensorflow支援兩種方式API對圖像亮度進行調整
- tf.image.adjust_brightness
- tf.image.random_brightness
使用上述API的時候需要對圖像進行次元添加為四維的tensor資料,完整的圖像亮度調整的代碼如下:
圖像對比度是圖像基本屬性之一,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圖像即可“`。無需再次進行次元增加操作。最終調整之後的示範圖像如下:
6.圖像标準化
這個在tensorflow中對圖像資料訓練之前,經常會進行此步操作,它跟歸一化是有差別的。歸一化的圖像直方圖不會改變,标準化會改變圖像直方圖分布,标準化API如下:
- tf.image.per_image_standardization
圖像标準化實作代碼如下:
示範結果如下:
7.圖像色彩空間轉換
tensorflow支援常見圖像色彩空間轉換,包括RGB、HSV、灰階色彩空間,相關API如下:
- tf.image.rgb_ to_hsv
- tf.image.rgb_ to_grayscale
- tf.image.hsv_ to_rgb
将圖像從RGB色彩空間轉換到灰階空間的代碼示範如下:
結果顯示如下:
tensorflow中還提供一些其他的圖像操作相關API,比如裁剪、填充、随機調整亮度、對比度等,還有非最大信号壓制等操作,感興趣的可以自己進一步學習。
<b>歡迎關注微信公衆号</b>
<b>【OpenCV學堂】</b>