statistique liste avec elements faux

statistique liste avec elements faux - Algo - Programmation

Marsh Posté le 01-02-2022 à 14:40:20    

Bonjour,
 
Je suis mauvais en algorithmique et j'ai une problématique à résoudre qui je pense est assez simple, mais je ne voudrais pas faire ça de la mauvaise façon.
 
J'ai un tableau avec des nombres entiers croissants.
 
Par exemple  [ 3, 3 , 3 , 4 ,4 ,4 ,5 , 5 ,5 ... ]
 
Le point de départ n'est pas important, mais ça doit être croissant ensuite.
 
le cas idéal que je dois avoir c'est 9,10 ou 11 chiffres identiques continus, puis l'incrément suivant etc...
 
Par exemple  
 
[ 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 3 , 3 , 3 , 3 , 3  , 3 , 3 , 3 , 3 , 3 , 4 , 4 , 4  ,4 , 4 , 4 , 4 , 4 , 4 , 4  ... ]
 
Ce qui me permettrait d'en ressortir 10(2)  , 10(3 ) , 10(4) , etc...
 
Sauf que ma capture donne des éléments faux.
 
Les éléments faux peuvent être -1 , ou un nombre totalement incohérent, ou encore une suite qui saute.
 
Par exemple  
 
 
[ 2 , 2 , -1 , 2 , 8 , 2 , 2 , 2 , 2 , 2 , 3  , 3 , 3 , 3 , 17 , 3 , 5 , 5 , 5  ,5 , 5 , 5 , 5 , 5 , 5 , 5  ... ]
 
ce qui devrait me donner comme résultat : 10(2)  ,6(3) , 0(4) , 10(4).
 
Je ne vois pas bien comment aborder la chose, parce qu'à chaque fois que je veux aborder l'algo et que je veux écrire quelque chose, je m'aperçois qu'il y a des cas que je n'aurai pas traité, je me dis donc que j'aborde mal le sujet ( de façon trop empirique ). Existe-t-il une approche mathématique permettant de résoudre cela , il semblerait que cela fasse appel à la notion de statistique ( domaine dans lequel je suis une bille :o )
 
Concrètement, ici, j'ai timecodé des images vidéos, que j'ai capturé ensuite à haute fréquence ( vidéo à 24fps , filmée à 240fps ) , le but est de détecter les saccades et drop d'image, je capture en OCR avec opencv et tesseract le texte en incrustation afin de compter la durée de chaque image, mais tesseract reconnait mal mon texte ( pourtant du arial simple ) et me génère beaucoup de faux.
 
Sur une vidéo fluide, je devrais avoir chaque timecode 10 fois  (l'image 00:00:03.17 se répète 10 fois sur la vidéo à 240fps )
 
 
Merci d'avoir pris le temps de lire, et je comprendrais le 0 réponse, c'est assez spécifique :o ( je vais bien sûr chercher de mon côté, mais si on peut m'orienter sur la méthodologie, ça m'irait bien ).

Reply

Marsh Posté le 01-02-2022 à 14:40:20   

Reply

Marsh Posté le 01-02-2022 à 14:44:10    

juste pour info, voici un jeu de capture que j'ai fait :  
 
https://pastebin.com/0rihP5wk
 
Ca se trouve ça doit pouvoir se faire avec excel

Reply

Marsh Posté le 01-02-2022 à 15:22:40    

if value < min or value < max then
   container 0 count := container  count + 1
 
end if;

Reply

Marsh Posté le 01-02-2022 à 17:36:01    

Si j'ai bien compris,
tu crées une variable X qui va etre la 1ere valeur dans ton tableau X = tab[0] (dans ton dernier exemple ça sera 2)
et un tableau Y pour dire combien il y a d'éléments par valeur
on initialise tous les elements de Y à 0
ensuite tu parcoures le tableau :
 

Code :
  1. for(index=0 to nbDonnées-1)
  2.      si tab[index] <= X alors incrementer Y[X]
  3.      si tab[index] > X alors X=tab[index]; incrementer Y[X]

Reply

Marsh Posté le 01-02-2022 à 17:39:53    

donc logiquement, les valeurs  
[40, 40, 40, -1, 42, -1, 41, 41]
seront equivalentes à
[40, 40, 40, 40, 42, 42, 42, 42]
 
pas sûr que c'est ce que tu veux

Reply

Marsh Posté le 01-02-2022 à 17:43:55    

je crois que j'ai capté :o
 

Code :
  1. for(index=0 to nbDonnées-1)
  2.      si tab[index] != (X+1) alors incrementer Y[X]
  3.      si tab[index] ==(X+1) alors X=tab[index]; incrementer Y[X]


 
en plus simplifié :

Code :
  1. for(index=0 to nbDonnées-1)
  2.      si tab[index] ==(X+1) alors incrementer X
  3.      incrementer Y[X]


 
ça marche tant que l'incrementation n'est que de +1
Par contre, si on a la liste
[40, 40, 40, 40, 42, 42, 42, 42, 43, 43]  
ça va etre interpreté comme
[40, 40, 40, 40, 40, 40, 40, 40, 40, 40] // tant qu'il ne trouvera pas 41


Message édité par citation le 01-02-2022 à 18:30:52
Reply

Marsh Posté le 02-02-2022 à 08:27:12    

Bonjour,
 
Merci pour ces réponses.
 
En attendant j'ai avancé de mon côté, j'ai réussi à pondre un bout de code permettant d'approcher le résultat, mais il y a quelques erreurs dedans ( qui n'arrivent pas car les cas ne sont pas présents dans mon jeu d'essai ). Je pense que je vais travailler sur l'OCR et / ou sur le timecode incrusté dans la vidéo pour améliorer la reconnaissance OCR avant d'essayer de détecter des erreurs qui pourraient ne pas en être.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed