將灰度圖像變換到0-1的灰度範圍

灰度圖像轉化爲0-1範圍

一個圖像處理中的小筆記

由於在做卷積神經網絡時,需要對總的訓練集的數據400張圖像通過平移縮放旋轉鏡像對稱等方式將數據集擴大到70000張。但是在這些變換過程中,圖像的灰度範圍會變得不確定,所以在得到70000張圖像後,且保證在CNN網絡中輸入的圖像灰度範圍統一在0-1的範圍內,於是手動將圖像的灰度範圍轉化到0-1的範圍。

使用io.imread讀取圖像時, 得到的圖像的灰度範圍是0-255,但是會出現灰度達不到最大值的情況, 例如一個圖像的灰度範圍是[0-201],這時候,如果用img_as_float()轉化爲[0-1]的灰度範圍時, 得到的結果是[0-0.788],比例是按照1/255的比來變化的,這時候得到的圖像是不符合條件的[沒有來頭的以爲]。所以通過1/(max-min)來得到將的比,使圖像變化到0-1。


from skimage import io, transform, img_as_float 
#img_as_float將圖像轉化爲0-1的浮點數
import numpy as np
def int_to_float(f):
    image = io.imread(f)   #讀取圖像爲整型, [0-255]
    image = img_as_float(image)  #變爲浮點型[0-1]。
    image = (image - image.min()) * (1 / (image.max() - image.min()))  #比例縮放的歸一化
    image = transform.resize(image, (256, 256))  #圖像縮放大小
    return image

path = '/home/total_train_image_gray/*.jpg'  #讀取文件夾下所有的.jpg圖像
collections = io.ImageCollection(path, load_func=int_to_float) 
#ImageCollection 讀取整個文件夾的圖像,對其進行int_to_float函數變換。這個函數特別神奇,省時間。

path1 = '/home/train_image_gray_0_1/'
for i in range(len(collections)):
    io.imsave(path1+np.str(i)+'.jpg', collections[i])  #重新存儲
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章