reconnaissance d'image python [fermé]

ce que je veux faire, c'est une reconnaissance d'image pour une application simple:

  1. Image (500 x 500) PXS (1 fond couleur )
  2. l'image aura seulement 1 figure géométrique (triangle ou carré ou smaleyface :) ) de (50x50) pxs.
  3. python fera la reconnaissance de la figure et affichera ce qu'est la figure géométrique.

des liens? tous les conseils? une API? thxs:)

35
demandé sur panchicore 2009-10-22 01:13:19

4 réponses

typique python outil de la chaîne d' serait:

Comme loin différencier les formes , je voudrais obtenir sa silhouette en regardant la forme de l'arrière-plan. Je détecterais alors le nombre de coins en utilisant un algorithme de détection de coin (par exemple Harris). Un triangle a 3 Coins, un carré 4, et un smiley aucun. Voici un python implémentation de la détection Harris corner avec Scipy .

Edit:

As vous de les mentionner dans les commentaires, le blog n'avait pas la fonction qui produit un noyau gaussien nécessaire dans l'algorithme. Voici un exemple d'une telle fonction du Scipy Cookbook (grande ressource btw):

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()
31
répondu Ivan 2009-10-22 06:29:43

OpenCV dispose d'outils d'analyse blob, il vous donnera des paramètres sur la forme que vous pouvez alimenter pour votre algorithme de reconnaissance de modèle préféré :) Eg. le rectangle a un rapport de 1,0 pour la surface / (hauteur * largeur), lorsque le rapport du cercle est d'environ 0,78.

10
répondu Harriv 2009-11-01 10:14:10

vous pointez la figure géométrique est 50x50 px. Si taille et orientation des figures géométriques sont fixe , vous avez un classique template matching problem , adapté à la méthode de corrélation . Vous pouvez appliquer le modèle correspondant sur l'image originale ou sur une sortie de détection de bordure.

Sinon, si la taille (échelle) et / ou l'orientation sont arbitraires, Les descripteurs de Fourier peuvent être appliqués. Ces descripteurs sont des invariants de rotation et d'échelle.

toutes ces méthodes peuvent être codées en utilisant OpenCV, NumPy ou SciPy.

3
répondu TH. 2009-11-06 17:37:36

si vous connaissez l'espace statistique de vos données, vous pouvez utiliser L'analyse en composantes principales. Avec PCA, tous les objets doivent être placés (au centre de l'écran). PCA ne fera pas de détection, mais il séparera les objets en couches uniques dans lesquelles vous pouvez identifier comme étant un triangle, etc. Note: il ne s'agit pas d'un invariant d'échelle ou de rotation.

[je ne me souviens pas ce que cette technique est appelée, mais qui est similaire à la façon dont le bureau de poste ne handwritting rec] Si vous pouvez ne manipulez que les courbes non courbées, vous pouvez faire la détection de bord, puis faire l'échantillonnage aux intersections pour obtenir une approximation de similitude.

2
répondu monksy 2009-10-22 00:39:07