Контекст: Я использую 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