| Prima Homepage ImaLab Generating C++ Modules User Manual The Command Shell Running Imalab Plugin Process Pixels and Images Interactive selection Graphics: plots, profiles Image file I/O Image display Connectivity Analysis Image Processing(1) Gaussian operators Technical Documentation Creating New Modules Tutorial Tutorial Download | Image Processing CommandsCette page décrit:
Une expérimentation intéressante demande toujours l'enchainement de nombreux opérateurs de base et de fonctions d'affichage. Les "commandes de haut niveau" sont des fonctions qui réalisent des enchainements utiles. Elles sont le plus souvent écrites en Scheme, ce qui facilite les variations d´ecriture. La plupart des fonctions ci-après supposent que la fonction image-setupa été appelé au moins 1 fois auparavent. La fonction image-setup(image) calcule d'office plusieurs filtres laplaciens, dans le vecteur mflap, et initialise de nombreux paramètres globaux. Plus d'info sur image-setup. Exemple type: on veut afficher les images du laplacien de l'image courante, avec des filtrages `a sigma différents, dans la fenêtre à partir de la position 1: Les fonctions mu-affiche-lap et mu-affiche-grad servent à l'affichage multiple de laplaciens et de gradients. Affiche le laplacien resp. le gradient, aux niveaux de filtrage i1,... sous forme d'une image à niveaux de gris (vert en négatif, jaune en positif) dans les position pos,pos+1,... de la fenêtre. Utilise les variables: lap-fact, lap-exp, grad-fact, grad-exp pour normaliser l'affichage; Affiche le "signe du laplacien" du niveau n en position pos. Affichage ternaire: vert - négatif, jaune - positiv, noir - inférieur à eps. Affichage du niveau optimal du laplacien
affi-opt affiche dans des positions consécutives.
Les contoursOn définit un contour comme un passage par zéro du laplacien; les contours dépendent du filtrage utilisé pour le calcul du laplacien. Différentes fonctions permettent d'afficher tous les points de contours d'un niveau donné, ou de superposer les contours de plusieurs niveaux avec une image. D'autres fonctions suivent un contour fermé trouvé à partir d'un point de départ.
affiche les passages par zéro du niveau k à la position pos, ou pour plusieurs niveaux dans les positions pos,pos+1,... Si les paramètres color et n sont présent, les contours sont superposés avec l'image du laplacien de niveau n; ou, si n=true, avec l'image originale.
superpose les passages par zéro des niveaux k1,... à et les affiche à la position pos. Si le paramètre n est présent, le tout est superposé à l'image du laplacien du niveau n, ou à l'image originale, (comme pour la fonction précédente). Détection de lignes dans l'imageCes fonctions servent à expérimenter avec l'algorithme de recherche de contours fermés Ces contours forment toujours le bord d'un 8-connexe défini par un prédicat, comme par ex. "laplacien > eps". Les noms des fonctions contiennent un b pour border, et une lettre b-y-r pour le prédicat: green, yellow, ridge. b2 désigne le 2ième algorithme.
Exemple d'utilisation:
Dans cet exemple, lap-g-b(false,8,false,5) affiche un contour fermé défini par le "bord d'une zone verte" du laplacien. (Normalement, on affiche en vert les valeurs négatives). Les pixels affichés sont des pixels de frontière d'une région ayant une valeur du laplacien supérieur au seuil eps. Paramètres des fonctions. Les arguments sont:
Les filtres gaussiens récursifs (module modfilter)Ces fonctions ont été programmées selon l'article de ?? par Olivier Chomat et Vincent Colin ... puis corrigées ... les sources se trouvent actuellement dans /net/orion/users/alux/GlobalVision/src/Filter . Sont disponibles: le filtre Gaussien, les dérivées du filtre Gasussien jusqu'à l'ordre 3, le gradient (module et angle), le laplacien. Pour la plupart des filtres, il y a plusieurs procédures, avec les prototypes légèrement différents. Par exemple, on peut obtenir le module du gradient avec un seul appel de fonction, mais si on veut le module et l'angle, on peut aussi éviter de calculer les dérivées 2 fois. Il y a des fonctions qui allouent la place pour leur image-résultat,
et des fonctions qui remplissent une image existante, fournie
en argument.
La liste complète des fonctions est longue - en fait, c'est le fichier entier recursiveFilter.hh qui est donnée dans une page séparée qui est facile à comprendre. Nous expliquons ici quelques fonctions importantes. Les déclarations concernent le filtre Gaussien d'une image (premier argument) avec une valeur de sigma (deuxième argument,l'autre argument double n'est pas pratiqué). Les différents prototypes varient selon la position du résultat: il peut être résultat d'une fonction - dans ce cas l'image est créée par le filtre; et le résultat peut se trouver dans une image passée en paramètre. FGR_XY est la version initiale du programme, FGR_XY2 une deuxième programmation (nettement plus efficace mais non générique), FGR_XY3 une troisième version (voir la différence dans le code). Les noms des procédures indiquent directement le contenu: "d" signifie "dérivée": FGR_dX est la dérivée en X, etc., et elle existe en trois versions en deux progammations:
Les filtres disponibles sont: toutes les dérivées jusqu'à l'ordre 3, puis les fonctions suivantes qui enchainent des calculs de dérivées sous diverses formes:
La fonction MultiFilter permet de construire une série d'images filtrées, avec des valeurs de sigma différentes.
Cette fonction crée un vecteur d'images filtrées, avec des filtres de type "gaussien", pour différents sigmas. Les sigmas utilisés sont: Sinit* pow (Sfactor, indice) avec les indices: indice-init = init, indice-max = final step = freq. L'argument f code le type de filtre: Ces constantes sont définies dans imalab. image-setup effectue ce calcul, avec résultat dans voptsig.
calcule dans les étages e=0,1,... de vecdest des "byte-images binaires", c. à d. avec des valeurs 0/1, les pixels qui ont un max (par rapport à sigma) au niveau e.
Le module modFilter contient aussi quelques fonctions classiques utiles pour une expérimentation (mais nettement moins performantes que les filtres gaussiens décrits ci-dessus). La fonction ImgFilter permet de calculer des convolutions avec des masques quelconque, définis à la volée.
Pour ce qui est de la FFT, voir NR + Nicolas Nouvelle forme simplifiée, affiche l'image et les deux images partieR-partieI de la FFT: Le résultat est la liste (ima-r ima-i ima-complex). ima-complex sert ensuite d'argument à iFFT.
|