Page 1 sur 1
Analyser une image
Publié : ven. 26/févr./2010 11:33
par Jenova
Salut tout le monde
J'aurais bien besoin de vos lumières encore une fois
En fait voila ce que j'aimerai pouvoir faire :
à partir d'une acquisition de scanner, comparer l'
image scannée avec un lot d'
image que j'ai sur mon disque dur et essayer de déterminer l'
image qui correspond le plus sachant bien évidemment que mon
image scannée ne correspondra pas à 100% avec celle de mon HDD (scan oblige, autre luminosité, autre ton, pliures dans le papier, orientation non parfaite, etc...)
Qu'elles sont les meilleures méthodes selon vous pour arriver à un tel prodige ?
J'ai déjà fait une recherche sur le net mais en plus de ne pas être sur que certaines méthodes soient adaptées à mon cas, je dois bien avouer que je n'y ai pas compris grand chose

Re: Analyser une image
Publié : ven. 26/févr./2010 11:47
par cederavic
la reconnaissance d'
image complex n'est pas une tache simple (meme celle d'
image simple remarque...). Ca depend du type de tes images : Beaucoup de formes geometrique? Plutot brouillon? Couleurs? Nuances? Plusieurs plan? etc...
Y a pas mal de sujet sur le net (surtout en anglais), essaye de cibler surtout la reconnaissance de forme dans tes recherches

Re: Analyser une image
Publié : ven. 26/févr./2010 12:08
par Jenova
Salut

En fait c'est pour toutes sortes d'images, de celles d'un paysage ciel/lac/foret à celle d'un bulldozer faisant une parade en ville en passant par l'
image macro d'une mouche qui rigole sur un tronc d'arbre

Si il n'y a que des sites anglais je suis bien dans la mélasse alors, moi et l'anglais ça fait 8

Re: Analyser une image
Publié : ven. 26/févr./2010 12:10
par lepiaf31
aurait tu deux une image scannée et son équivalent non scannée ?
Re: Analyser une image
Publié : ven. 26/févr./2010 12:20
par Cool Dji
Hello,
Il n'y a vraiment que la reconnaissance de forme qui puisse t'aider.
Car un scan peut très bien avoir une taille différente de l'image originale.
Même sans parler de scan, prends 2 photos numérique d'un paysage.
Prends une photo en 1600*1200 et la même photo avec une résolution différente en pivotant légèrement ton objectif (2 ou 3 degrés).
A vue d'oeil, ce sont les mêmes photos mais difficile de les comparer sans algorithme vraiment évolué (ne compte même pas sur une comparaison point par point).
Tu pourrais peut etre réussir à trier sur la proportion de couleur (bleu, vert, noir, rouge...) contenues dans chaque image.
Au millénaire dernier, j'avais bossé sur une comparaison fractale de zones urbaines.
Les images devaient être en noir et blanc (O ou 1) et c'était l'organisation des vides qui permettait de comparer tout ça. Mais je serai incapable de t'en dire plus...
Bon courage !!
Re: Analyser une image
Publié : ven. 26/févr./2010 12:23
par Backup
...
Re: Analyser une image
Publié : ven. 26/févr./2010 18:51
par Fig
Si ma mémoire est bonne, il faudrait un réseau de neurones artificiel type "perceptron".
C'est complexe à mettre en oeuvre, tu dois "l'entrainer" sur l'image que tu recherche (cad lui proposer des images approchante, que tu classerai comme similaire, et d'autre comme différente, puis faire évoluer les valeurs des synapses par rétropropagation de gradient pour obtenir la bonne réponse.)
c'est une méthode utilisée pour lire les adresses sur les lettres à la poste... Réseau entrainé pour la reconnaissance des lettres et chiffres manuscrits.
Bref, dans ton cas ce n'est pas réalisable, l'entrainement serait trop long pour chaque image avant d'être satisfait. (je te laisse imaginer, un neurone par pixel en entrée, dans couches cachées de neurones puis en sortie 2 neurones ... Des liaisons innombrable entre chaque couche... )
Par contre, je crois qu'il existe des programmes qui sont capable de reconnaitre des images prise par le même type d'appareil photo le même jour, dans une même pièce... etc... en fonction de la luminance, couleur etc... Mais, si toutes tes images ne proviennent pas du scanner, mais de source différente, ca va être difficile, je pense.
Je propose que dans tous tes scannes tu trace les angles en noir. Ca sera un repère pour que le programme remette l'image droite.
Ensuite, le prog partage en zone dont tu calcules la moyenne. tu fais pareil pour tes images sur le hdd avec les même formes de zones. Et tu les compare, avec un peu de chance ça peut marcher je pense.
Re: Analyser une image
Publié : ven. 26/févr./2010 21:27
par venom
Pas con l'idée de Dobro ( la plus abordable je pense )
mais il reste le problème de luminosité non car un scanner bas de gamme doit perdre en qualité non ?
@++
Re: Analyser une image
Publié : ven. 26/févr./2010 22:21
par Backup
la luminosité ne change pas le pourcentage de R de V ou de B
elle change leur valeurs mais de façon globale !
une couleur R=255,V=125,B=100 ==>
couleur
plus foncé aura comme valeur R=235 , V=105 , B=80==>
couleur
pour cette exemple j'ai retiré 20 points a chaque composante , ce qui est énorme !
on voit que la couleur plus foncé va garder la proportion de rouge , de vert et de bleu
si on
compare le rouge avec le Vert
couleur clair
255-125=130 (R-V=130)
la couleur foncé :
235-105=130 (R-V=130)
si on
compare le V avec le bleu
couleur clair
125-100=25
la couleur foncé
105-80=25 aussi !
il suffit de faire ce genre de verifs sur plusieurs points eparpillé sur l'
image
et de faire une moyenne des resultats trouvé pour en deduire si l'
image est la meme !
plus on aura de points de vérif, moins on se trompera
en tout cas la technique de vérification de plusieurs point marcherai tres bien pour mettre en évidence la présence de plusieurs images identiques dans un dossier par exemple

