NewbieContest

Challenges => Aide Programmation => Discussion démarrée par: julienc le 21 Mai 2006 à 22:46:30



Titre: Prog - Visual vigenere
Posté par: julienc le 21 Mai 2006 à 22:46:30
Sympa ce petit challenge.

Merci beaucoup S0410N3, je me suis vraiment bien amusé !!!.

Perso, j'aime pas trop, je suis plutot pour Java Image I/O. Mais les gouts et les couleurs, ça se discute pas ;)


Titre: Prog - Visual vigenere
Posté par: S0410N3 le 21 Mai 2006 à 22:54:13
Congratz julienc =)

C'était justement le but d'y prendre du fun ;)

Ben je sais pas, je file une image après tu utilises ce que tu veux pour la traiter =) php, java, c++, ... all is possible.

Edit : je viens de comprendre ta remarque. Un peu lent à la réaction ce soir xD Pour la comprendre faut avoir résolu le challenge... hehe


Titre: Prog - Visual vigenere
Posté par: Lebreton le 24 Mai 2006 à 22:33:47
Je pense que les 25 points fournis en échange de la validation de cette épreuve ne sont pas volés ... :lol:
Félicitation pour cette épreuve S0410N3.


Titre: Prog - Visual vigenere
Posté par: Dede le 25 Mai 2006 à 17:44:22
Je suis d'accord avec Lebreton, belle épreuve.
Par contre ce qu'il y à écrit dans la réponse ma soulé, ducou j'ai fait le bourrin et j'ai créé ma propre OCR. Vive le php =D.

Encore bravo pour l'épreuve.


Titre: Prog - Visual vigenere
Posté par: phoenix1204 le 25 Mai 2006 à 23:12:05
Yop elle est nickel cette epreuve, pas dure si on fait attention (donc si on ne fait pas comme moi :rolleyes:) et elle exploite bien diverses facettes =D


Titre: Prog - Visual vigenere
Posté par: kokotchy le 28 Mai 2006 à 11:09:39
J'ai une petite question. Je ne comprend pas tres bien le sens de "un simple décalage des valeurs r, g et b".
Car l'exemple ne m'aide pas plus :/
En fait, les couleurs rgb de chaque pixel est modifié, ce n'est pas le pixel qui bouge ?

Sinon j'aime beaucoup cette épreuve ;)


Titre: Prog - Visual vigenere
Posté par: Kowasu le 28 Mai 2006 à 12:14:01
Moi aussi j'aimerais un chouilla d'explications. Moi, je bloque sur ce bout de phrase :
"alors pour tous les pixels de la première ligne de l'image d'origine les rouges ont été déplacés de 10 pixels vers la droite, les verts de 20 pixels et les bleus de 30 pixels"
J'ai fait les hypothèses suivantes(rubicube plane) :
-Les pixels rouges, verts et bleus sont déplacés (les autres pixels on en fait quoi? et surtout, le déplacement de certain pixels risque d'écraser d'autres pixels?) à X pixels de distance défini par l'image 2.
-"les rouges" moi j'ai aussi interpreter cela comme les composés rouges de chaque pixel qu'il faut déplacer. Un pixel A donnerai sa composée rouge au pixel B qui se trouve à X pixel défini par l'image 2.(enfin par pixel quoi)
Ici il n'y a pas risques d'écrasement vu que toutes les valeurs se déplacent, le problème c'est que ca donne rien ^^
-comme dernière hypothèse j'ai émis une idée farfelue selon laquelle la première idée serait la bonne mais les pixels autres que rouges, verts et bleus, on devrait determiné la prépondérence de leurs couleurs et ainsi les déplacés. Dans ce cas, pas d'écrasement mais le problème là aussi c'est que ca donne rien ^^

Un peu d'aide ne serait pas donc de refus.

