Avatar billede koppelgaard Praktikant
04. januar 2014 - 14:45 Der er 9 kommentarer

Image to Pixel array

Leder efter en hurtig metode til at få værdien af hver pixel i et Image læst ud til liste eller et array.

Lige nu looper jeg gennem alle pixel og aflæser værdien med bitmap.GetPixel(x, y).
Det går langsomt.
Jeg troede et hurtig metode var følgende :

  public byte[] ImageToByteArray(System.Drawing.Image imageIn)
        {
            MemoryStream ms = new MemoryStream();
            imageIn.Save(ms, System.Drawing.Imaging.ImageFormat.Gif);
            return ms.ToArray();
        }

men længden af det array som metode retunerer er langt mindre in antallet af pixel i mit billede.
Hvad returner metoden egentlig?

Er der er hurtig metode som kan anvendes i stedet?

Har fundet:
http://stackoverflow.com/questions/5050954/conversion-of-image-to-bytearray

int stride = bitmap.PixelWidth * ((bitmap.Format.BitsPerPixel + 7) / 8);
byte[] bmpPixels = new byte[bitmap.PixelHeight * stride];
bitmap.CopyPixels(bmpPixels, stride, 0);

Men forstår ikke at få puttet mit  pictureBox1.Image ind i metoden.
Er der nogen der kan hjælpe?
Avatar billede Syska Mester
04. januar 2014 - 18:38 #1
Hvad er det præcis du vil have ud?

Antager de bytes du får ud er når det er "gif" formatted?

Altså vil du vel ikke kunne antage længden er den samme.

Hvis det er farve koden du vil have ud i et array skal du nok ud i noget unmanaged/unchecked kode ...

Men venter lige på svar fra dig ... så er jeg sikker på at vi arbejder i den samme retning.

mvh
Avatar billede koppelgaard Praktikant
04. januar 2014 - 19:02 #2
Hej og tak fordi, du vil hjælpe!
Jeg har et multipage tif billede.
Billedet er af en jordprøver skannet i en CT skanner og viser det indre poresystem i jorden.
Billedet er binært, altså sort/hvidt. Porerne i jorden er sorte og den omgivende jord hvid.
Min opgave er i første omgang at gennemgå hvert billeder og se, om der er nogen sorte pixel, der er naboer, fordi en samling af sorte pixels vil indikere en pore.

Lige nu kører programmet ved bitmap.getpixel, hvor jeg undersøger om der er sorte nabopixels. Det går langsomt, og det var mit håb at der findes hurtigere metoder til at afgøre om en pixel er sort eller hvid.
Tænker at hvis jeg først for pixelværdier udlæst til en 2 dim. array vil sammenligningen gå hurtige
Håber du forstår. Hvis ikke må jeg forsøge at forklarer yderligere
Avatar billede Syska Mester
04. januar 2014 - 19:18 #3
Nej, det var nok information.

Hvis du kan gøre mig en tjeneste at lave et lille "test program", så vil jeg gerne se på en måde at gøre det hurtigere på.

Et eller andet skal man jo lave mens man venter på håndbold. Worst case kan jeg jo også selv lære noget af det.

Btw ... når jeg kigger rundt omkring ser jeg ofte referencer til: http://bobpowell.net/lockingbits.aspx

mvh
Avatar billede koppelgaard Praktikant
04. januar 2014 - 19:43 #4
Hej ingen.
Jeg laver med glæde et testprogram, men jeg er bange for at familien kræver mit nærvær resten af aftenen.
Jeg laver et i morgen formiddag :)

Hvem spiller ?
Avatar billede koppelgaard Praktikant
04. januar 2014 - 20:05 #5
din side set interessant ud. Skal studeres i morgen :)
Avatar billede Syska Mester
04. januar 2014 - 20:42 #6
Danmark - Norge ... noget golden league. Men kedeligt da Norge får smæk.

Skam ikke min side ... men bare den jeg stødte på flest gange. Jeg nåde dog ikke selv at læse det hele igennem.
Avatar billede koppelgaard Praktikant
05. januar 2014 - 12:54 #7
Godt at skrive testprogram. så kommer man til at tænke over om tidlige kode var hel hensigtsmæssig.
Men jeg er ikke helt færdig endnu....
Avatar billede koppelgaard Praktikant
05. januar 2014 - 14:38 #8
Var det ikke godt at Danmark vandt?

Jeg har lagt at test projekt her.
http://www.mediafire.com/download/ecwfgur807hn1bl/Test.zip

Håber du forstår.
Projektet indeholder en clusterklasse. Det er der jeg lagre de fundne clusters.

Hvis du ikke umiddelbart forstår - måske mine kommentarer i koden er mangelfuld så skriv.

Jeg bliver "desværre" nødt til at afsætte resten af dagen til familien. Så jeg tjekker nok ikke før i morgen.

Tak for din hjælp :)
Avatar billede koppelgaard Praktikant
05. januar 2014 - 16:51 #9
Ekstra oplysning. Farverne er ikke nødvendige. Det er blot en måde at vise at en pixel har været besøgt.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester