Subscribe RSS

Posts Tagged ‘image’

Plugin ImageJ minimal en Clojure: inverser une image

janvier 15th, 2010 by fmn | 2 Comments | Filed in Enseignement, Recherche

Je présente ici comment écrire un plugin pour ImageJ avec Clojure. L’exemple est tiré de Digital Image Processing: An Algorithmic Introduction Using Java: l’inversion d’une image (page 32).

Il s’agit d’inverser tous les pixels d’une image codée en niveaux de gris, sur 8 bits, transformant ainsi une image en son négatif. Puisqu’un pixel est codé sur 8 bits, la valeur maximale possible est 255. Il faut donc transformer tout les pixels v de l’image en 255-v.

Je commence par présenter le code Java, décrivant ainsi les éléments nécessaires à un plugin ImageJ. Puis plusieurs versions Clojure sont données. La dernière version est aussi rapide que le code Java, et pourtant plus réutilisable.

(Lire la suite…)

Tags: , , , , , , , ,

Fonction avec méta-données (Clojure). Représentation d’images #3

octobre 20th, 2009 by fmn | No Comments | Filed in Enseignement, Recherche

Résumé des épisodes précédents : une image est une fonction bornée qu’il est possible de représenter à l’aide d’une classe Java. L’écriture de cette classe passe par un grand nombre de lignes de code, même en Clojure. Explorons aujourd’hui la possibilité d’une façon plus canonique de faire la même chose.

Une fonction bornée est une fonction comportant une information supplémentaire : son domaine de définition. Clojure fournit un façon pratique d’ajouter des données : la méta-donnée (metadata). Une méta-donnée est une map de données qui peut être étendue à l’aide de la fonction with-meta. Tentons d’ajouter un domaine de définition à une fonction :

user> (defn indom? [dom pt]
        (let [[start end] dom
              [x y] pt]
          (and (>= x (first start))
               (<= x (first end))
               (>= y (second start))
               (<= y (second end)))))
#'user/indom?
user> (defn f [x y] (+ x y))
#'user/f
user> (def dom [[0 0] [4 4]])
#'user/dom
user> (def bf (with-meta f {:domain dom}))
java.lang.UnsupportedOperationException (NO_SOURCE_FILE:10)

(Lire la suite…)

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: , , , , ,