1. 程式人生 > >將灰度影象變換到0-1的灰度範圍

將灰度影象變換到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]) #重新儲存