Подтвердить что ты не робот

Распознавание образа python

то, что я хочу сделать, - это распознавание образов для простого приложения:

  • заданное изображение (500 x 500) pxs (1 цвет фона)
  • изображение будет иметь только 1 геометрическую фигуру (треугольник или квадрат или smaleyface:)) (50x50) пикселей.
  • python будет распознавать фигуру и отображать, что такое геометрическая фигура.

любые ссылки? любые подсказки? любой API? спасибоs:)

4b9b3361

Ответ 1

Типичная цепочка инструментов python:

  • прочитайте свои изображения с помощью PIL
  • преобразуйте их в Numpy массивы
  • использовать Scipy фильтры изображений (linear и rank, морфологический) для реализации вашего решения

дифференцируя фигуры, я бы получил свой силуэт, посмотрев на форму фона. Затем я определял количество углов, используя алгоритм угол обнаружения (например, Harris). Треугольник имеет 3 угла, квадрат 4, а смайлик - нет. Здесь python реализация определения угла Харриса с помощью Scipy.

Edit:

Как вы отметили в комментариях, сообщение в блоге не представило функцию, которая создает гауссовское ядро, необходимое в алгоритме. Вот пример такой функции из Scipy Cookbook (большой ресурс кстати):

def gauss_kern(size, sizey=None):
    """ Returns a normalized 2D gauss kernel array for convolutions """
        size = int(size)
        if not sizey:
            sizey = size
        else:
            sizey = int(sizey)
        x, y = mgrid[-size:size+1, -sizey:sizey+1]
        g = exp(-(x**2/float(size)+y**2/float(sizey)))
        return g / g.sum()

Ответ 2

OpenCV имеет инструменты анализа blob, он даст вам показатели о форме, которую вы можете подавать для вашего любимого алгоритма распознавания образов: ) Например. прямоугольник имеет отношение 1,0 к области/(высота * ширина), когда отношение круга составляет около 0,78.

Ответ 3

Вы указываете геометрическую фигуру 50x50 px. Если размер и ориентация геометрических фигур фиксированный, у вас есть классическая проблема соответствия шаблонов, подходящая для метод корреляции. Вы можете применить соответствие шаблонов на исходном изображении или на выходе границы.

В противном случае, если размер (масштаб) и/или ориентация произвольны, можно применить Дескрипторы Фурье. Эти дескрипторы являются инвариантами вращения и масштаба.

Все эти методы могут быть закодированы с использованием OpenCV, NumPy или SciPy.

Ответ 4

Если вы знаете пространство состояний ваших данных, вы можете использовать основной компонентный анализ. С помощью PCA все объекты должны быть помещены (в центре экрана). PCA не будет обнаруживать, но он будет разделять объекты на уникальные слои, в которых вы можете идентифицировать себя как треугольник и т.д. Также обратите внимание: это не масштаб или инвариант вращения.

[Я не могу вспомнить, как называется этот метод, но он похож на то, как почтовый отдел выполняет ручную запись] Если вы можете обрабатывать только не изогнутые криволинейные поверхности, вы можете выполнить обнаружение кромок, а затем выполнить выборку на пересечениях, чтобы получить приближение сходства.