Analyser une image

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
Jenova
Messages : 96
Inscription : mar. 09/mars/2004 10:27

Analyser une image

Message par Jenova »

Salut tout le monde :D
J'aurais bien besoin de vos lumières encore une fois :idea:
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 :mrgreen: :oops:
Avatar de l’utilisateur
cederavic
Messages : 1338
Inscription : lun. 09/févr./2004 23:38
Localisation : Bordeaux

Re: Analyser une image

Message 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 :)
Avatar de l’utilisateur
Jenova
Messages : 96
Inscription : mar. 09/mars/2004 10:27

Re: Analyser une image

Message 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 :mrgreen:
Si il n'y a que des sites anglais je suis bien dans la mélasse alors, moi et l'anglais ça fait 8 :oops:
lepiaf31
Messages : 510
Inscription : dim. 25/mars/2007 13:44
Localisation : Toulouse, France
Contact :

Re: Analyser une image

Message par lepiaf31 »

aurait tu deux une image scannée et son équivalent non scannée ?
Avatar de l’utilisateur
Cool Dji
Messages : 1126
Inscription : ven. 05/sept./2008 11:42
Localisation : Besançon
Contact :

Re: Analyser une image

Message 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 !!
Only PureBasic makes it possible
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: Analyser une image

Message par Backup »

...
Dernière modification par Backup le mar. 19/août/2014 11:56, modifié 1 fois.
Avatar de l’utilisateur
Fig
Messages : 1176
Inscription : jeu. 14/oct./2004 19:48

Re: Analyser une image

Message 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.
Il y a deux méthodes pour écrire des programmes sans erreurs. Mais il n’y a que la troisième qui marche.
Version de PB : 6.00LTS - 64 bits
Avatar de l’utilisateur
venom
Messages : 3137
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

Re: Analyser une image

Message 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 ?








@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: Analyser une image

Message 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 :)
Avatar de l’utilisateur
venom
Messages : 3137
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

Re: Analyser une image

Message 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 ? :D

@Dobro

oui pas faux a tester.






@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
Avatar de l’utilisateur
Jenova
Messages : 96
Inscription : mar. 09/mars/2004 10:27

Re: Analyser une image

Message par Jenova »

Grand merci à tout le monde, je vais creuser la dessus ce week-end et faire quelques tests :D
Répondre