def update(self, centers):
# sums = [scipy.zeros(5) for i in range(len(centers))]
# nums = [0 for i in range(len(centers))]
# width, height = self.img.shape[:2]
print "E step"
new_centers=[]
nan_record=[]
for i in xrange(len(centers)):
current_region=self.xylab[self.assignedindex == i]
if current_region.size>0: #non-empty region
new_centers.append(scipy.mean(current_region, 0))
else: # empty region
nan_record.append(i)
# after we get full nan_record list, update assignment index (elimnate those indexes in reverse order)
for nan_value in nan_record[::-1]:
self.assignedindex[self.assignedindex>nan_value]=self.assignedindex[self.assignedindex>nan_value]-1
for new_center_index in range(len(new_centers)):
# print new_center_index
new_centers[new_center_index][2:]=self.labimg[math.floor(new_centers[new_center_index][0])][math.floor(new_centers[new_center_index][1])]
return new_centers,nan_record
评论列表
文章目录