Recherche d'un algorithme pour scanner une image sur une zone définie.

cerber943 Messages postés 32 Date d'inscription lundi 20 janvier 2003 Statut Membre Dernière intervention 26 octobre 2006 - 25 oct. 2006 à 15:04
cerber943 Messages postés 32 Date d'inscription lundi 20 janvier 2003 Statut Membre Dernière intervention 26 octobre 2006 - 26 oct. 2006 à 12:43
Bonjour,

Voici mon problème :
Je cherche à analyser une image découpée en "zones".
Je veux comparer cette image à une autre quasiment identique et détecter dans quelle "zone" il y a eu des modifications.
Ces dites "zones" ne sont pas forcément rectangulaires et c'est là qu'est mon problème.
Dans un premier temps je serais déja assez content de les caractériser par seulement 4 points A,B,C,D avec leurs coordonnées respectives xa,ya,xb,yb,xc,yc,xd,yd.
Je cherche donc à faire un objet par zone à qui je passerais par exemple les coordonnées des 4 points en paramètre.
J'utiliserais ensuite une fonction analyseImgOrigine et une fonction analyseImgFinale.
Enfin une fonction analyseDifferences pourrant me retourner un tableau de coordonnées des pixels modifiés dans cette zone par exemple.
Mon problème est de trouver comment implémenter les fonctions analyseImgOrigine, analyseImgFinale (identique à la précédente) et analyseDifférences.

J'imagine que ce genre de problème a déja été envisagé, on ne doit pas toujours chercher à observer une partie rectangulaire d'une image... en tout cas j'espère.
Si vous aviez des idées d'algo à utiliser, de fonctions déja existantes, de la façon dont je devrais stocker les pixels de cette zone qui n'est pas rectangulaires, ca serait génial !

Merci d'avance pour tout aide qui pourrait m'être apporté :)

3 réponses

TMONOD Messages postés 256 Date d'inscription mardi 25 novembre 2003 Statut Membre Dernière intervention 6 novembre 2009 1
26 oct. 2006 à 09:16
Bonjour,

Je suis prêt à te donner un coup de main si tu m'en dis un peu plus :
- Es-ce que t'on problème s'aparente à une détection d'intru sur une webcam ?
- Est-ce qu'il s'agit d'une reconnaissance de forme ("...presque identique...") ?

Tu peux déjà t'orienter techniquement vers deux sortes d'algos :
- La FFT (Fourrier...) pour la reconnaissance de contours
- Les réseau neuronaux (perceptrons...) pour la reconnaissance de formes plus "floue".

Tiens nous au jus...

JC

Jcbé[^]
0
cerber943 Messages postés 32 Date d'inscription lundi 20 janvier 2003 Statut Membre Dernière intervention 26 octobre 2006
26 oct. 2006 à 09:56
Salut et merci de ta réponse
La reconnaissance de forme m'intéresse mais je pense que cette solution est trop complexe pour mon niveau.
Je pense que mon problème est bien plus simple. Je veux "simplement" stocker une image dans un TBitmap, mais ne pas me soucier de la totalité de l'image. Je souhaiterais ne prendre en considération que les pixels situés dans une zone définie par un ensemble de points (4 me suffirait pour commencer). Ensuite, je créerais des fonctions permettant de comparer 2 images ayant la même zone. Cela me permettrait de savoir le les images sont identiques sur la zone définie.
Par exemple imaginons un TBimap de 50x50.
Je défini une zone représentée par le triangle constitué par les points A(10,10) ; B(30,10) et C (20,30) par exemple.
Je souhaite créer un objet permettant :
<li>de définir cette zone</li><li>de stocker mon bitmap</li><li>de comparer mon bitmap à un objet identique et comparer (si les zones sont identiques) les pixels situés à l'intérieur de cette zone afin de savoir si les pixels dans cette zones sont en tout points identiques</li>Je ne veux pas qu'on me fasse le travail, mais simplement être guidé dans la bonne direction.
J'envisageait créer un tableau de bits de la taille de mon Canvas et dont les bits seraient à 1 lorsqu'ils sont dans la zone définie. Mais je ne sais pas trop s'il existe une méthode adaptée pour mettre tous les bits du tableau à 1 lorsqu'ils sont dans cette zone ? y a-t-il des astuces utilisant les régions et un genre de fonction FillRegion ?
Si je disposais de ce tableau il me serait simple de comparer les pixels des 2 images si leurs coordonnées dans le tableau de bits est à 1.

J'epère avoir été assez clair et je suis ouvert à toute autre suggestion : ce n'est que l'aboutissement de mon raisonnement actuel qui est loin d'être celui d'un professionnel...

P.S: Je serais néanmoins intéressé par des infos sur la détection de forme via FFT si tu as des exemples à partir d'image( et non de Webcam) accessoirement mais cela ne concernera pas ce Post.

A+
0
cerber943 Messages postés 32 Date d'inscription lundi 20 janvier 2003 Statut Membre Dernière intervention 26 octobre 2006
26 oct. 2006 à 12:43
Actuellement tout ce que je cherche c'est ce que je t'ai expliqué ci dessus :
Je souhaite créer un objet permettant :
<li>de définir cette zone</li><li>de stocker mon bitmap</li><li>de
comparer mon bitmap à un objet identique et comparer (si les zones sont
identiques) les pixels situés à l'intérieur de cette zone afin de
savoir si les pixels dans cette zones sont en tout points identiques</li>Comment créer un tableau[x,y] de bits dont les bits sont à 0 sauf ceux à l'intérieur d'une zone définie par 3 ou 4 points de coordonnées (x,y) ?
C'est actuellement ca ma grande question.
Quand aux régions, bien qu'elle ne soient pas adaptées qu'aux découpage des fenêtres (vu sur le  très bon tutoriel qui est disponible sur ce site), j'ai vu qu'il était possible de s'en servir pour dessiner sur un canvas, mais pas apparemment pour découper une image.
Et même si cela me permettait de découper une image et la stocker dans un tbitmap, il faudrait avoir une couleur de fond type couleur transparente pour arriver à comparer mes 2 images.
Le tableau de bits semble plus adapté pour moi, mais peut être que j'ai tors.

En tout cas ce que je cherche actuellement serait :
Comment mettre tous les bits d'un tableau[x,y] à 1 si x,y est dans la zone définie par les points A,B,C (et D si possible) ?
Merci d'avance ;)
0
Rejoignez-nous