Algorithme d'extraction de courbe

Algorithme d'extraction de courbe - Divers - Programmation

Marsh Posté le 20-09-2010 à 10:12:35    

Bonjour,
 
Je suis en train d'essayer de créer un petit script qui puisse aider à automatiser le boulot qui a, pour le moment, été jeté sur les pauvres stagiaires de chez nous (moi même étant ex-stagiaire, je me sens assez concerné :D).
Donc, nous recevons des graphiques sous forme de PDF, à partir desquels nous devons extraire une certaine courbe qui sera ensuite rentrée (sous forme d'image) dans un programme. Pour le moment, quand les graph arrivaient, on demandait au pauvre stagiaire de sortie paint et de nous sortir la courbe en question, ce qui n'est ni marrant ni intéressant.
 
Voici un example des graphs qu'on obtient, sur le dernier j'ai dessiné en rouge la courbe que nous voudrions obtenir :
 
http://hfr-rehost.net/preview/self/pic/fbaa6f23eb1fe81f500483fb7daa2c1d2008b5b5.png
 
La logique est la suivante :  
- Tout ce qui est orange ne doit pas être pris en compte.
- Tout ce qui est hachuré verticalement, ne doit pas être pris en compte
 
La 1ère condition ne me pose aucun soucis (suffit de remplacer tout ce qui est orange par du blanc). La 2ème par contre, j'ai beaucoup de mal à voir.
J'ai pensé utiliser un algo utilisant la transformée de Fourier, vu que ces droites verticales sont périodiques mais à mon avis je vais avoir beaucoup de mal à m'en sortir vu la forme des graphs.
 
Vous avez une idée?
 
Merci d'avance


Message édité par esox_ch le 21-09-2010 à 10:19:01

---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 20-09-2010 à 10:12:35   

Reply

Marsh Posté le 20-09-2010 à 13:46:32    

si tu veux repcup qu  le jaune, pourquoi tu parts pas du pixel à coté du 0,0 puis tu montes tant que le pixel n'est pas noir, quand tu y es, tu reviens à y=0, tu avances x d'un pixel etc etc..


Message édité par rengzehn le 20-09-2010 à 13:46:52
Reply

Marsh Posté le 20-09-2010 à 15:09:11    

Ca marche pas si tu démarre dans du jaune hachures

Reply

Marsh Posté le 20-09-2010 à 15:35:28    

J'avais pensé à la même technique.  
 
Joel F -> sauf si dans ces graphiques, on est sûr que c'est impossible que ça commence par du jaune hachuré.
 
Par contre, je suis pas sûr que si on rencontre un pixel noir, on doive s'arrêter : en effet, si la partie verte est plus basse que la partie hachurée (ex : graphique 3). Cela dit, je suis pas sûr d'avoir bien compris comment était généré la courbe rouge. Les 3 premiers graphiques ont un lien avec le 4ième :??:


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 20-09-2010 à 17:44:09    

Désolé si je n'ai pas été clair.
Non chacun des graphs est indépendant des autres, et en effet la solution de rengzehn ne marchera pas car il faut aussi que j'inclus le vert et que la division entre vert et jaune est noire.

 

Par contre je pourrais éventuellement trouver une manière de supprimer la limite entre vert et jaune (en la mettant jaune par exemple), puis repasser une 2ème fois pour detecter le bord.
Là je fais des tests de différents algorithmes que j'ai élaborés (et qui tentent de détecter la présence ou non de lignes verticales). Mais si vous avez des idées, n'hésitez pas..

 

merci

 

Edit : Même si c'est assez peu probable qu'on démarre dans le jaune hachuré (de part la nature des données et la signification de l'hachurage), ce n'est malheureusement pas interdit, je préférerais donc passer par une méthode qui parte pas de ce postulat


Message édité par esox_ch le 20-09-2010 à 17:45:35

---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 21-09-2010 à 09:02:59    

Une transformées de Hough de base, puis tu supprimes tous les points qui appartiennent à des lignes verticales.

Reply

Marsh Posté le 21-09-2010 à 09:06:31    

Peut-être j'ai mal compris ce que tu entends, mais mon but n'est pas de supprimer les lignes verticales.. Du coup je vois pas à quoi me servirait la transf. de Hough


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 21-09-2010 à 10:14:36    

au fait, on écrit "Algorithme" (vire le Y, ça me fait mal au yeux) :(


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 21-09-2010 à 10:19:16    

Sorry, fixed :jap:


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 22-09-2010 à 21:36:54    

Curieux qu'on vous file des courbes mais pas les données...

Reply

Marsh Posté le 22-09-2010 à 21:36:54   

Reply

Marsh Posté le 22-09-2010 à 21:40:09    

ça fait partie d'un document PDF publié par une entitée de l'état. On pourrait leur demander les valeurs (à chaque année) mais ça risquerait de nous faire perdre plus de temps que redessiner la courbe à la main.


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Sujets relatifs:

Leave a Replay

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