以下是替代解決方案,使用mahotas和milk。
- 首先創建兩個目錄:
positives/
和negatives/
您將在其中手動挑選幾個示例。
- 我會假設數據的其餘部分是在積極的
unlabeled/
目錄中的所有圖像
- 計算功能和底片
- 學習分類
- 使用分類上未標記的圖像
在下面的代碼我用jug給你在多個處理器上運行它的可能性,但如果你刪除所有,其中提到TaskGenerator
行代碼也可以210
from glob import glob
import mahotas
import mahotas.features
import milk
from jug import TaskGenerator
@TaskGenerator
def features_for(imname):
img = mahotas.imread(imname)
return mahotas.features.haralick(img).mean(0)
@TaskGenerator
def learn_model(features, labels):
learner = milk.defaultclassifier()
return learner.train(features, labels)
@TaskGenerator
def classify(model, features):
return model.apply(features)
positives = glob('positives/*.jpg')
negatives = glob('negatives/*.jpg')
unlabeled = glob('unlabeled/*.jpg')
features = map(features_for, negatives + positives)
labels = [0] * len(negatives) + [1] * len(positives)
model = learn_model(features, labels)
labeled = [classify(model, features_for(u)) for u in unlabeled]
它使用紋理特徵,這可能是不夠好,但你可以在mahotas.features
其他功能發揮,如果你想(或嘗試mahotas.surf
,而是變得更加複雜)。一般來說,我發現很難用你正在尋找的那種硬閾值進行分類,除非掃描受到很好的控制。
+1好的建議。我認爲,即使是一個簡單的圖像熵計算也可能是一個足夠好的辨別頁面「空虛」的辨別器。 http://brainacle.com/calculating-image-entropy-with-python-how-and-why.html – Paul 2011-03-25 06:49:57
偉大的一點,保羅。我每天都用直方圖工作,但從來沒有考慮過計算熵。 – 2011-03-26 02:46:51