2016-10-24 5 views
0

Контекст: Я использую SVM для анализа изображения и поиска интересующих пикселей. После фильтрации пикселей с низким процентом (полный код ниже) результирующая двоичная маска сохраняется для отображения позже. В то же время, я использую ndimage.label пройти через бинарную маску и получить список найденных исправлений, а также отслеживать, как много патчей были найдены (число признаков)ndimage.label: Отображение исправлений определенного размера

Проблемы/Вопрос: Изображений I я работаю с супер высоким разрешением, что означает, что есть «шумные» группы пикселей (меньше 100), которые подсчитываются ndimage.label. Это означает, что изображение, которое может иметь только 10 патчей, составляет 1000+ из-за всех этих групп шумов и отдельных пикселей. Учитывая исходную двоичную маску и помеченный массив, существует ли способ модифицировать двоичную маску таким образом, чтобы были включены только патчи определенного размера?

 #SVM analyzes image 
     scoreMap = self.svmMachine.predict(inData) 
     scoreMap = scoreMap.reshape(origDims) 

     #An array with a score for each pixel is produced 
     self.allPixelScoreMaps[self.imageKeys[i]]['PxlScores'] = scoreMap  
     #print(scoreMap) 
     topPrct = np.percentile(scoreMap, 95) 

     #A binary mask is then created from the pixels of high interest 
     binaryMap = (scoreMap > topPrct).astype(np.int) 

     #The mask is then stored to be displayed later 
     self.allPixelScoreMaps[self.imageKeys[i]]['BinScores'] = binaryMap 


     labeled_array, num_features = ndimage.label(binaryMap, structure = self.labelCal) 


     self.allPixelScoreMaps[self.imageKeys[i]]['LabelMap'] = labeled_array 
     self.allPixelScoreMaps[self.imageKeys[i]]['NumFeatures'] = num_features 

ответ