APPLICATIONSCREATION GRAPHIQUE ★ TRAITEMENT DE L'IMAGE: 2ème Partie (A) ★

Traitement de l'Image Part2a|CPC Revue)Applications Creation Graphique

Grâce à la première partie de nos articles sur le traitement de l'image, vous avez acquis le strict minimun de notions théoriques. Le programme d'application et les routines utilitaires qui font l'objet de la deuxième partie vous permettront, enfin, le traitement concret de l'image. Il s'agit en l'occurrence de l'image binaire.
 

Fig. 1

Fig. 2

GENERALITES

Le logiciel de traitement de l'Image est un ensemble de routines indépendantes ou partiellement interdépendantes. Ces routines sont écrites en langage machine. C'est la moindre des choses quand H s'agit de manipuler en temps réel un nombre considérable de points. Chacune de ces routines accomplit un travail bien particulier, qu'il s'agisse du traitement à proprement parler, ou d'une tâche de préparation. L'ensemble des routines est géré par un programme d'application. Ce programme n'est pas en langage machine, mais tout simplement en BASIC et ceci pour plusieurs raisons. D'abord à cause de la simplicité de son élaboration et de son accessibilité à tous. Chacun pourra facilement modifier, compléter ou adpter le logiciel à son goût et à ses besoins. Ensuite, parce que sa vitesse d'exécution suffit largement pour le travail en mode conversationnel, indispensable chaque fois que la suite du travail dépend d'une décision de l'utilisateur.

D'autre part, un bon nombre d'opérations peuvent être effectuées par les routines de la ROM (choix de l'écran actif, par exemple). Le pilotage de ces routines est très facile à partir d'un programme écrit en BASIC. Il existe une autre raison, liée au type de l'image que nous allons traiter. Un simple dessin, une image numérisée, ou une image captée par scanner, donc une photo, peuvent être traités par nos routines. Il est évident que le dernier cas cité présente le plus d'intérêt. Le scanner DART Electronics présente un double avantage : il est bon marché et d'une utilisation très simple. De surcroît, il est livré avec un logiciel d'application en BASIC et un ensemble de routines de traitement : scanning, sauvegarde, lecture, impression, zoom, effacement, copie, symétrie *y', mouvement dans les deux sens à l'intérieur d'une fenêtre, insertion de texte, le tout non protégé et accessible à tous. Ceci est à saluer vivement. A l'examen du programme d'application on constate que la sauvegarde de l'image utilise la méthode la plus simple, quoique gourmande en octets disquettes : SAVE 'lmage.BIN*. b. Départ. Longueur,
le Départ pouvant être &C000, pour le premier écran et &4000 pour le deuxième.
Il était donc tentant et très simple de concevoir un programme d'application du même genre, les deux logiciels pouvant traiter les mêmes images. Bien entendu, les routines sont complémentaires, tes traitements indépendants et II n'est pas nécessaire de posséder un scanner pour utiliser notre logiciel ! De plus, il suffit de modifier le principe de sauvegarde et de lecture de l'image pour adapter ce logiciel à n'importe quel utilitaire de saisie ou de création d'Images.
 

Fig. 3

Fig. 4
PROGRAMME
D'APPLICATION "TRIMART"

Comme d'habitude, la première chose à faire est la saisie du listing (Listing n° 1). Le programme étant de longueur raisonnable, ce travail ne doit pas vous poser de gros problèmes. Signalons toutefois que les espaces (blancs) doivent être strictement respectés dans les zones de texte des menus. Le programme est écrit pour le CPC 6128, mais II peut fonctionner sur les autres CPC. Seules sont à modifier les variables du système et en ce qui concerne les routines, toute valeur signalée dans les commentaires du listing source. La simulation de ta fonction COPYCHRS a été expliquée dans la première partie de nos articles.

La variable système à modifier est celle contenant le poids fort de l'adresse du début écran actif : remplacer &B7C6 par B1CB.

Un autre problème est posé depuis l'apparition des claviers AZERTY. Les touches ont conservé les numéros des codes en fonction de leurs emplacements sur le clavier, mais ne représentent plus les mêmes caractères I Ainsi toute conversation avec le programme utilisant la fonction INKEY peut être faussée. Le programme est écrit pour un clavier QWERTY. Si la réponse à une question doit être le caractère A. il faut enfoncer la touche dont le code est 69, donc sur le clavier AZERTY ia touche comportant la lettre QI Pour adapter le programme au clavier AZERTY. Il faut soit modifier les lettres des menus sans changer les codes INKEY, soit modifier les codes INKEY, sans toucher aux menus, ce qui est mieux.

Lors de la première utilisation le programme crée les caractères spéciaux utilisant les matrices du seuil, puis charge les routines. Dans le cas de l'interruption de travail sans reset ces opérations ne sont plus nécessaires et le menu principal est affiché immédiatement après RUN. Compte tenu de la création des caractères par SYMBOL AFTER et SYMBOL, la mémoire au départ doit être conforme à la configuration de l'allumage de l'ordinateur. Faites toujours, par prudence, un reset par CONTROL-SHIFT-ESC avant de charger le programme. En attendant d'avoir toutes les routines, bloquez les GOTO et les GOSUB des INKEY des routines manquantes en transformant les lignes correspondantes en commentaires. (Ajoutez un O au début de ces lignes). N'oubliez pas d'assembler la routine binaire et de la sauvegarder sur la même disquette.

Pou utiliser le programme suivez tout simplement les indications des menus. Afin de ne pas trop alourdir le listing le menu AIDE a été limité à un strict minimum. Les blocages dus à l'utilisation du disque (disque plein, fichier introuvable, etc) ou aux mauvaises commandes sont pratiquement Inexistants, grâce à l'utilisation des traitements d'erreurs. Si néanmoins, à un moment donné, vous ne savez que faire et que la machine vous semble bloquée, essayez la touche de retour au menu principal, M. Dans la plupart des cas vous pourrez reprendre le travail sans dégâts. En plus de ces précautions prises en programmation. Il en est d'autres que vous pouvez prendre vous-même :

- utilisez une disquette ne comportant que les images à traiter;
- procédez aux appels fréquents de la routine ZAPP (ERA,"*.BAK"). Les autres détails d'utilisation vous seront donnés en même temps que les explications des routines. Avant de lancer le programme d'application par RUN'TRIMART', ENTREE, recensons les fonctions ne nécessitant pas la présence des routines en code machine. La fonction A : aide, est bien entendu, disponible, ainsi que les deux options F, fin de travail : retour au mode direct ou reset. Le retour au mode direct conserve en mémoire les routines binaires chargées et tous les caractères spéciaux définis par le programme. Le programme lui-même est conservé aussi et vous pouvez le relancer ; vous accéderez directement au menu principal. La fin de travail définitive provoque un reset complet équivaientà l'effet de CONTROL-SHIFT-ESC.
Les autres fonctions disponibles sont L - LOAD ou lecture de l'image. S -SAVE ou sauvegarde de l'image et ZAPP BAK ou effacement des fichiers BAK.

La fonction d'activatlon des écrans 1 ou 2 est aussi disponible. Malheureusement, la disponibilité de toutes ces fonctions demande un préalable : la sauvegarde de la zone de l'écran occupée par le menu dans une zone de mémoire réservée à cet effet. Pour cette opération nous avons besoin d'une petite routine en langage machine. Tant qu'à faire nous ajouterons aussi les premières routines de traitement de l'image : transfert des écrans, inversion vidéo, affichage de ta gamme des gris et la régionalisation.

ROUTINES BINAIRES
- PREMIERE PARTIE

Le listing source "trim" est largement commenté. Toutes les routines sont clairement repérées. Les valeurs à modifier pour CPC464 sont Indiquées dans les commentaires.   Nous parlerons donc de leur emploi. La première routine ne nécessite pas votre intervention. Elle est utilisée par le programme d'application pour afficher la gamme des gris. La deuxième routine appelée par le programme d'application sans votre intervention est la routine de conservation de la zone des menus. Elle marche dans les deux sens : sauvegarde ou affichage, en fonction de l'état de l'écran.

La routine de l'inversion des couleurs de l'encre et du papier est appelée sur votre demande expresse à partir du menu principal. Cette demande est commandée par les flèches de déplacement du curseur :

- à gauche - vidéo normale .
- à droite - vidéo inverse.
Le programme ne connaît que la notion nominative de l'état de l'écran, mais ne sait pas si cela correspond à la notion intrinsèque du normal ou de l'Inverse. C'est donc l'état de l'écran au moment du chargement de l'image qui fixe la relation entre la notion logique et ia notion physique, ce qui permet de modifier l'état d'origine. Pour mieux comprendre observez les figures n° 1 et n°2. La première chargée au moment où l'état de l'écran est normal sera considérée comme normale et la deuxième, après l'Inversion sera considérée comme inverse, mais si l'état de l'écran au moment du chargement était inversé, c'est la première image qui serait considérée comme inverse et la seconde comme normale. L'état de l'écran est signalé par l'affichage normal ou inversé dans le menu principal. La routine est quasi instantanée. La routine de transfert appelée à partir du menu principal par la touche "T" comporte trois options :
- copie du contenu de l'écran 1 dans l'écran 2 ;
- copie du con tenu de l'écran 2 dans l'écran 1 ;
- échange des contenus des deux écrans.
Ces trois routines purement utilitaires. sont Indispensables pour le bon fonctionnement des routines de traitement des images.

Nous abordons maintenant la première routine de traitement de l'image à proprement parler. C'est la routine de régionalisation appelée à partir du menu principal par la touche "R". La routine agit en deux temps. En premier Heu le sous-menu propose deux options :

-  traitement de la totalité de l'écran : touche T ;
-  traitement limité à une fenêtre : touche "C".
Si vous choisissez la première option le programme appelle directement la première partie de la routine qui effectue une segmentation en régions homogènes de ta taille d'un caractère de texte. Pou cela la routine compte les points de couleur de l'encre à l'emplacement d'un caractère et affiche à cet endroit un caractère-niveau de gris en fonction du total obtenu. Si, par contre, vous choisissez de continuer (touche "C"), la totalité de l'image apparaît avec une petite fenêtre au centre. Cette fenêtre peut être déplacée lentement ou rapidement et sa taille peut être modifiée. Avant de choisir l'option, assimilez bien l'utilisation des touches indiquées par le sous-menu. De toute façon seules sont à utiliser les flèches du curseur. SHIFT et CONTROL. Toutes les combinaisons de simultanéité sont possibles et vous serez rapidement familiarisé. Après la définition de la fenêtre il suffit d'appuyer sur la touche COPY, qui en règle générale signifie la confirmation. La régionalisation sera maintenant effectuée et limitée à la fenêtre choisie. La figure n° 3 montre le cas de régionalisation de la fenêtre contenant le cosmonaute seul. Quelle que soit l'option, après la régionalisation en caractères de texte il apparaît un nouveau sous-menu, permettant de cesser la segmentation et de revenir au menu principal (touche "M") ou de continuer par la segmentation en carrés parfaits (touche "C"). La routine fera la moyenne des caractères adjacents de la même ligne, deux par deux et affichera deux fois le caractère résultant. En mode 2, ceci donnera les carrés parfaits, comme c'est le cas sur la figure n° 4. Dans le cas d'une figure Irrégulière ! faut procéder par plusieurs petites fenêtres, successivement, afin de limiter la régionalisation et éviter de toucher les parties de l'Image que vous souhaitez lasser en clair. L'image est, en dehors des périodes de traitement, cachée par le menu. Pour la voir en totalité il faut utiliser la fonction "I". Image, en respectant les Indications du sous-menu : "C. pour voir l'Image et par la suite "M" pour revenir au menu principal. En attendant la suite de nos routines, examinez la figure n° 5 et devinez qui se cache derrière les petits carrés de l'image traitée en totalité.

CPC n° 37

★ EDITEUR: CPC Revue
★ ANNÉE: 1988
★ CONFIG: 64K + AMSDOS
★ LANGAGE:
★ LICENCE: LISTING
★ AUTEUR: D. VASILJEVIC

CPCrulez[Content Management System] v8.7-desktop/cache
Page créée en 073 millisecondes et consultée 696 fois

L'Amstrad CPC est une machine 8 bits à base d'un Z80 à 4MHz. Le premier de la gamme fut le CPC 464 en 1984, équipé d'un lecteur de cassettes intégré il se plaçait en concurrent  du Commodore C64 beaucoup plus compliqué à utiliser et plus cher. Ce fut un réel succès et sorti cette même années le CPC 664 équipé d'un lecteur de disquettes trois pouces intégré. Sa vie fut de courte durée puisqu'en 1985 il fut remplacé par le CPC 6128 qui était plus compact, plus soigné et surtout qui avait 128Ko de RAM au lieu de 64Ko.