begin process at 2012 02 13 23:29:16
  Trouver un code source :
 
dans
 
Accueil > Forum > 

VB.NET et VB 2005

 > 

Divers

 > 

Débutants

 > 

Algorithme lent pour inverser une image


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Algorithme lent pour inverser une image

lundi 30 avril 2007 à 22:17:58 | Algorithme lent pour inverser une image

GrandGarfield

Bonjour,

je commence à developper ma première application en vb avec visual basic 2005 express.
Je cherche à faire un logiciel pour faire du traitement d'image basé sur la morphologie mathématique.
Pour me faire la main je commence par coder les fonctions de base (inversion, binarisation, seuillage ... etc)
J'ai écrit le code ci-dessous pour inverser l'image mais je trouve son execution un peu trop longue et je n'ose pas imaginer ce que ça va donner qd j'aurais des fonctions bien plus compliquées...

Pourriez-vous me dire ce qui fait que cela prend du temps et si on peut l'améliorer ?

Autre question, je travaille comme le code le montre avec des bitmaps, pour un bon nombre de fonctions je n'aurai à travailler qu'avec des images binaires ou en niveaux de gris (256).
Y'a t-il un format plus adapté que je pourrais simplement manipuler comme un tableau à deux dimensions avec dans chaque case le niveau de gris du pixel sans avoir à passer par le argb à chaque fois ?

Merci d'avance

Code :


        Dim image1 As Bitmap
        Dim x As Integer
        Dim y As Integer
        Dim c As Color
        Dim c2 As Color
       
       Cursor = System.Windows.Forms.Cursors.WaitCursor

        image1 = New Bitmap(OpenFileDialog1.FileName)

        For x = 0 To image1.Width - 1
            For y = 0 To image1.Height - 1
                c = image1.GetPixel(x, y)
                c2 = Color.FromArgb(255 - c.R, 255 - c.G, 255 - c.B)

                image1.SetPixel(x, y, c2)
            Next
        Next

        Dim NewMDIChild As New Form()
       

        NewMDIChild.MdiParent = Me
        NewMDIChild.Text = "Image inversée"
        NewMDIChild.BackgroundImage = image1
        NewMDIChild.BackgroundImageLayout = ImageLayout.Stretch

        NewMDIChild.Show()

        Cursor = System.Windows.Forms.Cursors.Default

lundi 30 avril 2007 à 22:31:52 | Re : Algorithme lent pour inverser une image

GrandGarfield

Au temps pour moi la lenteur n'est présente que quand je teste dans visual basic express, en lançant l'executable directement à partir de windows ça marche bien.

Oubliez cette partie de ma question, en revanche la partie sur les formats m'interesse toujours j'aimerais avoir des objets moins lourd à manipuler ...


mardi 1 mai 2007 à 11:28:36 | Re : Algorithme lent pour inverser une image

jmfmarques

Membre Club

heu...

adapte ceci à VB.Net

2 picturebox et une image dans picture1

un bouton command1

Private Declare Function StretchBlt Lib "gdi32" (ByVal hdc As Long, ByVal X As Long, ByVal Y As Long, _
ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc _
As Long, ByVal nSrcWidth As Long, ByVal nSrcHeight As Long, ByVal dwRop As Long) As Long

Private Sub Command1_Click()
  StretchBlt Picture2.hdc, 0, 0, Picture1.Width, Picture1.Height, Picture1.hdc, 0, 0, Picture1.Width, Picture1.Height, vbSrcInvert
End Sub

Private Sub Form_Activate()
  Picture1.AutoSize = True
  Picture2.Width = Picture1.Width
  Picture2.Height = Picture1.Height
End Sub

 

mardi 1 mai 2007 à 11:33:51 | Re : Algorithme lent pour inverser une image

jmfmarques

Membre Club
Les deux piucturebox étant en pixels (important) bien sur
mardi 1 mai 2007 à 20:36:52 | Re : Algorithme lent pour inverser une image

GrandGarfield

Merci pour ta réponse je regarde mais puisque mon code marche pour inverser les couleurs et qu'il n'est pas long comme je le croyais ça ira...
mardi 1 mai 2007 à 21:46:33 | Re : Algorithme lent pour inverser une image

jmfmarques

Membre Club
L'utilisation de la fonction stretchBlt (ou d'ailleurs de la finction Bitblt) de la librairie gdi32 de l'API de windows (et même la méthode PaintPicture de VB) est nettement préférable (et beaucoup plus rapide)  à ta double boucle pour traiter pixel par pixel....
Enfin ... fais donc comme tu l'entends.....


Cette discussion est classée dans : image, fonctions, image1, inverser, newmdichild


Répondre à ce message

Sujets en rapport avec ce message

retourné une image mais pas dans une picturebox mais dans une image1.picture [ par toto ] retourné une image mais pas dans une picturebox mais dans une image1.picture car la fonction paint picture n'a pas l'air de marcher (image1.paintictur retourné une image non pas dans picturebox mais dans image1.picture [ par toto ] retourné une image non pas dans picturebox mais dans image1.picture car j'ai tout essayer et paintpicture ne marche pas (image1.paintpicture et tout l Toucher l'autre image a l'Aide d'un image [ par ATH|500| ] Moi ce que je voudrais c'est que quand mon image1 touche au coté de mon image2 ben qu'il y ait un msgbox qui se passe...J'ai essayer mais ça marche pa manipuler image avant affichage [ par neo12 ] bonjour,quel contrôle (picturebox,image) et quel fonction et/ou API utiliser pur traiter uen image avant affichage (modification taille par exemple ?( valeur de i dans image(i) [ par deubal ] salut,je bosse sur vb6, mon projet est en lien avec access 2000. Dans une des forms de mon projet, j'ai 4 images qui 'saffichent. elle font partie d'u pb redimensionnement image [ par chris21 ] Bonjour, je recherche une méthode pour redimensionner et sauvegarder une image, j'ai essayé ça: Image1.Picture.Width = Image1.Picture.Width / 2Image1. Problème LoadPicture [ par BeebopMcFly ] bonjour, j'ai un problèmle tout bète mais je lutte méchament...je veux simplement qu'une image apparaisse dans mon controle Imagealors je fais ceci :M VB.NET - drag & drop [ par morickno ] je fai du drag & drop d'une image vers un panel.ca marche bien mais ca déplace mon image.comment faire pour que ca fasse une copie de l'image au lieu Charger mon image !!! devient fou [ par YabLeo ] Salut j'aimerai savoir pourquoi qd je fais ça :Dim Image1 As Image Image1.Picture = LoadPicture("D:\Mes Documents\Mes images\Marsipio.bmp")ça plant Redimensionnement d'image impossible [ par zoglub14 ] Bonsoir à tous,J'essaie desesperement de redimensionner une image chargé dans une PictureBox, pour ensuite la sauvegarderPour cela j'ai crée une deuxi


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 6,162 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales