Accélérer un traitement d'image : par découpe ou non ?

Ulrick - 12 mars 2016 à 14:52 - Dernière réponse : Whismeril 12024 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 20 septembre 2018 Dernière intervention
- 14 mars 2016 à 17:57
bonjour,
débutant je me lance dans le traitement d'image, pour optimiser la vitesse d’exécution du traitement des image, je pence découper l'image en plusieurs blocs pour traiter simultanément chaque bloc en multi-thread puis la ré-assemblé.
Pour cela j'aimerais savoir si pour découper une image il est plus rapide d'utiliser bitmap.clone ou de parcourir chaque pixel en utilisant lockbits ?
Afficher la suite 

Votre réponse

20 réponses

Whismeril 12024 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 20 septembre 2018 Dernière intervention - 12 mars 2016 à 15:25
0
Merci
Bonjour,

La discussion juste avant la tienne dans le forum traité justement de ça.....
Y a tu seulement jetté un œil?
Commenter la réponse de Whismeril
0
Merci
bien-sur, j'y est même poser la question et il ma était suggéré d'ouvrir une autre discussion.
visiblement il existe plusieurs méthode j'aimerais juste connaitre la plus rapide afin d'optimiser au mieux la rapidité du traitement d'image.
Whismeril 12024 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 20 septembre 2018 Dernière intervention - 12 mars 2016 à 18:35
Ok
Commenter la réponse de Ulrick
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionModérateurStatut 11 avril 2018 Dernière intervention - Modifié par ucfoutu le 12/03/2016 à 18:14
0
Merci
Bonjour,
Je ne crois pas que découper une image, traiter dans des fils distincts les découpes, puis ré-assembler le tout soit une bonne idée.
La découpe elle-même, puis le ré-assemblage vont selon moi, à eux seuls être "gourmands".
Et comment penses-tu, par ailleurs, récupérer les "sous-images" traitées dans des fils distincts ? En passant par un tremplin supplémentaire ?
Je pense (mais cela n'engage que moi) qu'il vaut mieux travailler directement sur un tableau de dibits construit à partir de l'image à traiter. Je ne sais si VB.Net propose mieux, mais sous VB6, on se sert à cet effet de la fonction GetDIBits de la livraire gdi32 de l'Api de Windows.
Tu peux par contre essayer de gagner en vitesse d'exécution en évitant l'affichage pendant toute la durée des modifications et en ne rafraichissant qu'in fine.
Mais ce n'est, une fois encore, que mon avis.
________________________
Nul ne saurait valablement coder ce qu'il ne saurait exposer clairement.
je pence redessiner les sous image directement après leur traitement dans un bitmap puis l'afficher une fois entièrement reconstitué, pour ce qui est de GetDIBits l’équivalent en vb.net et lockbits que j'utilise déjà.
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionModérateurStatut 11 avril 2018 Dernière intervention > Ulrick - 12 mars 2016 à 19:17
Oui ? et à quel "coût" de "récupération" (pour les assembler) de tous ces bitmaps ?
As-tu essayé ? Essaye déjà sans découpe : en envoyant ton traitement total dans un fil distinct et en le récupérant.
Reviens ensuite nous "dire" ...
oui, j'ai déjà essayer et la je développe la découpe. je te redit après avoir terminer je pourrais comparer.
Commenter la réponse de ucfoutu
Whismeril 12024 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 20 septembre 2018 Dernière intervention - 12 mars 2016 à 18:42
0
Merci
Il existe des bibliothèques de traitement d'image gratuite (j'ai plus le nom en tête).
On les a testées en C++.Net pour soustraite deux images successives, faire un barycentre des différences, zoomer sur le barycentre le tout en fausse couleur pour bien voir les écarts et sortir une image contenant quatre quadrants, l'image brute le résultat du traitement ci dessus, un étalement de l'image brute sur 12 bits, si toute l'amplitude n'était pas utilisée, et tout un tas d'infos en textes dans le dernier.

Tout ça à 75hz, et juste l'incrustation du texte prenait environ 1/3 du temps.

Le faire en C++ a permis de gagner du temps principalement sur le texte
Whismeril 12024 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 20 septembre 2018 Dernière intervention - 12 mars 2016 à 22:33
Ce que je voulais dire, c'est que c'est une bibliothèque .Net, donc utilisable avec VB.Net et qu'à part l'incrustation de texte elle fonctionne vite.
Lundi je retrouve le nom
Whismeril 12024 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 20 septembre 2018 Dernière intervention - 14 mars 2016 à 11:33
bonjour, merci pour cette bibliothèque qui semble bien garni et bien documenter.
Whismeril 12024 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 20 septembre 2018 Dernière intervention - 14 mars 2016 à 17:57
De rien
Commenter la réponse de Whismeril
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionModérateurStatut 11 avril 2018 Dernière intervention - Modifié par ucfoutu le 12/03/2016 à 19:13
0
Merci
Une autre solution pourrait être de travailler, non sur le bitmap, mais sur un objet stdpicture (on évite ainsi les lenteurs d'affichage) puis d'affecter le résultat au contrôle de destination


EDIT je modifie le titre :
Tu n'en es pas à découper une image, mais à déterminer si une telle découpe est susceptible d'accélérer ton traitement !

________________________
Nul ne saurait valablement coder ce qu'il ne saurait exposer clairement.
Commenter la réponse de ucfoutu
0
Merci
je vais y jeté un œil, merci pour le tuyau
Commenter la réponse de Ulrick
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionModérateurStatut 11 avril 2018 Dernière intervention - 12 mars 2016 à 20:49
0
Merci
Je ne veux pas aller au dodo sans par ailleurs appeler ton attention sur les "mésaventures" bien évidemment très prévisibles (c'est un euphémisme) d'un traitement par "petits morceaux" dans le cas de certains traitements d'image, parmi lesquels (je vais me contenter de ne citer que les plus évident)s : les contrastes, les flous, les détourages, les ajouts de "bruit", les "adoucissements", des effets divers (postérisation, pshychédélisation, etc ...).
effectivement je perd un peut de temps a travailler en découpe, de plus comme tu me le signal en cas d'ajouts d'effet le résultat risque de ne pas être uniforme
Commenter la réponse de ucfoutu
cs_Le Pivert 5351 Messages postés jeudi 13 septembre 2007Date d'inscriptionContributeurStatut 20 septembre 2018 Dernière intervention - 13 mars 2016 à 11:00
0
Merci
Bonjour à tous,

voici un exemple de rapidité avec ou sans utilisation de lockbits. IL y a un exemple à télécharger:

http://www.vb-helper.com/howto_net_lockbits_image.html
salut, merci pour l'exemple. j'utilise déjà lockbits avec marshal.copy j'ai vue une sacrée différence par rapport a get et set pixel de bitmap.
Commenter la réponse de cs_Le Pivert

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.