edit : je viens d'essayer une autre manière :
(http://fifa20051.site.voila.fr/ex.JPG)
Je crois que je vais devenir fou avec cette épreuve.


Titre: Prog - Visual vigenere
Posté par: phoenix1204 le 28 Mai 2006 à 12:47:37
Si on considere qu'un pixel c'est un tableau de 3 composantes R, G et B :

Citation
alors pour tous les pixels de la première ligne de l'image d'origine les rouges ont été déplacés de 10 pixels vers la droite, les verts de 20 pixels et les bleus de 30 pixels
=> il faut comprendre que pour tous les pixels de la première ligne de l'image d'origine on effectue une rotation de 10 pixels vers la droite du tableau des composantes rouges, de 20 pixels du tableau des composantes vertes et de 30 pixels du tableau des composantes bleues. Par exemple, si le pixel {0,0} a pour composante {R=12, G=4, B=68} alors on retrouvera la composante R=12 dans le pixel {10,0}, la composante G=4 dans le pixel {20,0} et la composante B=68 dans le pixel {30,0}.

Citation
-"les rouges" moi j'ai aussi interpreter cela comme les composés rouges de chaque pixel qu'il faut déplacer. Un pixel A donnerai sa composée rouge au pixel B qui se trouve à X pixel défini par l'image 2.(enfin par pixel quoi) Ici il n'y a pas risques d'écrasement vu que toutes les valeurs se déplacent, le problème c'est que ca donne rien ^^
=> pourtant c'est bien le bon mécanisme que tu cites


Titre: Prog - Visual vigenere
Posté par: Kowasu le 28 Mai 2006 à 12:51:25
Citation de: phoenix1204
Citation de: SoS
-"les rouges" moi j'ai aussi interpreter cela comme les composés rouges de chaque pixel qu'il faut déplacer. Un pixel A donnerai sa composée rouge au pixel B qui se trouve à X pixel défini par l'image 2.(enfin par pixel quoi) Ici il n'y a pas risques d'écrasement vu que toutes les valeurs se déplacent, le problème c'est que ca donne rien ^^
=> pourtant c'est bien le bon mécanisme que tu cites
J'ai du foiré quelque part.(encore le coup du BSWAP j'en suis sur)
Merci phoenix1204


Titre: Prog - Visual vigenere
Posté par: kokotchy le 01 Juin 2006 à 22:37:10
J'ai compris le principe (je crois ^^) mais phoenix1204, ton exemple parle bien de l'encodage de l'image et non du décodage ?

car je n'y arrive pas :/ Je suis presque sur que tout mon code est bon sauf pour le passage de l'autre coté de l'image. Mais c'est quand même pas si souvent qu'une composante saute de coté, si ?


Titre: Prog - Visual vigenere
Posté par: S0410N3 le 01 Juin 2006 à 23:10:54
hello

phoenix1204 décrit bien le processus d'encodage oui, comme moi dans la page du chall, bon ok en surement plus explicite :P (donc pas de décodage).
Faut donc faire les choses à l'inverse pour décoder.

En ce qui concerne la réintégration des composantes des pixels de l'autre côté de l'image réfléchis un peu à quel opérateur tu peux utiliser pour faire ça. C'est pas si compliqué que ça en à l'air :)
En fait si c'est assez souvent qu'une composante "saute de côté" parce que j'ai choisi des décalages aléatoires tirés entre (0,largeur_image) ou (0,hauteur_image).
Pour un décalage horizontal par exemple si le décalage tiré aléatoirement pour une composante vaut largeur_image/2 et bien la moitié des valeurs de cette composante sont réintégrées de l'autre côté (Toute la moitié droite de la ligne en question. Je parle toujours de l'encodage et non pas du décodage).
On peut donc dire que statistiquement si tu ne réintègres pas les composantes de l'autre côté tu en perds environ la moitié.

Autre précision : il faut bien faire attention à faire les décalages horizontaux et verticaux l'un après l'autre et non pas en même temps. Ca peut être une raison d'erreur. Ca ne fournit bien évidemment pas le même résultat...


Titre: Prog - Visual vigenere
Posté par: kokotchy le 02 Juin 2006 à 08:20:08
Je traite tous les cas séparement !
Je vais voir de plus pres pour la fonction que tu parles (je vois de laquelle, j'y avais pensé :-° )

Y a un truc de bizarre dans l'image générée !
Le dessus est modifié mais pas le dessous !
C'est vraiment bizarre :/

Pour la partie du dessous, c'était à cause de l'utilisation d'une mauvaise variable :/
Maintenant, j'obtiens ce joli truc :
(http://clancvh.webdynamit.net/newbiecontest/out.png)

Je crois que c'est mon code :-°

C'était mon code, c'est vraiment le rotage (;)) qui pose problème :/


Titre: Prog - Visual vigenere
Posté par: rpggamer le 20 Août 2006 à 13:58:56
Bonjour tout le monde,

j'ai pas bien compris l'histoire des décalages :

pour ce qui est de r = 10 ; v = 20 ; b = 30 on decale toutes les composantes r de 10px, les v de 20 et les b de 30 c'est bon

mais je ne comprends pas dans quel ordre faut-il executer les decalages :

-Tout d'un coup ?? somme des r, des v et des b de img2 pour avoir les decalages r, v et b horizontaux et meme principe avec l'img3 pour les decalages veticaux ??

-Les uns après les autres ?? tout d'abord img2 px{0,0} puis img3 px{0,0} puis img2 px{0,1} ..... mais il y a donc plus de decalages horizontaux que verticaux ??

-Autre ....

j'ai tout le reste du code qui marche nickel il n'y a "plus que" cette partie qui ne passe pas ^^

merci d'avance pour l'aide


Titre: Prog - Visual vigenere
Posté par: S0410N3 le 21 Août 2006 à 10:37:46
rpggamer, relis mon dernier post ;)


