簡體   English   中英

如何計算數據集中圖像的平均值

[英]how to calculate mean of images in dataset

我有數據集包含 2060 圖像我想計算平均值然后(每個圖像 - 平均值)作為歸一化

num_classes = 10
lable = [0,1,2,3,4,5,6,7,8,9]
X_data = []
Y_data = []
size = 100
#mean_sum = np.zeros((100,100))
#std_sum = np.zeros((100,100))
#print(mean_sum.shape)
for file in data:
   folder = os.listdir(dir +'\\' + file)
   for f in folder:
       x=cv2.imread(dir +'\\' + file+'\\'+f) #read each image in each folder
       z=cv2.resize(x,(size,size))#resize image to 100*100 
       gray = cv2.cvtColor(z,cv2.COLOR_BGR2GRAY) #convert to gray
       gray = gray.astype(float)/255 #divide by 255
       y=to_categorical(lable[int(file)],num_classes)
       #mean = cv2.mean(z)
       #print(mean.shape)
       #mean_sum += np.squeeze(mean)    
       X_data.append(np.array(gray)) #append x in X_data list
       Y_data.append(y) #append y in Y_data list

這是我的代碼,我試圖計算平均值但是當我使用 cv2.mean 時,平均值的形狀 (3,1) 和我的 mean_sum 數組形狀 (100,100) 和圖像形狀是 (100,100) 所以我得到錯誤不同的形狀我怎么能解決這個問題

您是否正在嘗試計算 2060 幅圖像中每個像素的平均值? 還是您要計算每張圖像中所有像素的平均值?

您當前的代碼似乎在做后者,即計算單個圖像中所有像素值的平均值。

但是你提出問題的方式,我相信你想要前者?

如果是這種情況,從當前代碼完成它的最簡單方法之一是使用mean_sum僅添加實際像素值,即z ,然后除以圖像數 (2056):

for file in data:
   folder = os.listdir(dir +'\\' + file)
   for f in folder:
       x=cv2.imread(dir +'\\' + file+'\\'+f) #read each image in each folder
       z=cv2.resize(x,(size,size))#resize image to 100*100 
       gray = cv2.cvtColor(z,cv2.COLOR_BGR2GRAY) #convert to gray
       gray = gray.astype(float)/255 #divide by 255
       y=to_categorical(lable[int(file)],num_classes)
       #mean = cv2.mean(z)
       #print(mean.shape)
       mean_sum += z
       X_data.append(np.array(gray)) #append x in X_data list
       Y_data.append(y) #append y in Y_data list
    mean_sum /= len(folder)

class 葉數據(數據集):

def __init__(self, 
             data, 
             directory, 
             transform = None):
    self.data      = data
    self.directory = directory
    self.transform = transform
    
def __len__(self):
    return len(self.data)

def __getitem__(self, idx):
    
    # import
    path  = os.path.join(self.directory, self.data.iloc[idx]['image_id'])
    image = cv2.imread(path, cv2.COLOR_BGR2RGB)
        
    # augmentations
    if self.transform is not None:
        image = self.transform(image = image)['image']
    
    return image

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM