Traitement image

Signaler
Messages postés
13
Date d'inscription
mardi 1 mars 2005
Statut
Membre
Dernière intervention
15 mars 2005
-
Messages postés
442
Date d'inscription
jeudi 4 avril 2002
Statut
Membre
Dernière intervention
11 août 2008
-
FLO

27 réponses

Messages postés
13
Date d'inscription
mardi 1 mars 2005
Statut
Membre
Dernière intervention
15 mars 2005

Bonjour à tous,

Je dois réaliser un projet consistant à lire l'heure automatiquement à partir d'une photo d'une montre à aiguille.
La lecture doit se faire à la seconde pres !

Si vous aviez des idees de stratégies ou des conseils ils sont les bienvenus.

Merci à vous

FLO
Messages postés
1329
Date d'inscription
vendredi 15 août 2003
Statut
Membre
Dernière intervention
16 juin 2010
2
Arg

hé ben...

bonne chance :)

ca doit etre un trruc général ou pour une montre précise? la photo est bien orientée ou faut la mettre dans le bon sens?

_______________________


Omnia vincit labor improbus
Messages postés
13
Date d'inscription
mardi 1 mars 2005
Statut
Membre
Dernière intervention
15 mars 2005

C un truc general et il faut mettre la photo dans le bon sens car elle est prise dans un sens aléatoire .
ça te parait infaisable ??

FLO
Messages postés
1329
Date d'inscription
vendredi 15 août 2003
Statut
Membre
Dernière intervention
16 juin 2010
2
Oh, infaisable, non.

Pour une équipe de 50 programmeurs de choc, non. dans ces cas la rien n'est jamais imposible.

Mais de la a programmer ca tout seul, sans aucune expérience de C
(apparement t'as pas encore mis dee source) ne du traitement de
l'image...

je veux pas te découraner, SURTOUT pas, ... mais ca me parait chaud.

les aiguilles sont toutes de la meme couleur?

sinon va falloir faire ca avec les complexes ou un équivalent (sin/cos)

tu te mets au centrre de l'image, et tu fais des tours (équations
complexes , polaires ou paramétriques si tu connais) concentrriques; tu
trouves uune orientation possible pour tes 3 aiguilles, tu continues
tes tours, tu paufines tes résultats, et quand ca devient blanc, tu te
dis que c'est l'aiguille la plus courte -> les heures

et tu continues

vi je sé ca a l"air con comme ca, mais je te souhaite bien du plaisir a mettre en oeuvre :)



++

ad

_______________________


Omnia vincit labor improbus
Messages postés
13
Date d'inscription
mardi 1 mars 2005
Statut
Membre
Dernière intervention
15 mars 2005

je sais de toute facon que ca va etre carrement chaud mais bon

les aiguilles ne sont pas toutes de la meme couleur !!

sinon moi je pensais peu etre commencer sur matlab peu etre pour gagner un peu de temps.
toi tu as deja pas mal d'experience en traitement d'image?

FLO
Messages postés
1329
Date d'inscription
vendredi 15 août 2003
Statut
Membre
Dernière intervention
16 juin 2010
2
aucune

C quoi matlab?

_______________________


Omnia vincit labor improbus
Messages postés
442
Date d'inscription
jeudi 4 avril 2002
Statut
Membre
Dernière intervention
11 août 2008

Je veut pas fouttre la merde mais imageine deja le bazar quand la grand eguille passe par dessus la petite eguille ! C'est vrai que ça a l'air difficil comme probleme. Dja fo bien remettre l'image, et je supose lire les heures sur la montre pour savoir dans quel sens elle est !

neodelphi
Messages postés
70
Date d'inscription
jeudi 22 mai 2003
Statut
Membre
Dernière intervention
21 décembre 2005

Encore un problème de reconnaissance de forme, c'est bien plus complexe
que ça n'y parait, le plus gros boulot étant de localiser dans l'image,
le cadran de la montre puis isoler chaque aiguille.



-faire une detection de contours.

-reconnaissance de forme (trouver le "cercle" ou l' "ellipse" correspondant au cadran de la montre).

c'est déja fastueux d'autant qu'il te faut en plus savoir où est le midi dans ce cercle !



- encore reconn de forme : repérer tous les segments de longueur supérieure à rayon du cercle/2 (les aiguilles).

- les classer par longueur croissante.(heure-minute-seconde)

- croiser les doigts pour que deux aiguilles ne se chevauchent pas !

-déterminer leur angle avec l'axe de midi.

- interpreter le tout....



en gros ! bon courage !!
Messages postés
13
Date d'inscription
mardi 1 mars 2005
Statut
Membre
Dernière intervention
15 mars 2005

c clair que ca va etre chaud mais par curiosite a votre avis avec la transformée de hough je peux esperer avoir quelle precision sur les angles ( ou sur les coefficient de droites) ?

mon idee est de travailler avec l'angle entre heure et minute

si les aiguilles se chevauchent c pas un pb (enfin facon de parler) je declare la mesure infaisable pour l'instant.

FLO
Messages postés
442
Date d'inscription
jeudi 4 avril 2002
Statut
Membre
Dernière intervention
11 août 2008

Pour ce qui est du chevauchement des aiguilles ça peut se faire (si tu trouve qu'une seule aiguille sur ta montre !)...


T'aurai pas le droit genre de peindre ta montre et de mettre des reperes rouge ? Sa te simplifirai le traitement lol ! et aussi pour toruver l'orientation du cadran tu peut peut-etre t'aider du bracelet qui doit etre facil a detecter... tiend nous au courant en tout cas :)

neodelphi
Messages postés
1329
Date d'inscription
vendredi 15 août 2003
Statut
Membre
Dernière intervention
16 juin 2010
2
neodelphi
-> j'ai aussi lu ton msg précédent, et ... as -tu lu ce qui précede?

l'image doit etre dans le bon sens, la superposition d'aiguilles pour
le moment on s'en fout , et les marques rouges, si c'est pour faire ca
autant lire l'heure toi meme.

Vulpetrus -> la reconnaissance
des contours est une bonne idée... comment proposes tu de faire ca?
peut etrre en calculant la couleur la plus répandue dans l'image (dans
l'intervalle [X barre -2 sigma, Xbarre +2 sigma] (dsl mais en html C
pas top; voir les courbes de Gauss), a partir de la il ne reste plus
que le cadran et les aiguilles, ca simplifierait un peu...

_______________________


Omnia vincit labor improbus
Messages postés
70
Date d'inscription
jeudi 22 mai 2003
Statut
Membre
Dernière intervention
21 décembre 2005

Oui c'est à peu prés ça, en fait le principe le plus simple est de calculer la dérivée en chaque point :


f'(i) = (à peu prés égal) 1/2(f(i+1)-f(i-1)) et encore c'est en 1D.
On dira que f(i) correspond à la couleur du pixel i.
en 2D, il faut prendre en compte f(i,j+1), f(i,j-1), f(i+1,j) et f(i-1,j) ...
f(i,j) correspond à la couleur du pixel placé en i,j sur la map.


la dérivée est donc nulle si il n'y a pas de variation, comme un contour correspond à une grande variation (fort contraste), la dérivée n'y est pas nulle.
Ainsi au obtient l'image f'(i) que l'on va coder, si f'(i) = 0 : pixel blanc
si f'(i) != 0 : pixel en niveau de gris, plus |f'(i)| grand et plus sa couleur se rapproche du noir.

On obtient ainsi une image en niveau de gris correspondant au contour de notre image initiale.
de là, on peut commencer la reconnaissance de forme.

j'espère que j'ai pas été trop magistral !
si vous voulez plus d'explication...
a+
Messages postés
1329
Date d'inscription
vendredi 15 août 2003
Statut
Membre
Dernière intervention
16 juin 2010
2
hum pas mal :)

mais j'ai uun doute sur ta formule, ca setai pas plutot

f'(i) = (à peu prés égal) (f(i+1)-f(i-1))/2

?




_______________________


Omnia vincit labor improbus
Messages postés
70
Date d'inscription
jeudi 22 mai 2003
Statut
Membre
Dernière intervention
21 décembre 2005

si c'est ça !
en fait j'ai oublié le * :
1/2*(f(i+1)-f(i-1))
merci de la rectification ;) !
Messages postés
442
Date d'inscription
jeudi 4 avril 2002
Statut
Membre
Dernière intervention
11 août 2008

Votre truc la ça reviend a faire du bump maping a l'envers koi Eventuellement c'est ptete possible d'ajouter un traitement avec un filtre de convolution pour accentuer les bords ( le genre de filtre de photoshop 7). Ca peu rendre les bord plus faciles a detecter encore...

neodelphi
Messages postés
70
Date d'inscription
jeudi 22 mai 2003
Statut
Membre
Dernière intervention
21 décembre 2005

lol neodelphi, ça rien à voir avec le bump mapping !

Par contre est ce que tu peux nous éclairer un peu plus sur le calcul de la fonction de convolution d'une map ?
Messages postés
13
Date d'inscription
mardi 1 mars 2005
Statut
Membre
Dernière intervention
15 mars 2005

Moi j'ai déja essayer beaucoup de masque genre
derivee premiere
derivee seconde
laplacien
roberts sobel

j'ai une bonne image des gradients mais maintenant il faut que je puisse identifier les aiguilles idealement il me faudrait les coordonnées des droites correspondant aux aiguilles............. :)

ppour l'instant je vais essayer de voir ca avec une transformée de hough pour la detection de droite et je vais voir
d'ailleurs si un de vous aurait la source de cette transformée ca m'interesse fortement !!
merci a vous

mais plus ca va plus je me dit que c chaud !!!!!!!

FLO
Messages postés
1329
Date d'inscription
vendredi 15 août 2003
Statut
Membre
Dernière intervention
16 juin 2010
2
lol ca on se l'est dit tout de suite :)

c'est oik unn transforméede Hough ?

_______________________


Omnia vincit labor improbus
Messages postés
13
Date d'inscription
mardi 1 mars 2005
Statut
Membre
Dernière intervention
15 mars 2005

Alors la transformee de hough pour la detection de droites d'apres ce que je sais

c une droite dans le repere de l'image (x;y)
correspond a un point dans l'espace de hough (a;b)
ainsi on a directement l'equation y=ax+b

le probleme c de faire ressortir les aiguilles un maximum car l'image du cadran de la montre est genant.

A propos savez vous comment obtenir l'image des pixels qui ont bouge d'une photo a une autre ???

FLO
Messages postés
442
Date d'inscription
jeudi 4 avril 2002
Statut
Membre
Dernière intervention
11 août 2008

Bah je sais pas moi pour le bump maping... D'après ce que tu dit tu dérive les couleur, et le bump maping c'est un peu l'opération inverse : a partir d'un niveau de gris trouver le relief. fin bon aucune importance...

Sinon pour le filtre de convolution c'est je croi tu prend chaque pixel de ton image et tu applique un calcul a l'aide d'une matrice (le plus souvent 3x3)... Selon les valeurs de la matrice tu peut obtenir plusieur effet différent (le flou gaussien par exemple). Je n'en sais pas plus parcequ'en java ça le fait presk tout seul donc je sais pas trop mais je pense que ce genre d'info se trouve facilement.

neodelphi