將灰度影象變換到0-1的灰度範圍
阿新 • • 發佈:2019-01-04
灰度影象轉化為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的比來變化的,這時候得到的影象是不符合條件的[沒有來頭的以為]
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]) #重新儲存