def __get_input_for_model(self, image):
"""
Renders the new gamestate based on the changed board condition using HOG gradients over sliding window
:return: None
"""
state = None
if self.state_type == 'hog':
slides = sliding_window(image, SLIDING_STRIDE, WINDOW_SIZE)
hog_gradients = []
for slide in slides:
window_image = slide[2]
gradient = np.array(hog(window_image,
orientations=self.num_gradients,
pixels_per_cell=WINDOW_SIZE,
cells_per_block=(1, 1), visualise=False))
assert gradient.size == self.num_gradients, "Gradient size not equal to desired size"
gradient = gradient_discretizer(gradient, self.bins)
hog_gradients.extend(gradient)
hog_gradients = np.array(hog_gradients)
hog_gradients = hog_gradients.reshape((self.state_height, self.state_width, self.num_gradients))
assert hog_gradients.shape == (self.input_height, self.input_width, self.input_channels), \
"The state dimension is trying to be altered"
state = hog_gradients
elif self.state_type == 'image':
resized_discrete_im = np.digitize(
imresize(image, (self.state_height, self.state_width)),
self.bins)
state = np.array([resized_discrete_im]).transpose().swapaxes(0, 1)
else:
ValueError('The state type is not valid, enter "hog" or "image"')
return state
评论列表
文章目录