コンテキスト:私はSVMを使って画像を分析し、関心のあるピクセルを見つけます。低関心のピクセル(以下の完全コード)をフィルタリングした後、得られたバイナリマスクは、後に表示されるように格納される。それと同時に、私はバイナリマスクを通過し、見つかったパッチのリストを作るだけでなく、どのように多くのパッチを追跡するためにndimage.label
を使用します(機能の数)ndimage.label:特定のサイズのパッチを表示
問題/質問を見つけました:画像をIと一緒に働いているのは超高解像度なので、ピクセル数が「10000未満」の「ノイズ」グループがあり、その数は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