Titre: Prog - Visual vigenere
Posté par: S0410N3 le 21 Août 2006 à 21:12:03
Citation
j'ai pourtant egalement essayer en faisant d'abord les decalages horizontaux puis les decalages verticaux ...
Dans l'explication du challenge j'ai décrit le processus d'encodage et non pas de décodage.
Pour décoder faut tout faire pareil mais à l'inverse =)

Marrant le nombre de personnes qui ne voient pas ça =)

Sorry mais je ne prends pas les contacts msn comme ça.
Si tu veux tu peux toujours me trouver sur le chan IRC.


Titre: Prog - Visual vigenere
Posté par: rpggamer le 22 Août 2006 à 11:00:03
Edit : Yeeeeeeeeeeeeeaaaaaaaaaaahhhhhhhhhhhhhhhhhhhhh Valideeeeeeeeee
^^

Grand Bravo Pour Cette Epreuve Excellente

ma rps >> moi ossi ^^


Titre: Prog - Visual vigenere
Posté par: sofiane le 22 Août 2006 à 12:16:38
Epreuve réussie.

Merci pour ces deux derniers post, ça m'a bcp aidé..

C'est vrai que dans l'énoncé, on ne fait pas gaffe au mot "encodage" ! ...

ça faisait des jours que je galérais, en fin de compte, je ne faisais qu'encoder une image encodée ! :D

Trés bonne épreuve !! merci aux créateurs !


Titre: Prog - Visual vigenere
Posté par: lordzak le 22 Août 2006 à 12:18:25
Ah bon ?

Citation
Edit : Yeeeeeeeeeeeeeaaaaaaaaaaahhhhhhhhhhhhhhhhhhhhh Valideeeeeeeeee
^^

Grand Bravo Pour Cette Epreuve Excellente

ma rps >> moi ossi ^^
Ca t'as aidé ça ? xD


Titre: Prog - Visual vigenere
Posté par: sofiane le 22 Août 2006 à 12:20:50
Lol !! je n'avais pas vu ton dernier post !!!... je parlais des 2 autres...=D

Encore bravo !!...


Titre: Prog - Visual vigenere
Posté par: rpggamer le 22 Août 2006 à 14:50:36
lol on dirait pas mais ... en fait non ^^


Titre: Prog - Visual vigenere
Posté par: Gardel le 09 Février 2007 à 11:54:41
J'ai recréé l'algo d'encodage de l'image et il fonctionne très bien.
Pour connaitre l'emplacement du pixel pour le déplacement de la valeur R, G ou B, je procédais ainsi (exemple pour décalage horiontal):
(position actuelle + décalage) % 330
Vient alors le moment où je le reverse pour qu'il déchiffre l'image, mais là je n'arrive pas du tout à trouver le calcul qui retrouvera l'ancien emplacement.
(position actuelle - décalage) fonctionne uniquement si (position actuelle > décalage)
mais lorsque (position actuelle < décalage), j'ai bien réfléchi mais les mathématiques n'étant pas mon meilleur domaine, je suis bloqué :x

EDIT : C'est bon, j'ai trouvé comment faire :)
J'ai juste quelques pixels avec des mauvaises couleurs mais ça revient au même si je recolore.

EDIT 2 : Validée


Titre: Prog - Visual vigenere
Posté par: Tenguryu le 30 Août 2007 à 09:20:08
Ah, enfin validée :)
Amusante, mais pas bien compliquée si on réutilise ce qu'on a trouvé pour la premiere epreuve de ce type :)


Titre: Re : Prog - Visual vigenere
Posté par: gouzzy le 12 Mars 2008 à 17:10:56
Je suis embêté, j'ai l'algo de décogage ca décode, mais certain pixels manquent (pas beaucoup, mais assé pour vraiment perturber une recherche OCR)

J'ai beau chercher, je ne m'explique pas la cause.

Gardel, tu dis :

J'ai juste quelques pixels avec des mauvaises couleurs mais ça revient au même si je recolore.

