Digitaliser un rubik's cube à l'aide d'un scanner à plat.

Description

Cette mise à jour permet d'actualiser mon fameux démonstrateur en utilisant une version plus récente de l'atelier logiciel Microsoft (Visual Studio 2005) et d'expérimenter une autre interface avec le scanner (WIA - Windows Image Acquisition). Elle est toujours écrite en Visual cpp.

Pour mémoire, ce programme permet de démontrer comment on peut digitaliser un Rubik's Cube à l'aide d'un scanner à plat. L'avantage de ce dispositif par rapport à une caméra est de pouvoir maitriser parfaitement la géométrie et les couleurs des images obtenues en fixant la position et l'éclairage. Cette version comporte comme la précédente un mécanisme de reconnaissance des couleurs qui traduit l'état du Cube en formule "Face:Couleurs" exploitable, par exemple, par un programme de résolution. Les images obtenues peuvent aussi être mémorisées dans des fichiers de différents formats (bmp, jpg, tif).

Comme son prédécesseur, il comporte un mode débug permettant de se faire une idée sur la pertinence de la reconnaissance des couleurs des faces du Cube.

Pour sa réalisation il met en oeuvre les bibliothèques MFC et GdiPlus de Microsoft. Il montre un exemple d'acquisition des six images des faces du Cube en utilisant l'interface WIA. Cette dernière, quoique plus rustique que TWAIN, semble plus prévisible d'une implémentation à l'autre. Pour ma part, je l'ai expérimentée sur trois ordinateurs différents équipés de scanners de marques différentes avec des résultats identiques. La difficulté étant d'acquérir dans la foulée les six images des six faces du Cube.

Une remarque sur la manière de digitaliser le Cube qui est posé sur la vitre du scanner : Les images saisies sont décalées d'un demi-tour par rapport à la position observée. Par exemple la première image saisie est la vue de dessous, la deuxième est la vue de droite...

La structure de l'application est conforme à l'architecture MFC-SDI de Microsoft. L'interface avec le scanner est assurée par les fichiers "WiaWrap" (.h et .cpp) ; la reconnaissance des couleurs est assurée par les fichiers "Extract" (.h et .cpp). Les fichiers "SidesDscr" (.h et .cpp) assurent le calcul et le dessin d'une présentation du Cube en "déroulé à plat" ; un exemple de mise en oeuvre étant assurée par les fichiers "DiagDisp" (.h et .cpp).

Ce démonstrateur est utilisé dans l'application présente sur ce site : "RubixCube" : http://codes-sources.commentcamarche.net/source/51633-rubix-cube .

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.