def calculate_char_perimeter_bw(self): if self._perimeter_path == None: self._perimeter_path = ms.walk_around_ccw(self._data_bw) perimeter_path = self._perimeter_path perimeter = 0 for i in range(len(perimeter_path)): perimeter = perimeter +\ ((perimeter_path[i][0]-perimeter_path[i-1][0])**2.0+\ (perimeter_path[i][1]-perimeter_path[i-1][1])**2.0)**0.5 self._feature_perimeter = perimeter return
def calculate_char_curvature_bw(self): if self._perimeter_path == None: self._perimeter_path = ms.walk_around_ccw(self._data_bw) perimeter_path = self._perimeter_path curvature = 0 for i in range(len(self._perimeter_path)): if ((abs(self._perimeter_path[i-1][0] - self._perimeter_path[i][0]) == 1)\ and\ (abs(self._perimeter_path[i-1][1] - self._perimeter_path[i][1]) == 1)): curvature = curvature + 1 self._feature_curvature = curvature return
def calculate_char_horizontal_turns(self): if self._perimeter_path == None: self._perimeter_path = ms.walk_around_ccw(self._data_bw) perimeter_path = self._perimeter_path turns = 0 direction = None for i in range(len(perimeter_path)): if (perimeter_path[i-1][0] - perimeter_path[i][0] == -1): new_direction = 'left' elif (perimeter_path[i-1][0] - perimeter_path[i][0] == 1): new_direction = 'right' else: new_direction = direction if (new_direction != direction and i != 0): turns = turns + 1 direction = new_direction self._feature_horizontal_turns = turns return
fives = 0 i = 0 while fives < 2: if train_character_list[i]._classification == 5: if fives == 0: five_0 = train_character_list[i] fives = fives + 1 elif fives == 1: five_1 = train_character_list[i] if ms.walk_around_ccw(five_1._data_bw).shape[0] == ms.walk_around_ccw(five_0._data_bw).shape[0]: fives = fives + 1 i = i + 1 five_0._perimeter_path = ms.walk_around_ccw(five_0._data_bw) five_0._xseries = ms.convert_path_to_xseries(five_0._perimeter_path) five_1._perimeter_path = ms.walk_around_ccw(five_1._data_bw) five_1._xseries = ms.convert_path_to_xseries(five_1._perimeter_path)
character_test_file_name, 'train', (test_start_range,test_end_range)) ########################### ## BEGIN DTW ALGORITHM ########################### correct_list = np.zeros((10,1)) total_list = np.zeros((10,1)) for i in range(train_character_list.shape[0]): train_character = train_character_list[i] train_character_list[i]._perimeter_path = ms.walk_around_ccw(train_character._data_bw) train_character._xseries = ms.convert_path_to_xseries(train_character._perimeter_path) train_character._yseries = ms.convert_path_to_yseries(train_character._perimeter_path) for i in range(test_character_list.shape[0]): test_character = test_character_list[i] test_character._perimeter_path = ms.walk_around_ccw(test_character._data_bw) test_character._xseries = ms.convert_path_to_xseries(test_character._perimeter_path) test_character._yseries = ms.convert_path_to_yseries(test_character._perimeter_path) chf.dtw_classify_character(test_character, train_character_list)