def kMean(clusterNum): g = Graph(r"E:\ds2018") vocaDir = r"temp/vocabulary/" if not os.path.exists(vocaDir): os.makedirs(vocaDir) sift = SIFT() centers = [] for i in range(g.getTypeNum()): print("[kmeans]:" + str(i)) imgPaths = g.getTrainSet(i) features = np.float32([]).reshape((0, 128)) for imgPath, type in imgPaths: imgMat = g.getGreyGraph(imgPath) if imgMat is None: print("[kmean]:" + imgPath + " is None") continue feature = sift.getFeature(imgMat) features = np.append(features, feature, axis=0) kmeans = KMeans(n_clusters=clusterNum).fit(features) filename = os.path.join(vocaDir, str(i) + ".npy") np.save(filename, kmeans.cluster_centers_) centers.append(kmeans.cluster_centers_) return centers
if mat is None: print(imgPath+"is None") continue feature=sift.getFeature(mat) featVec=calcFeatVec(feature,centers[type],clusterNum) trainData=np.append(trainData,featVec,axis=0) trainTypes=np.append(trainTypes,np.int32([type])) print(trainTypes.shape) trainTypes=trainTypes.astype(np.float32) ''' print("calc kmeans") lbp = LBP([8], [1]) hog = HOG() imgList = g.getTrainSet() trainTypes, trainDataSift, centers = sift.calcVectorForSvm( imgList, clusterNum, 1) print("calc kmeans done") print("calc lbp") trainDataLbp = lbp.getFeatVecForSvm(imgList, 0) print("calc lbp done") print("calc hog") trainDataHog = hog.getFeatVecForSvm(imgList, 1) print("calc hog done") trainData = np.append(trainDataSift, trainDataLbp, axis=1) trainData = np.append(trainData, trainDataHog, axis=1) #trainData=trainDataLbp
self.distance = distance self.angle = angle ''' return :list of features ''' def getFeature(self, imgMat): re = feature.greycomatrix(imgMat, self.distance, self.angle) features = [] for i in range(len(self.distance)): for j in range(len(self.angle)): features.append(re[:, :, i, j]) return features g = Graph(r"E:\ds2018") trainList = g.getTrainSet() glcm = GLCM([1], [0, np.pi / 4, np.pi / 2, np.pi * 3 / 4]) features = [] print(trainList) for img in trainList: #print(img[0]) mat = g.getGreyGraph(img[0]) if mat is None: print("None") continue features.extend(glcm.getFeature(mat)) print(features)