shadowano Skrevet 30. september 2008 Del Skrevet 30. september 2008 Hei Jeg looper igjennom et RGB bilde med pekere. Når jeg går igjennom hvert enkelt pixel så ønsker jeg å konvertere pixlene til YCbCr fargerommet, men hvordan skal jeg lagre disse verdiene slik at jeg får et YCbCr bilde til slutt? Jeg ser at PixelFormat ikke har støtte for YCbCr formatet, er det allikevel en måte å gå rundt dette på? Fant fint lite om dette på nettet... Lenke til kommentar
teflonpanne Skrevet 30. september 2008 Del Skrevet 30. september 2008 (endret) Hei Jeg looper igjennom et RGB bilde med pekere. Når jeg går igjennom hvert enkelt pixel så ønsker jeg å konvertere pixlene til YCbCr fargerommet, men hvordan skal jeg lagre disse verdiene slik at jeg får et YCbCr bilde til slutt? Jeg ser at PixelFormat ikke har støtte for YCbCr formatet, er det allikevel en måte å gå rundt dette på? Fant fint lite om dette på nettet... Du kan lagre de som tre float/double-verdier for hver pixel f.eks. For å finne disse YCbCr flyttallene må du gange hver enkel R, G og B med en konstant, se her: http://en.wikipedia.org/wiki/YCbCr YCbCr (601) from "digital 8-bit R'G'B' "======================================================================== Y' = 16 + 1/256 * ( 65.738 * R'd + 129.057 * G'd + 25.064 * B'd) Cb = 128 + 1/256 * ( - 37.945 * R'd - 74.494 * G'd + 112.439 * B'd) Cr = 128 + 1/256 * ( 112.439 * R'd - 94.154 * G'd - 18.285 * B'd) ........................................................................ R'd, G'd, B'd in {0, 1, 2, ..., 255} Y' in {16, 17, ..., 235} with footroom in {1, 2, ..., 15} headroom in {236, 237, ..., 254} sync. in {0, 255} Cb, Cr in {16, 17, ..., 240} Her er R', G' og B' lik 1/R, 1/G, 1/B.. Men hvis du vil vise fargene på skjermen må du konvertere tilbake til RGB igjen for det er fargerommet datamaskiner bruker. Så det gir ikke mening å konvertere til YCbCr hvis det ikke er noe du skal gjøre som er lettere i YCbCr-fargerommet, som f.eks 4:2:2 sub-sampling for å komprimere dataene eller noe. Hvorfor vil du ha dataene i YCbCr? Endret 30. september 2008 av teflonpanne Lenke til kommentar
GeirGrusom Skrevet 30. september 2008 Del Skrevet 30. september 2008 GDI+ støtter kun RGB(A)32 bit pixel format; etter det jeg har forstått konverteres alle bilder til dette når de lastes. Eventuelt kan du prøve å bruke Direct3D eller OpenGL til å vise grafikken, der kan du i det minste få til dette med en shader. Men hvis det er et steg for langt utifra hva du hadde tiltenkt å bruke programmet til, så kan du eventuelt bare lage to bilder, en RGB og en YCbCr. Lenke til kommentar
shadowano Skrevet 24. oktober 2008 Forfatter Del Skrevet 24. oktober 2008 takk for svar. Jeg hadde tenkt å foreta noen operasjoner på bildet i YCbCr, og underveis i utviklingen er det lettere å se resultatet underveis i YCbCr. Man må vel bare gå fram og tilbake mellom RGB -> YCbCr -> RGB for å se dette da. får prøve meg fram:) Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå