Вопрос

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

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

есть какие-нибудь ссылки?какие-нибудь намеки?какой-нибудь API?спасибо :)

Это было полезно?

Решение

Типичный цепочка инструментов python было бы:

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

Редактировать:

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

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()

Другие советы

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top