En fait il est vrai que mon rendu final est multicolore, tu arrives a un rendu tout blanc directement (a part quelques pixel a recolorer)?


EDIT : C'est bon j'ai recodé mon OCR


Titre: Re : Prog - Visual vigenere
Posté par: Nil le 20 Août 2008 à 04:49:49
(http://img161.imageshack.us/img161/1719/chiantan0.jpg)

Effectivement, c'est chiant comme épreuve. J'ai passé toute ma journée dessus et je commence tout juste à avoir des résultats qui me donnent un peu d'espoir. C'est excellent pour apprendre un nouveau langage par contre, python en occurence.

Je me demandais:
- On travaille toujours sur l'image de base? Il ne faut pas se créer une image neuve et noire et tout faire dessus?
- L'encodage c'est bel et bien :
Tu as "appliqué" chaque ligne de l'image vertical sur chaque ligne de l'image de base PUIS ENSUITE, tu as "appliqué" chaque colonne de l'image horizontal sur chaque colonne de l'image de base?
OU
Pour chaque pixel non noir de l'image de base, tu as "appliqué" l'image vertical puis horizontal?
Parce que, présentement, j'ai codé ma première explication(complètement inversé bien sûr) et j'ai l'impression un peu décourageante que c'était la deuxième.
- Est-il vrai de dire que, après la première étape de désencodage, je devrais voir assez clairement 3 lignes et que, après la deuxième étape, je devrais voir du texte aussi claire que celui que vous lisez?

Merci!


Titre: Re : Prog - Visual vigenere
Posté par: S0410N3 le 20 Août 2008 à 11:07:02
Il semble un peu évident que si tu travailles sur l'image de base sans en créer une nouvelle tu vas perdre des données par écrasement =)

A priori tu devrais tomber à la fin sur une image totalement lisible (comme dans l'exemple sur la page de l'épreuve).


Titre: Re : Prog - Visual vigenere
Posté par: Asphator le 18 Mars 2009 à 16:18:12
Bonjour,

Pourrais-je montrer en MP une partie de mon code à quelqu'un?
J'ai un soucis sur la 2e rotation je ne sais où, alors que ma 1ère rotation fonctionne à merveille  :shock:


Titre: Re : Prog - Visual vigenere
Posté par: freko28 le 26 Avril 2009 à 12:21:32
Bonjour à tous :)
Voila juste j'aurai aimer savoir si le fait que les lettres reconstitués soit incomplètes est normal ou si c'est mon algo de décalage qui plante (parceque mon ocr lui, il aime pas trop :/)
Voici un exemple d'image obtenu après mon traitement : http://img261.imageshack.us/my.php?image=imagefinish.png
Merci d'avance pour vos réponce :)

Freko28


Titre: Re : Prog - Visual vigenere
Posté par: Nuco le 26 Avril 2009 à 16:10:59
Salut,

C'est ton algo qui plante, quand je l'ai faite l'image finale était impeccable (similaire à "Apprenons à lire").

++

Nuco


Titre: Re : Prog - Visual vigenere
Posté par: Epoc le 08 Septembre 2011 à 22:43:42
Déterrage de topic !

Cette épreuve c'est de la balle, j'y suis presque :O

/*Moderated par the lsd : ah ouais ! quand même ! oupa */

Edit de the lsd : ok, j'ai peut etre eu la gachette facile en enlevant le lien de l'image  :rolleyes: du coup je la remet. http://www.allo-image.net/stockimg/upload/1087/20797516914e6936cebdc3bimg_decod.png


Titre: Re : Prog - Visual vigenere
Posté par: Asteriksme le 08 Septembre 2011 à 22:49:16
Super ! mais bon si t'as pas une image clean c'est que tu te plantes, sans vouloir te vexer ;)


Titre: Re : Prog - Visual vigenere
Posté par: Epoc le 09 Septembre 2011 à 13:07:00
T'inquiète je le sais bien :)


Titre: Re : Prog - Visual vigenere
Posté par: keutru le 31 Juillet 2012 à 23:10:46


3 secondes, c'est quand même chaud mico, je suis à ~6.5 secondes, j'ai quasiment 1 seconde pour chacun des deux aller/retour(s??). C'est en Perl, pour un script de cette taille, je ne vois pas trop comment gagner 4 secondes! J'imagine qu'il me faudrait plutôt envisager un langage compilé pour le coup!


Code:
 time ./visual-vigenere.pl -v test.pbm
