Bonjour à tous,
J'ai réaliser (enfin j'ai plutôt compiler les infos) un petit script avec un hash perceptuelle (Dhash) afin de reconnaitre si une image est semblable à une autre.
Le code fonctionne mais j'ai un problème de performance. Pour analyser 2800 images (qui se trouvent en mémoire vive "/tmp/ ..." ) cela me prend +/- 1m20 soit 35 images à la seconde.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40 #!/bin/bash #passage des variables en dehors de la boucle while shopt -s lastpipe #recherche des images dans le répertoire for image in /tmp/seb/deux/test/* do #initialisation des variables hash="" i=0 #convertir l'image et récupérer la couleur convert "$image" -resize 9X8\! -colorspace Gray txt:- | tail -n +2 | tr -cs '0-9.\n' ' ' | while read x y r g junk; do #algorythme DHASH case $i in "0") precedent=$r ((i++));; [1-7]) if [ "$precedent" -gt "$r" ] then hash=$hash"1" else hash=$hash"0" fi precedent=$r ((i++));; "8") if [ "$precedent" -gt "$r" ] then hash=$hash"1" else hash=$hash"0" fi i=0;; esac done #calcul de la distance de Hamming entre 2 images distance=0 left=$hash #image à comparer à : right="0101110100000000010110000000000000000000000000000000000000000001" for ((j=0; j<${#left}; j++));do [[ "${left:j:1}" == "${right:j:1}" ]] || (( "distance++")) done echo "difference est ${distance}" done
Y-a-t-il moyen optimiser cela ou dois-je changer de langage de programmation? Lequel? Le but étant que ce petit script soit le plus rapide possible.
Bonne soirée








Répondre avec citation


N'oubliez pas de consulter 



pour l'effort (motivé de noël 

Partager