Re: Analyser une image
Publié : ven. 26/févr./2010 22:22
par venom
après si ça peut aidé voici un code qui récupéré chaque pixel et qui re dessine complètement l'
image.
Code : Tout sélectionner
Structure img
x.l
y.l
color.l
EndStructure
UseJPEGImageDecoder()
file$ = OpenFileRequester("fichier image", "", "image |*.bmp;*.jpg", 0) ; <---- ont choisit une image bitmap
If LoadImage(1, file$) ; <--- ont charge l'image du dessus
If StartDrawing(ImageOutput(1))
width = ImageWidth(1) ; <--- ont prend la largeur de l'image
height = ImageHeight(1) ; <--- ont prend la hauteur de l'image
size = width * height ; <--- ont multiplie la largeur par la hauteur pour savoir le nombre de pixels au total
Dim Array.img(size)
; <------------------------- ont récupère la couleur de chaque pixel -----------------------
i = 0
For y = 0 To height - 1
For x = 0 To width - 1
color = Point(x, y)
Array(i)\x = x
Array(i)\y = y
Array(i)\color = color
i + 1
Next
Next
; <------------------------------------------------------------------------------------------
StopDrawing()
EndIf
EndIf
If OpenWindow(0, 0, 0, ImageWidth(1), ImageHeight(1), "") ; <------------------------- ont ouvre une fenêtre a la taille de l'image
If CreateImage(0, ImageWidth(1), ImageHeight(1)) ; <------------------------- ont charge l'environnement image
If StartDrawing(ImageOutput(0))
For i = 0 To size - 1
i = 0
For y = 0 To height - 1
For x = 0 To width - 1
i + 1
Plot(Array(i)\x = x, Array(i)\y = y, RGB(Red(Array(i)\color), Green(Array(i)\color), Blue(Array(i)\color))) ; <----- ici ont redessine pixel par pixel sur le Drawing()
Next
Next
Next
StopDrawing()
EndIf
EndIf
ImageGadget(0, 0, 0, 0, 0, ImageID(0))
Repeat
EventID = WaitWindowEvent()
Until EventID = #PB_Event_CloseWindow
EndIf
; <------------------------- et ont quitte
mais exécuter cette opération sur des centaine d'
image risque d'être un peut fastidieux pour la machine non ?
@Dobro
oui pas faux a tester.
@++
Re: Analyser une image
Publié : sam. 27/févr./2010 4:19
par Jenova
Grand merci à tout le monde, je vais creuser la dessus ce week-end et faire quelques tests
