Нужна помощь в реализации алгоритма скользящего окна для распознавания букв - PullRequest
0 голосов
/ 21 октября 2019

Я пытаюсь реализовать алгоритм скользящего окна, чтобы распознавать буквы на изображении. Для начала я сделал программу для обнаружения одной буквы. Вот программа:

def sliding_window(image):
    box = [200, 200]
    image = process_image(image)
    for i in range(0,image.shape[0]-box[0], 10):
        for j in range(0,image.shape[1] - box[1], 10):
            win_image = image[i:i+box[0], j:j+box[1]]
            print(i, j)
            win_image = cv2.resize(win_image, (28,28))
            win_image = np.expand_dims(win_image, axis=2)
            win_image = win_image/255
            x = np.array([win_image])
            y = model.predict(x)
            m = np.max(y[0])
            if m >= 0.9:
                plt.imshow(win_image[:,:,0])
                plt.show()
                return m, np.argmax(y[0])

process_image просто преобразует изображение в двоичный формат. model - это модель Keras, которая обучается с использованием буквенных данных. Проблема в том, что модель обнаруживает неправильную букву, потому что когда окно частично принимает букву, они выглядят иначе, например. частичный B выглядит как R. Итак, он распознает неправильные буквы, как здесь: enter image description here Здесь модель распознает букву как R, даже если это B. Как я могу предотвратить это? Другая проблема заключается в том, как обнаружить несколько букв в изображении? Кроме того, есть ли лучший способ обнаружения букв вместо использования скользящих окон?

...