0:4:32  * start
0:4:32  * get_string
0:4:33  * get_shifts(width)
0:4:33  * get_shifts(height)
0:4:33  * get_pixels
0:4:34  * do_shifts(height)
0:4:35  * do_shifts(width)
0:4:36  * create_image
0:4:37  * reordered image written to 'test.pbm'
0:4:37  * decode_vigenere: key='IMAGINEE' string='XXXXXX XXXXXX XXXXX XXXXX'
    -> decrypted: YYYYY YYYYYY YYYYYY YYYYYY
    -> wanted: 1
0:4:37   => solution: YYYYY
0:4:38
<h3 align="center">D&eacute;sol&eacute;..</h3><br /><p>Tu es trop lent. Tu as moins de 3 secondes.</p>

real    0m6.650s
user    0m5.908s
sys     0m0.292s
:evil:


Titre: Re : Re : Prog - Visual vigenere
Posté par: 1-vek le 05 Août 2012 à 00:23:10
J'imagine qu'il me faudrait plutôt envisager un langage compilé pour le coup!

pas forcement le serPent est plus rapide que le dromadaire ou l'éléPHPant !

cette épreuve m'a fait réfléchir un maximum, comme pas mal de monde, la premiere etape me prenait 4 à 5 secondes en php, les autres 1 à 2 secondes. du coup j'ai scripté ma premiere étape en python !

D'ailleurs, keutru, tu aura le meme probleme avec l'epreuve "Puzzle me" ;)




Titre: Re : Prog - Visual vigenere
Posté par: keutru le 05 Août 2012 à 21:02:08
Effectivement ce n'était pas la peine de foncer sur un language compilé. J'ai quand même fait l'essai avec une autre lib qu'Image::Magick et là pouf! du premier coup, c'est le même algo, tout pareil, mais c'est plus rapide:

Code:
time ./visual-vigenere-pasIM....pl -v test.png
21:54:49  * start
21:54:49  * get_string
21:54:50  * get_shifts(width)
21:54:50  * get_shifts(height)
21:54:50  * get_pixels
21:54:50  * do_shifts(height)
21:54:51  * do_shifts(width)
21:54:52  * create_image
21:54:53  * reordered image written to 'test.png'
21:54:53  * decode_vigenere: key='XXXXX' string='YYYYYYY YYYYYYYY YYYYYYYYY YYYYYYYY'
    -> decrypted: YYYYYYY YYYYYYYY YYYYYYYYY YYYYYYYY
    -> wanted: 3
21:54:53   => solution: YYYYYYYYY
21:54:53
<h3 align="center">Bravo ........

real    0m4.981s
user    0m4.252s
sys     0m0.184s

Ça te fait drôlement apprécier le message de victoire d'ailleurs... :P


Titre: Re : Prog - Visual vigenere
Posté par: Frenchix le 23 Novembre 2012 à 18:36:30
Bonjour à tous,

Je ne sais pas si tu vas repasser par la keutru mais au cas ou, tu as utilisé quoi comme OCR en perl car je m’aperçois qu'il n'y a pas grand chose donc me voila bloqué à ce niveau et j'ai la flemme de le recommencer dans un autre language.

Si d'ailleurs quelqu'un d'autre a un bon OCR en perl je suis preneur :D

Mici


Titre: Re : Prog - Visual vigenere
Posté par: keutru le 23 Novembre 2012 à 19:23:25
Code:
my $text =  `gocr optionskivontbien -i '$filename'`
:lol:

quoi? je devrais avoir honte? rahhh..


Titre: Re : Prog - Visual vigenere
Posté par: Alopekos le 26 Mai 2013 à 03:13:36
Bonsoir...

Comme beaucoup je suppose, j'ai galéré à cause de la logique à adopter parce que je trouve que ce n'est pas très clair dans l'énoncé (et encore plus dans l'indication du créateur lui même en page 1 de ce topic...)

Il faut bien penser qu'il s'agit d'une rotation de chaque sous-pixels R, G et B de chaque pixels. Mais cette rotation s'effectue sur les 2 axes, selon l'image verticale et l'image horizontale.

Or quand on fait une rotation, ce sont les deux axes qu'on prend en compte, d'où l'expression pas clair : il faut faire l'un après l'autre et pas en même temps. En fait si, il faut faire les rotations sur x et sur y en même temps pour chaque pixels mais l'un après l'autre : pour chaque pixels, on fait la rotation sur x, PUIS on fait la rotation sur y. Et seulement après on passe au pixel suivant. Ce qui équivaut à une rotation x, y pour un pixel donné.

Je parle de l'encodage bien sur.

Voila ça m'a bien embrouillé tout ça