Subscribe RSS

Posts Tagged ‘bloc-note’

Un nouveau journal libre d’accès : IPSJ Transactions on Computer Vision and Applications

janvier 4th, 2010 by fmn | No Comments | Filed in Recherche

L’année commence bien puisqu’un nouveau journal vient de naitre : IPSJ Transactions on Computer Vision and Applications.

Comme son nom l’indique, les domaines couverts sont ceux du traitement et de l’analyse d’images. Assez classique somme toute. Sauf que la particularité de ce journal est d’être en ligne et libre d’accès. Ainsi toutes les articles sont disponibles, ils peuvent être lus, téléchargés et imprimés gratuitement. Si l’intérêt pour le lecteur est évident, les éditeurs espèrent ainsi obtenir une bonne visibilité pour leur journal. On leur souhaite de réussir (c’est pour cela que j’en fait la publicité).

Dans le premier numéro, j’ai pour ma part relevé et placé dans ma liste de lecture les articles suivants :

  • Content-based Image Retrieval by Indexing Random Subwindows with Randomized Trees (Raphaël Marée, Pierre Geurts et Louis Wehenkel)
  • A Survey of Manifold Learning for Images (Robert Pless et Richard Souvenir)
  • Partial Similarity of Shapes Using a Statistical Significance Measure (Alexander M. Bronstein, Michael M. Bronstein, Yair Carmon et Ron Kimmel)
  • et Using Context to Recognize People in Consumer Images (Andrew C. Gallagher et Tsuhan Chen)

Pour un premier numéro, j’y trouve donc mon compte.

FMN.

Tags: , ,

Une perception grossière est suffisante pour attribuer une catégorie générale

octobre 15th, 2009 by fmn | 6 Comments | Filed in Recherche

    Je m’étais rendu compte que seule la perception grossière et erronée place tout dans l’objet, quand tout est dans l’esprit – Marcel Proust.

    Lorsque nous percevons les objets qui nous entourent, nous attribuons des catégories. Les psychologues cognitivistes étudient depuis longtemps les processus activés lors de cette catégorisation. Ainsi trois niveaux sont distingués :

    • Le niveau de base (basic level) est le niveau le plus abstrait où les objets considérés partagent encore un grand nombre de caractéristiques. Les catégories de ce niveau sont les catégories les plus facile à apprendre pour les enfants. Pour nommer les objets, les adultes utilisent plus spontanément des mots des ces catégories.
    • Les catégories fines spécifiques (subordinate level) correspondent à des catégories plus spécialisées.
    • Les catégories générales (superordinate level) contiennent des abstractions plus fortes.

    Par exemple la catégorie “chien” pourrait se situer au niveau de base. Dans ce cas, “animal” serait une catégorie générale et “sharpeï” serait une catégorie fine spécifique. Les études montrent que le niveau des catégories peut varier avec les individus, selon leur expertise du domaine.

    (Lire la suite…)

    Tags: , , , , ,

    Image numérique et tableau : est-ce identique ?

    juillet 30th, 2009 by fmn | 2 Comments | Filed in Enseignement, Recherche

    Ouvrons un livre de traitement d’image (par exemple Morphological Image Analysis). Il est logique que l’ouvrage débute sur les définitions des notions manipulées par la suite. Une image est souvent définie  une correspondance entre un sous-ensemble D de \mathbb{Z}^2 vers un nombre (0 ou 1 dans le cas d’une image binaire par exemple). Le sous-ensemble D est le domaine de définition de l’image, définie ainsi sur une trame rectangulaire. Les coordonnées de D sont donc des entiers (négatifs ou positifs).

    Passons à la pratique et consultons maintenant la documentation d’une librairie de traitement d’images (par exemple ImageJ) : une image n’est rien d’autre qu’un tableau à deux dimensions  dont les coordonnées appartiennent  au domaine [(0, 0), (w-1), (h-1)], où w et h sont les dimensions de l’image.

    La différence essentielle entre ces deux cas porte sur le domaine de définition. Mathématiquement, les coordonnées des pixels peuvent être négatives; pratiquement (i.e. dans les librairies), elles ne le peuvent pas. Examinons,  les conséquences de cette limitation en calculant un produit de convolution sous Octave (ou Matlab). Pour plus de clarté, le produit est calculé sur des signaux 1D :

    octave> a = [1 2 3 4 5]
    octave> b = [1 0 -1]
    octave> conv(a, b)
      ans = 1 2 2 2 24 -5
    octave> conv(b, a)
      ans = 1 2 2 2 24 -5

    La commutativité du produit de convolution est respectée puisque conv(a, b) = conv(b, a), c’est une bonne chose. Mais il apparait quelques difficultés. Quel est exactement le signal a défini par a=[1 0 –1] ? C’est  un (assez grossier) filtre dérivateur qui peut permettre de détecter les contours dans une image. Mais quelle est l’origine de ce signal ? Est-elle sur le 0 ? Sur le –1 ? Rien n’est certain car Octave/Matlab considère que les signaux, les images sont des tableaux. Il s’agit pourtant d’une information capitale. Si l’origine est sur le 0, alors il n’y a pas de décalage entre un contour et la détection qui en sera réalisée. Par exemple, si un contour est présent à la coordonnées x, la réponse du filtre sera maximale en x. Cependant si l’origine du filtre est sur le coefficient –1 (ou 1), la réponse sera maximale en x+1 (ou x-1), un décalage sera donc observé.

    La convention d’utilisation des librairies veut en général que l’origine du filtre soit au centre de la réponse impulsionnelle. Mais cela reste une convention. Cette information n’est stockée nulle part, sinon dans la documentation des fonctions qui manipulent les signaux ou les images.  Dans la pratique, il est pourtant nécessaire de manipuler des signaux avec des origines décalées. C’est pourquoi les concepteurs de Matlab précisent ainsi pour la fonction conv (produit de convolution) :

    C = conv(…,’shape’) returns a subsection of the two-dimensional convolution, as specified by the shape parameter:

    full
    Returns the full two-dimensional convolution (default).

    same
    Returns the central part of the convolution of the same size as A.

    valid
    Returns only those parts of the convolution that are computed without the zero-padded edges. Using this option, C has size [ma-mb+1,na-nb+1] when length(c) is max(length(a)-max(0,length(b)-1),0)

    Il existe ainsi des options de la fonction permettant de trouver les bons résultats. Mais l’utilisation de ces options n’est pas claire. Comme la manipulation des décalages est portée par la fonction conv et non par la structure de donnée choisie, des erreurs sont fréquentes. Je me rappelle lorsque je produisais beaucoup de code (pendant ma thèse) avoir rencontré quelques bugs assez difficiles à résoudre à cause de cette imprécision. Il est quasiment obligatoire de d’annoter son code avec des commentaires. Et si l’on oublie cette information : bug !

    Il serait pourtant tellement plus clair d’avoir une structure de données qui permette d’avoir des indices négatifs pour les signaux et les images. Pourquoi les librairies ne les proposent-elles pas ? Il y aurait évidemment un surcout de temps de calcul (une translation pour chaque accès à un pixel de l’image), mais le nombre d’erreurs évitées serait appréciable. C’est pourquoi des langages de programmation de haut niveau sont généralement employés : pour ne pas avoir a gérer les détails.

    FMN.

    Tags: , , , , ,