bonjour tt le monde
j'ai une image qui contient un code DATAMATRIX, je dois parcourir l'image et en extraire le code, mais je ne sais pas par ou commencer. si vous pouvez m'aider??? Merci d'avance
bonjour tt le monde
j'ai une image qui contient un code DATAMATRIX, je dois parcourir l'image et en extraire le code, mais je ne sais pas par ou commencer. si vous pouvez m'aider??? Merci d'avance
Je ne suis pas sûr de comprendre...
Ton image est un code datamatrix, et tu dois le décoder ?
mon image contient le code datamatrix, donc je dois d'abord le détecter, l'extraire et puis le décoder. voila un exemple
C'est tout de suite plus clair avec une image.
As-tu déjà des idées pour extraire le code ? as-tu fais des essais ?
salut progfou,
je travail sur un sujet d'extraction de datamatrix et j ai le même problème que s.abdou
J 'ai appliqué un filtre de canny sur l'image, et puis j ai appliqué hough. J ai trouvé les lignes mais j arrive toujours pas à parcourir mon image et extraire juste la zone de datamatrix ayant la forme suivante:
101010
1xxxx1
1xxxx0
1xxxx1
1xxxx0
111111
X étant le contenu de la datamatrix, l'objectif est de trouver le contour L et n'extraire que la datamatrix (avec son contenu)
ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.
moi aussi on m'a conseiller d'utiliser le filtre canny
et voila le résultat(image jointe).mais le problème c'est que je dois extraire que le code datamatrix pour pouvoir le décoder après.
Voila les 2 lignes principales obtenues par une transformée de Hough (en utilisant la norme et l'angle du gradient):
Cela nous donne l'angle bas/gauche du cadre de la DataMatrix.
En se déplaçant le long de chaque ligne, on peut trouver les angles haut/gauche et bas/droite
Le 4ème angle haut/droit se trouve par une simple addition de vecteurs 2D.
![]()
ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.
merci pseudocode
c'est bien le résultat que je cherche.j'ai appliqué la transformé de hough ci-joint,
mais j'obtient pas le meme résultat; si vous pouvez m'envoyer le code de hough que vous avez utilisé.
Désolé je ne fais pas de Matlab.
D'après votre code, je pense que vous faites une transformée de hough standard => pour chaque pixel, incrémenter les accumulateurs pour tous les couples (theta,rho), avec theta variant entre 0 et 2PI
Ici il faut utiliser le fait que la ligne cherchée est continue, et donc limiter l'incrémentation a un seul couple (theta,rho)
- calculer le gradient local 2D pour un pixel G = (gx,gy)
- calculer la norme du gradient : norme = racine(gx²+gy²)
- calculer la direction du gradient: theta = Arctan(gy/gx)
- calculer la valeur de rho = x*cos(theta) + y*sin(theta)
- ajouter "norme" dans l'accumulateur du couple (theta,rho)
Ensuite cherchez les 2 accumulateurs avec les plus grandes valeurs, ce qui nous donne les deux couples (theta,rho) qui modélisent les deux droites
ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.
merci pseudocode, je vais essayer de rajouter des bouts de codes et je te tien au courant de mon résultat.
merci pseudocode, tu nous as beaucoup aider.
Pour l'instant jarrive à tracer les deux lignes qui forment le ''L'', mais je ne sais pas comment faire pour avoir les autres angles: gauche/haut; bas/droit; haut/droit.
comme je l'ai dit, tu peux te déplacer le long de chaque ligne. Chaque ligne peut etre modélisée sous forme d'un point d'origine O et d'un vecteur directeur D.
Dans notre cas:
O = le croisement des 2 lignes
D = vecteur (cos(theta),sin(theta))
Pour déplacer un point P le long de la demi-droite, on peut utiliser l'equation parametrique:
P(t) = O + t*D, avec t un réel positif
On cherche donc la plus petite valeur de "t" telle que P(t) soit hors de la DataMatrix, c'est à dire que la couleur du pixel correspondant ne soit plus noir. En pratique, on ne prend pas juste une seul pixel mais une moyenne (ou median, ou max) du voisinnage.
Une fois qu'on a fait cela pour chaque demi-droite, on obtient les deux angles haut/gauche et bas/droite. Le dernier angle doit fermer le parallélogramme => addition de vecteurs.
ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.
Partager