IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Java Discussion :

Recuperer une image a partir des pixels RGB


Sujet :

Langage Java

  1. #1
    Battosaiii
    Invité(e)
    Par défaut Recuperer une image a partir des pixels RGB
    Ce message est assez long . Pour les courageux qui sont cales en image j'ai besoin de leur aide. Mes connaissances sont vraiment limites mais j'estime avoir quand meme a peu pres compris.
    Merci pour celui qui m'aideras !

    int count=0;
    byte[] pixelBytes = new byte[width*height];
    for (int y=0 ; y < height ; ++y)
    {
    for (int x=0 ; x < width ;++x)
    {
    int c = pixels[width*y+x];//bImage.getRGB(x,y);
    if (samplesPerPixel == 1)
    {
    // Monochrome image...all three colour planes will have the same value
    pixelBytes[(y*width+x)] = (byte)((c & 0xff) - 128);
    }
    else
    {



    // Colour image...need to send Red, Green and Blue separately

    pixelBytes[(y*width+x)*3+0] = (byte)(((c >> 16) & 0xff) - 128);
    pixelBytes[(y*width+x)*3+1] = (byte)(((c >> 8) & 0xff) - 128);
    pixelBytes[(y*width+x)*3+2] = (byte)((c & 0xff) - 128 );
    //System.out.println("GetImage3D_Request::Go() end for x");
    //count++;
    // System.out.println("GetImage3D_Request::Go() count="+count);
    //}
    }
    }
    Dans mon programme int c = pixels[width*y+x]; represente chaque pixels de mon image.
    Je peux choisir samplesPerPixel=1 pour une image monochrome. Cela veut dire que chaque pixel c est represente par seulement une couleur monochrome.
    Mon programme marche parfaitement pour sampleperpixels mais malheureusement la qualite de l'image laisse a desirer.

    Je voudrais pouvoire retirer les 3 couleurs rgb de chaque pixel car je sais que l'image en question definie par c=pixels[width*y+x]; a ete cree en rgb . Pour preuve voici la creation de pixels :

    for (int y = yMin; y <= yMax; y++)
    {
    v1[1] = v2[1] = y;
    int percent = 100 * (y - yMin) / (yMax - yMin);
    for (int x = xMin; x <= xMax; x++)
    {
    if (cube.isInside(x, y))
    {
    int pos = (int)(vol.widthX*y+x);
    if(pos<pixels.length)
    {
    v1[0] = v2[0] = x;
    int alpha = 255;
    int V = 0;
    tr.invxyzPosf(v1);
    float x1 = tr.xf;
    float y1 = tr.yf;
    float z1 = tr.zf;

    tr.invxyzPosf(v2);

    dx = (tr.xf - x1) * nd1;
    dy = (tr.yf - y1) * nd1;
    dz = (tr.zf - z1) * nd1;
    int k = 0;
    for (int n = nd; n >= 0; n--)
    {
    if (x1 >= 0 && x1 < width && y1 >= 0 && y1 < height && z1 >= 0 && z1 < depth)
    {
    int val = trilinear(z1, y1, x1);
    if (val >= var.thresh)
    {
    int f = (val - var.thresh) + 50;
    if (f > 255)
    f = 255;
    alpha += f;
    V += f * val;
    if (++k >= renderDepth)
    break;
    }
    }
    x1 += dx;
    y1 += dy;
    z1 += dz;
    }
    int val = (int) (scaleLum * V / alpha);
    if (val > 255)
    val = 255;
    int int_hex = 0xff000000 | (val & 0x000000ff) << 16 | (val & 0x000000ff) << 8 | (val & 0x000000ff);
    pixels[pos] = int_hex;
    }
    }
    }
    ce qui est important est surligne en gras. l'image en question est une image 3d
    mais cette ligne montre bien que c'estr une image rgb :
    int int_hex = 0xff000000 | (val & 0x000000ff) << 16 | (val & 0x000000ff) << 8 | (val & 0x000000ff);

    Lorsque je precise a mon programme que sampleperpixel=1 ce programme marche mais avec un affichage d'image de mauvaise qualite. Si je mets
    sampleperpixels=3 j'obtiens une exception handling. D'apres mes tests l'exception survient entre ces lignes (voir la premiere ligne de code en haut)

    pixelBytes[(y*width+x)*3+0] = (byte)(((c >> 16) & 0xff) - 128);
    pixelBytes[(y*width+x)*3+1] = (byte)(((c >> 8) & 0xff) - 128);
    pixelBytes[(y*width+x)*3+2] = (byte)((c & 0xff) - 128 );
    Desole pour les fautes si il y en as ! Je n'ai pas d'accents sur mon clavier .

  2. #2
    Battosaiii
    Invité(e)
    Par défaut
    est ce hors sujet ? HEEEEEEEELLLLLLLLLPPPPPPPPPPP

Discussions similaires

  1. Réponses: 2
    Dernier message: 04/05/2015, 19h54
  2. enregistrer une vidéo a partir des images
    Par manoubi77 dans le forum Général Java
    Réponses: 2
    Dernier message: 07/06/2012, 09h08
  3. [WD14] Recuperation d'une image a partir d'un lien URL
    Par shadowdiablo dans le forum WinDev
    Réponses: 11
    Dernier message: 09/12/2009, 08h46
  4. Récupérer une image JPEG à partir d'une vidéo
    Par kurul1 dans le forum C++Builder
    Réponses: 8
    Dernier message: 09/08/2006, 10h51
  5. [Image] Comment créer une image à partir d'un fichier
    Par mereyj dans le forum Entrée/Sortie
    Réponses: 1
    Dernier message: 01/07/2005, 21h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo