Poster un nouveau sujet Poster une réponse Page: 1,      >>
Stockage et numérisation d'image graphique [programme Coc5]
Auteur Message
coc5
Avatar

Autorisation : Membre
Nb de messages : 891
Inscrit le : Sam 16 Jui 2007, 13:37
Posté le : Ven 20 Juil 2007, 13:15   Citer 

Hier je m'ennuyais alors j'ai fais rapidement un petit programme sympa.

Je compte le développer évidemment, ce n'est que la version béta à l'état embryonnaire, mais je la mets quand même. Comme ça, vous pourrez donenez des suggestions ou me dire pourquoi ça ne marche pas (je sais ça ne reconstitue pas comme il faut mais c'est un tout petit rien que je ne vois pas )
Je pense par exemple rajouter un truc pour délimiter l'espace à sauvegarder.

Voici le programme à télécharger !


Code
If L.:Then
0->L.A(1)
0->L.B(1)
0->L.C(1)
0->L.D(1)
0->L.E(1)
0->L.F(1)
0->L.
End
Repeat getKey
For(I,1,5
Output(3,I," PROGRAMME
33!
Output(5,16-2I,"CREE PAR 
End
Output(7,7,"COC5
For(I,1,100
End
ClrHome
End
Goto 0
Lbl 3
Output(1,8," or
Output(1,6,"InF
Output(1,10,"s
Output(3,5," or
Output(3,1,"Ce pr
Output(3,7,"GraMMe permet de numériser une image puis de la recréer a l'écran.
Pause
For(I,3,7
Output(I,1,"               
End
Output(7,3," or

Output(3,1,"Numérisez en simple sauf en cas d'images ayant de n
Output(7,5,"Mbreuses alternances
Pause
ClrHome
Output(4,4, or
Output(4,1,"Me J
Output(4,6,"Indre :
Output(5,6," or
Output(5,6,"C
Output(5,8,"cL.Free.Fr
Pause
CLtHOMe
Lbl 0
Menu("IMAGEL.","DENUMERISER",1,"NUMERISER",2,"INFOS",3,"QUITTER",A
Lbl A:Stop
Lbl 1
Output(1,6," or
Output(1,3,"Dest
Output(1,8,"cKer
3->A
1->O
Lbl 6
not(O)->O
If not(O
Then
Output(3,8,"L
Output(4,8,"L`
Output(5,8,"Lf
Output(6,8,"L"
Output(7,8,"L...
Output(8,8,"L+
If O:Then
Output(3,8,"L.A
Output(3,8,"L.B
Output(3,8,"L.C
Output(3,8,"L.D
Output(3,8,"L.E
Output(3,8,"L.F
Output(3,8,"L.G
End
Repeat K=105
getKey->K
A->C
If K=25:A-1->A
If K=34:A+1->A
If A=2 or A=15:10not(A-15)+3->A
If A=9 and not(O) or A=8 and O
Goto 6
If AøC:Then
Output(C-6O,6,"
Output(C-6O,11,"
Output(A-6O,6,"*
Output(A-6O,11,"*
End
End
If A=3:L->L.NUM
If A=4:L`->L.NUM
If A=5:Lf->L.NUM
If A=6:L"->L.NUM
If A=7:L...->L.NUM
If A=8:L+->L.NUM
If A=9:L.A->L.NUM
If A=10:L.B->L.NUM
If A=11:L.C->L.NUM
If A=12:L.D->L.NUM
If A=13:L.E->L.NUM
If A=14:L.F->L.NUM
1->A:1->B:1->N
10->M
If L.NUM(1)=-1:Goto 5
Repeat A=94 and B=62
A+1->A
If A=95:Then
1->A
1+B->B
End
1+M->M
If M=13
Then
1->M
N+1->N
End
If int(10fPart(10^(M)L.NUM(N)=1:Pxl-On(B,A
End
CLrLIst L.NUM
Goto 0
Lbl 5
0->D
Repeat A=94 and B=62 and GetKeY
A+1->A
If A=95:Then
1->A
1+B->B
End
If M=14
Then
1->M
N+1->N
End
If L.NUM(N)>1 or D=1:Then
1->D
If L.NUM(N)=0:Then
1+N->N
2->M:0->D
End
L.NUM(N)-1->L.NUM(N)
If int(10fPart(L.NUM(N+1)))=1:Pxl-On(B,A
Else
If int(10fPart(10^(M)L.NUM(N)))=1:PXL-On(B,A
If int(10fPart(10^(M)L.NUM(N)))>1:N+1->N
M+1->M
End
End
ClrList L.NUM
Goto 0

Lbl 2
Menu("NUMERISER","IMG SIMPLE",S,"IMG CONTRASTE",C
Lbl C
0->L.DNU(1)
1->A:1->B:1->N:ClrHome
.1->M
Output(7,1,"APPUYEZ SUR UNE
Output(8,1,"POUR ARRETER
Repeat A=94 and B=62 or GetKeY
Output(5,1+int((94B-94+A)/389),"=
int((94B-94+A)/5.828)/10
Output(2,8,"   
Output(2,8,Ans
A+1->A
If A=95:Then
1->A
1+B->B
End
.1M->M
If M=10^(-14):Then
.1->M
N+1->N
0->L.DNU(N)
End
Mpxl-Test(B,A)+L.DNU(N)->L.DNU(N
End
Goto 9
Lbl S
ClrList L.NUM
-1->L.NUM(1)
1->A:1->B:0->U
2->N:0->M
pxl-Test(1,1)->L
Output(7,1,"APPUYEZ SUR UNE
Output(8,1,"POUR ARRETER
Repeat A=94 and B=62 or getkey
Output(2,8,"   
Output(2,8,.1int((94B-94+A)/5.828)
A+1->A
If A=95:Then
B+1->B
1->A
End
L->J
pxl-Test(B,A)->L
U+1->U
If LøJ:Then
If U=1:M+1->M
If M=14 or Uø1:Then
N+1->N
0->L.NUM(N)
M->G
1->M
End
If U=L:10^(-M)+L.NUM(N)->L.NUM(N)
If Uø1:Then
210^(-G)+L.NUM(N-1)->L.NUM(N-1)
U->L.NUM(N)
N+1->N
J->L.NUM(N)
End
0->U
End
End
Lbl 9
ClrHome
Output(1,4," or
Output(1,3,"St
Output(1,6,"cKer dans
3->A
1->O
Lbl 7
not(O)->O
If not(O
Then
Output(3,8,"L1
Output(4,8,"L2
Output(5,8,"L3
Output(6,8,"L4
Output(7,8,"L5
Output(8,8,"L6
If O:Then
Output(3,8,"L.A
Output(3,8,"L.B
Output(3,8,"L.C
Output(3,8,"L.D
Output(3,8,"L.E
Output(3,8,"L.F
Output(3,8,"L.G
End
Repeat K=105
getKey->K
A->C
If K=25:A-1->A
If K=34:A+1->A
If A=2 or A=14:10not(A-2)+3->A
If A=9 and not(O) or A=8 and O
Goto 7
If AøC:Then
Output(C-6O,6,"
Output(C-6O,11,"
Output(A-6O,6,"*
Output(A-6O,11,"*
End
End
If A=3:L.DNU->L
If A=4:L.DNU->L`
If A=5:L.DNU->Lf
If A=6:L.DNU->L"
If A=7:L.DNU->L...
If A=8:L.DNU->L+
If A=9:L.DNU->L.A
If A=10:L.DNU->L.B
If A=11:L.DNU->L.C
If A=12:L.DNU->L.D
If A=13:L.DNU->L.E
If A=14:L.DNU->L.F
ClrList L.DNU
Goto 0



^
^
|
Edit

----------------------
Ne cliquez pas ici !
 Adresse email Haut de page Bas de page 
 
vibra



Autorisation : Membre
Nb de messages : 595
Inscrit le : Mer 04 Avr 2007, 13:29
Posté le : Ven 20 Juil 2007, 21:11   Citer 

J'ai cru comprendre que le principe correspondait à mon programme scannaire, mais en mieux. Par contre, est-ce que tu pourrais expliquer comment ca fonctionne (dans les grandes lignes), et comment on l'utilise ?

----------------------
Vive la programmation et vive le vibraphone !!!
 Adresse email Haut de page Bas de page 
 
coc5
Avatar

Autorisation : Membre
Nb de messages : 891
Inscrit le : Sam 16 Jui 2007, 13:37
Posté le : Sam 21 Juil 2007, 12:18   Citer 

Pour commencer, tu t'arrange pour avoir quelque chose sur l'écran graphique ( à moins que tu ne souhaites enregistrer un écran blanc^^ ). Tu dessines un truc quoi.

Tu lance le programme, puis tu choisis numériser. Dès lors, ce programme va pour chaque pixel identifier s'il est "allumé" ou non (Pxl-test). S'il est éteint il enregistre un 0 sinon un 1.

Jusqu'ici c'était facil. Vient ensuite le problème de stockage. J'ai utilisé la technique de stockage de Ratuss couplé avec un amélioration de liste. Ce qui revient quand même, pour une image format maximum, à 4ko.

Les nombres se stockent dans une liste provisoire appellé L.NUM, qui se transfera dans la liste choisi/souhaitée. Pour dénumériser, c'est la même chose, dans l'autre sens, si 1 faire Point on.

J'ai d'ailleurs une idée pour réduire le stockage à environ 3000 octets, mais ce sera plus compliqué. Pour l'instant, j'ai juste un problème que je n'arrive pas à résoudre.

----------------------
Ne cliquez pas ici !
 Adresse email Haut de page Bas de page 
 
Sangohan38



Autorisation : Membre
Nb de messages : 3370
Inscrit le : Sam 31 Déc 2005, 19:48
Posté le : Sam 21 Juil 2007, 14:44   Citer 

Explique ton problème, on pourra srement t'aider.

Sangohan38

 Adresse email Haut de page Bas de page 
 
vibra



Autorisation : Membre
Nb de messages : 595
Inscrit le : Mer 04 Avr 2007, 13:29
Posté le : Sam 21 Juil 2007, 15:20   Citer 

Oui, donc c'est bien un programme comme je l'avais fais, mais apparemment le tien est beaucoup mieux. Bravo. veryhappy.gif
par contre, serait-il possible de remplacer les
Code
&#8735

par les commandes réelles stp ?

----------------------
Vive la programmation et vive le vibraphone !!!
 Adresse email Haut de page Bas de page 
 
coc5
Avatar

Autorisation : Membre
Nb de messages : 891
Inscrit le : Sam 16 Jui 2007, 13:37
Posté le : Sam 21 Juil 2007, 15:55   Citer 

Voilà.

Le L. correspond au petit L que l'on trouve dans le catalogue, pour les listes.

Sinon je pense bientôt changer le système de stockage de cette manière :

Pour toute suite de 0 ou de 1 supérieur à 3, je met le nombre déduis suivis du chiffre correspondant.

Par exemple:

00000110000011111111001
Deviendra
50115081001

----------------------
Ne cliquez pas ici !
 Adresse email Haut de page Bas de page 
 
Sangohan38



Autorisation : Membre
Nb de messages : 3370
Inscrit le : Sam 31 Déc 2005, 19:48
Posté le : Sam 21 Juil 2007, 18:06   Citer 

Simple à faire pour les 0 où pour les 1.
Mais les deux entreront en conflits: commen savoir si c'est un 1 ou un 0.
A mon avis donc, mieux vaut avoir un seul numéros compressé (et je pense qu'il vaut mieux le 0).
Au passage, cette méthode est le principe des faxs actuels.

Sangohan38

 Adresse email Haut de page Bas de page 
 
webmaster
Avatar

Autorisation : Administrateur
Nb de messages : 792
Inscrit le : Mer 18 Aoû 2004, 22:13
Posté le : Sam 21 Juil 2007, 18:25   Citer 

Voilà l'algo :

Si chiffre_courant = 0 ou 1 => le réécrire
si chiffre_courant >1
=> on le stock dans n
=> chiffre_courant=chiffre_courant+1
=> on lit le chiffre_courant
=> Pour x allant de 1 à n
=>=> réécrire chiffre_courant
chiffre_courant=chiffre_courant+1
revenir en haut et poursuivre jusqu'à la fin des données

Donc, tu vois Sango, ca marche très bien !

@+ Le Webmaster beer.gif

 Adresse email Haut de page Bas de page 
 
Sangohan38



Autorisation : Membre
Nb de messages : 3370
Inscrit le : Sam 31 Déc 2005, 19:48
Posté le : Sam 21 Juil 2007, 20:48   Citer 

En effet, ça marche.

Sangohan38

 Adresse email Haut de page Bas de page 
 
vibra



Autorisation : Membre
Nb de messages : 595
Inscrit le : Mer 04 Avr 2007, 13:29
Posté le : Dim 22 Juil 2007, 10:25   Citer 

Désolé de vous ennuyer avec mes questions à la noix, mais qu'est ce que L.DNU et L.NUM (je suis sur 82) ?

----------------------
Vive la programmation et vive le vibraphone !!!
 Adresse email Haut de page Bas de page 
 
Sangohan38



Autorisation : Membre
Nb de messages : 3370
Inscrit le : Sam 31 Déc 2005, 19:48
Posté le : Dim 22 Juil 2007, 11:18   Citer 

Ce sont des listes qui ont été crées pour le prog, mais pour ta calcu, c'est impossible de les avoir car tu n'a que 6 listes.

Sangohan38

 Adresse email Haut de page Bas de page 
 
vibra



Autorisation : Membre
Nb de messages : 595
Inscrit le : Mer 04 Avr 2007, 13:29
Posté le : Dim 22 Juil 2007, 11:28   Citer 

Vive la 82 cry.gif

----------------------
Vive la programmation et vive le vibraphone !!!
 Adresse email Haut de page Bas de page 
 
coc5
Avatar

Autorisation : Membre
Nb de messages : 891
Inscrit le : Sam 16 Jui 2007, 13:37
Posté le : Dim 22 Juil 2007, 12:37   Citer 

Zut je savais pasque les Ti82 n'en avais pas la possiblité... Bas sinon tu peux toujours remplacer par des listes déjà existantes, tu auras juste moins de possibilités de stockage, c'est tout...


Sinon le modèle de numérisation que j'aais proposé ne marche pas en faîte car le programme ne pourra pas distinguer un "91-0 d'un "9-1 0". Donc j'ai presque terminé une autre manière, je la mettrais tout à l'heure.

----------------------
Ne cliquez pas ici !
 Adresse email Haut de page Bas de page 
 
coc5
Avatar

Autorisation : Membre
Nb de messages : 891
Inscrit le : Sam 16 Jui 2007, 13:37
Posté le : Dim 22 Juil 2007, 15:06   Citer 

Voilà, finis bigmouth.gif

Bon il reste des bugs mais en gros c'est bon.

Le lien viendra bientôt (c'est pas le bon là)

----------------------
Ne cliquez pas ici !
 Adresse email Haut de page Bas de page 
 
webmaster
Avatar

Autorisation : Administrateur
Nb de messages : 792
Inscrit le : Mer 18 Aoû 2004, 22:13
Posté le : Dim 22 Juil 2007, 15:14   Citer 


Citer : coc5
Sinon le modèle de numérisation que j'aais proposé ne marche pas en faîte car le programme ne pourra pas distinguer un "91-0 d'un "9-1 0". Donc j'ai presque terminé une autre manière, je la mettrais tout à l'heure.



Très juste. Il suffit soit de se limiter à 9 soit de faire une matrice (ou 2 listes)

@+ Le Webmaster beer.gif

 Adresse email Haut de page Bas de page 
 
coc5
Avatar

Autorisation : Membre
Nb de messages : 891
Inscrit le : Sam 16 Jui 2007, 13:37
Posté le : Dim 22 Juil 2007, 15:44   Citer 

Bouarf Badonguo marche pas karate.gif

-Sinon comme ça l'image peut prendre jusqu'à deux fois moins de place (et même moins de 20 octets si vous voulez un bel écran blanc numérisé^^)-

----------------------
Ne cliquez pas ici !
 Adresse email Haut de page Bas de page 
 
coc5
Avatar

Autorisation : Membre
Nb de messages : 891
Inscrit le : Sam 16 Jui 2007, 13:37
Posté le : Dim 22 Juil 2007, 17:47   Citer 

Ca y est Badongo remarche j'ai changé le lien happy.gif

Sinon il reste des bugs à régler, mais l'essentiel est là (par exemple les getkeys sont mal rentrées).

----------------------
Ne cliquez pas ici !
 Adresse email Haut de page Bas de page 
 
Sangohan38



Autorisation : Membre
Nb de messages : 3370
Inscrit le : Sam 31 Déc 2005, 19:48
Posté le : Dim 22 Juil 2007, 19:35   Citer 

Badongo me sort "file not found".
Essaye avec un autre uploadeur.

Sangohan38

 Adresse email Haut de page Bas de page 
 
vibra



Autorisation : Membre
Nb de messages : 595
Inscrit le : Mer 04 Avr 2007, 13:29
Posté le : Dim 22 Juil 2007, 19:49   Citer 

ouais moi aussi j'en ai fais une vertion pour la 82, mais un écrant complet prend 1500 octets !!

----------------------
Vive la programmation et vive le vibraphone !!!
 Adresse email Haut de page Bas de page 
 
coc5
Avatar

Autorisation : Membre
Nb de messages : 891
Inscrit le : Sam 16 Jui 2007, 13:37
Posté le : Dim 22 Juil 2007, 20:16   Citer 

Je pense terminer vraiment demain.

----------------------
Ne cliquez pas ici !
 Adresse email Haut de page Bas de page 
 
Poster un nouveau sujet Poster une réponse Page: 1,      >>





  Powered by Fire-Soft-Board v1.0.10 © 2004 - 2024 Groupe FSB
Page générée en 9 requêtes
BlackOne par Grimmlink