Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Java - Elaborazione Immagini
Forum - Java - Elaborazione Immagini

Avatar
elettrozp (Normal User)
Newbie


Messaggi: 9
Iscritto: 13/05/2007

Segnala al moderatore
Postato alle 17:42
Domenica, 13/05/2007
ciao a tutti,
sono nuovo del forum, quindi se sbaglio qualcosa cercate di capire :D...
ho un problemone con elaborazioni di immagini, in pratica vi spiego il mio problema:

ho un array formato da interi, ogni intero è un valore (non segnato!) che puo' andare da 0-65536, ad ogni valore corrisponderà un valore in scala di grigio, cioè fatto 0=nero e 65536=bianco, qualsiesi valore dell'array compreso tra questo range è un valore di grigio piu' o meno intenso...

come faccio a visualizzare l'immagine che si dovrebbe formare?
come faccio poi a definire il range a 16 bit colori di grigio?
in realtà nel mio caso i valori sono a 12 bit, con un range da 0(nero)-4096(bianco) valori possibili di grigio...come faccio a visualizzarli?

ho provato con le JAI ma senza successo, anche perchè non riesco a capire come fare passare l'array nel metodo create di JAI.

vi prego ragazzi è importantissimo

ciao

PM Quote
Avatar
Macrosoft (Normal User)
Newbie


Messaggi: 7
Iscritto: 16/01/2007

Segnala al moderatore
Postato alle 16:54
Martedì, 15/05/2007
Ciao, anche io mi sto dando agli effetti applicati alle immagini. X ora posso consigliarti questo sito x aggiungere effetti al tuo programma:
http://www.extremebit.it/forum/viewtopic.php?p=10013


Ma ecco la parte più interessante... come operare con Java per applicare questi effetti. Allora, nn è subito immediato, perciò scusa se sn poco chiaro.L'immagine, per essere "lavorata", deve essere  inserita in un "contenitore" chiamato BufferedImage. Da li puoi operare per il trattamento del singolo pixel con getRGB e l'immissione del nuovo valore con setRGB.
Ecco la parte più interessante... per lavorare così bisogna andare ad operare a basso livello.
Per adesso so solo questo metodo perciò mi scuso per la mia ignoranza, cmq il valore RGB che il metodo getRGB() ti restituisce è un numero a 32 bit, cioè, mi spiego meglio, in realtà restituisce il valore ARGB (8bit x Alfa,8bit x Red,8bit x Green,8bit x Blue). Quello che devi fare te nn è altro che prendere il singolo canare togliendo gli altri, modificarlo e riinserirlo nella variabile int e "ricolorare" il pixel con setRGB(int rbg).
Nn ci avrai capito niente scommetto :asd:, beh, dicono che un'immagine valga + di 1000 parole... spero sia lo stesso anche per gli script :k:.
Questo è parte del codice chè compone il mio programma. Ti ho postato proprio l'algoritmo per la scala dei grigi:
Link:BufferedImage= http://java.sun.com/j2se/1.4.2/docs/api/java/awt/image/Buf ...
     ColorModel= http://java.sun.com/j2se/1.4.2/docs/api/java/awt/image/Dir ...
Codice sorgente - presumibilmente Java

  1. public static BufferedImage scalaDeiGrigi(BufferedImage immagine)
  2.     {
  3.         img=immagine;
  4.         int colBlue;
  5.         int colRed;
  6.         int colGreen;
  7.         int colRis;
  8.         int colAlpha;
  9.         int rgb;
  10.         int x;
  11.         for(int y=0;y<(int)img.getHeight();y++)
  12.         {
  13.             for(x=0;x<(int)img.getWidth();x++)
  14.             {
  15.                  rgb = img.getRGB(x, y);
  16.  
  17.                  colAlpha = ((rgb >> 24) & 0xff);
  18.                  colRed = ((rgb >> 16) & 0xff);
  19.                  colGreen = ((rgb >> 8) & 0xff);
  20.                  colBlue = ((rgb ) & 0xff);
  21.                  
  22.                  colRis=(int)(colRed+colGreen+colBlue)/3;
  23.                  // Manipulate the r, g, b, and a values.
  24.  
  25.                  rgb = (colAlpha << 24) | (colRis << 16) | (colRis << 8) | colRis;
  26.                  img.setRGB(x, y, rgb);
  27.    
  28.             }
  29.         }
  30.         return img;
  31.     }


Divertiti, mandami un messaggio se vuoi altri consigli o nn capisci parte del codice, o nn sai come collegarlo al resto del programma.:k:

Ultima modifica effettuata da Macrosoft il 15/05/2007 alle 17:01
PM Quote
Avatar
elettrozp (Normal User)
Newbie


Messaggi: 9
Iscritto: 13/05/2007

Segnala al moderatore
Postato alle 17:13
Martedì, 15/05/2007
ciao Macrosoft, intanto ti saluto e ti ringrazio, sei stato gentilissimo e chiarissimo.

..il problema però rimane, quello che fai tu resta sempre all'interno degli 8bit e cioè 255 tonalità diverse di grigio...a me serve poter visualizzare l'immagine a 12 (o anche a 16) bit di tonalità di grigio...sai come fare?

ciao

PM Quote
Avatar
Macrosoft (Normal User)
Newbie


Messaggi: 7
Iscritto: 16/01/2007

Segnala al moderatore
Postato alle 17:47
Martedì, 15/05/2007
allora... per il tuo problema in teoria devi usare variabili a 64 bit come gli int 16+16+16+16...
parlavo con un mio amico tempo fa riguardo al problema delle dimensioni e mi ha detto che è un casino la conversione perchè probabilmente java nn gestisce questo tipo di grafica.
Ho provato a vedere sulla guda ufficiale di Java all'indirizzo del BufferedImage e ho trovato questi tipi di file che ti puoi far ritornare con i metodo getRGB
[URL]http://java.sun.com/j2se/1.4.2/docs/api/java/awt/image/Buf ...]
Codice sorgente - presumibilmente Java

  1. TYPE_CUSTOM
  2.  
  3. public static final int TYPE_CUSTOM
  4.  
  5.     Image type is not recognized so it must be a customized image. This type is only used as a return value for the getType() method.
  6.  
  7.     See Also:
  8.         Constant Field Values
  9.  
  10. TYPE_INT_RGB
  11.  
  12. public static final int TYPE_INT_RGB
  13.  
  14.     Represents an image with 8-bit RGB color components packed into integer pixels. The image has a DirectColorModel without alpha.
  15.  
  16.     See Also:
  17.         Constant Field Values
  18.  
  19. TYPE_INT_ARGB
  20.  
  21. public static final int TYPE_INT_ARGB
  22.  
  23.     Represents an image with 8-bit RGBA color components packed into integer pixels. The image has a DirectColorModel with alpha. The color data in this image is considered not to be premultiplied with alpha. When this type is used as the imageType argument to a BufferedImage constructor, the created image is consistent with images created in the JDK1.1 and earlier releases.
  24.  
  25.     See Also:
  26.         Constant Field Values
  27.  
  28. TYPE_INT_ARGB_PRE
  29.  
  30. public static final int TYPE_INT_ARGB_PRE
  31.  
  32.     Represents an image with 8-bit RGBA color components packed into integer pixels. The image has a DirectColorModel with alpha. The color data in this image is considered to be premultiplied with alpha.
  33.  
  34.     See Also:
  35.         Constant Field Values
  36.  
  37. TYPE_INT_BGR
  38.  
  39. public static final int TYPE_INT_BGR
  40.  
  41.     Represents an image with 8-bit RGB color components, corresponding to a Windows- or Solaris- style BGR color model, with the colors Blue, Green, and Red packed into integer pixels. There is no alpha. The image has a DirectColorModel.
  42.  
  43.     See Also:
  44.         Constant Field Values
  45.  
  46. TYPE_3BYTE_BGR
  47.  
  48. public static final int TYPE_3BYTE_BGR
  49.  
  50.     Represents an image with 8-bit RGB color components, corresponding to a Windows-style BGR color model) with the colors Blue, Green, and Red stored in 3 bytes. There is no alpha. The image has a ComponentColorModel.
  51.  
  52.     See Also:
  53.         Constant Field Values
  54.  
  55. TYPE_4BYTE_ABGR
  56.  
  57. public static final int TYPE_4BYTE_ABGR
  58.  
  59.     Represents an image with 8-bit RGBA color components with the colors Blue, Green, and Red stored in 3 bytes and 1 byte of alpha. The image has a ComponentColorModel with alpha. The color data in this image is considered not to be premultiplied with alpha. The byte data is interleaved in a single byte array in the order A, B, G, R from lower to higher byte addresses within each pixel.
  60.  
  61.     See Also:
  62.         Constant Field Values
  63.  
  64. TYPE_4BYTE_ABGR_PRE
  65.  
  66. public static final int TYPE_4BYTE_ABGR_PRE
  67.  
  68.     Represents an image with 8-bit RGBA color components with the colors Blue, Green, and Red stored in 3 bytes and 1 byte of alpha. The image has a ComponentColorModel with alpha. The color data in this image is considered to be premultiplied with alpha. The byte data is interleaved in a single byte array in the order A, B, G, R from lower to higher byte addresses within each pixel.
  69.  
  70.     See Also:
  71.         Constant Field Values
  72.  
  73. TYPE_USHORT_565_RGB
  74.  
  75. public static final int TYPE_USHORT_565_RGB
  76.  
  77.     Represents an image with 5-6-5 RGB color components (5-bits red, 6-bits green, 5-bits blue) with no alpha. This image has a DirectColorModel.
  78.  
  79.     See Also:
  80.         Constant Field Values
  81.  
  82. TYPE_USHORT_555_RGB
  83.  
  84. public static final int TYPE_USHORT_555_RGB
  85.  
  86.     Represents an image with 5-5-5 RGB color components (5-bits red, 5-bits green, 5-bits blue) with no alpha. This image has a DirectColorModel.
  87.  
  88.     See Also:
  89.         Constant Field Values
  90.  
  91. TYPE_BYTE_GRAY
  92.  
  93. public static final int TYPE_BYTE_GRAY
  94.  
  95.     Represents a unsigned byte grayscale image, non-indexed. This image has a ComponentColorModel with a CS_GRAY ColorSpace.
  96.  
  97.     See Also:
  98.         Constant Field Values
  99.  
  100. TYPE_USHORT_GRAY
  101.  
  102. public static final int TYPE_USHORT_GRAY
  103.  
  104.     Represents an unsigned short grayscale image, non-indexed). This image has a ComponentColorModel with a CS_GRAY ColorSpace.
  105.  
  106.     See Also:
  107.         Constant Field Values
  108.  
  109. TYPE_BYTE_BINARY
  110.  
  111. public static final int TYPE_BYTE_BINARY
  112.  
  113.     Represents an opaque byte-packed 1, 2, or 4 bit image. The image has an IndexColorModel without alpha. When this type is used as the imageType argument to the BufferedImage constructor that takes an imageType argument but no ColorModel argument, a 1-bit image is created with an IndexColorModel with two colors in the default sRGB ColorSpace: {0, 0, 0} and {255, 255, 255}.
  114.  
  115.     Images with 2 or 4 bits per pixel may be constructed via the BufferedImage constructor that takes a ColorModel argument by supplying a ColorModel with an appropriate map size.
  116.  
  117.     Images with 8 bits per pixel should use the image types TYPE_BYTE_INDEXED or TYPE_BYTE_GRAY depending on their ColorModel.
  118.  
  119.     See Also:
  120.         Constant Field Values
  121.  
  122. TYPE_BYTE_INDEXED
  123.  
  124. public static final int TYPE_BYTE_INDEXED
  125.  
  126.     Represents an indexed byte image. When this type is used as the imageType argument to the BufferedImage constructor that takes an imageType argument but no ColorModel argument, an IndexColorModel is created with a 256-color 6/6/6 color cube palette with the rest of the colors from 216-255 populated by grayscale values in the default sRGB ColorSpace.
  127.  
  128.     See Also:




Ci ho dato un'occhiata ma nn ho trovato valori di colore superiore agli 8bit perciò la strada del BufferedImage nn è quella giusta....
Nn ho proprio idee al riguardo. magari se scopro qualcosa in più chiedendo ai miei amici ti mado un messaggio. ;)ciao

Ultima modifica effettuata da Macrosoft il 15/05/2007 alle 17:47
PM Quote
Avatar
elettrozp (Normal User)
Newbie


Messaggi: 9
Iscritto: 13/05/2007

Segnala al moderatore
Postato alle 17:54
Martedì, 15/05/2007
si la bufferedImage mette a disposizione quello che cerco: TYPE_USHORT_GRAY, ciè 16bit di toni per il grigio, ma quando provo ad usarla non mi stampa l'immagine ma tutto nero...questo è il problema..

PM Quote
Avatar
Macrosoft (Normal User)
Newbie


Messaggi: 7
Iscritto: 16/01/2007

Segnala al moderatore
Postato alle 20:40
Martedì, 15/05/2007
Leggendo un po' la guida trovi scritto:
Codice sorgente - presumibilmente Delphi

  1. Constructor Detail
  2. ColorModel
  3.  
  4. public ColorModel(int bits)
  5.  
  6.     Constructs a ColorModel that translates pixels of the specified number of bits to color/alpha components. The color space is the default RGB ColorSpace, which is sRGB. Pixel values are assumed to include alpha information. If color and alpha information are represented in the pixel value as separate spatial bands, the color bands are assumed not to be premultiplied with the alpha value. The transparency type is java.awt.Transparency.TRANSLUCENT. The transfer type will be the smallest of DataBuffer.TYPE_BYTE, DataBuffer.TYPE_USHORT, or DataBuffer.TYPE_INT that can hold a single pixel (or DataBuffer.TYPE_UNDEFINED if bits is greater than 32). Since this constructor has no information about the number of bits per color and alpha component, any subclass calling this constructor should override any method that requires this information.
  7.  
  8. Parameters:
  9.     bits - the number of bits of a pixel
  10. Throws:
  11.     IllegalArgumentException - if the number of bits in bits is less than 1

.

Adesso... in teoria bisogna settare la lettura del colore dal modo di default a quello che interessa a te...


Il problema è come...
Trovi le informazioni che ti ho passato a questa pag:http://java.sun.com/j2se/1.4.2/docs/api/java/awt/image/Col ...

PM Quote
Avatar
Macrosoft (Normal User)
Newbie


Messaggi: 7
Iscritto: 16/01/2007

Segnala al moderatore
Postato alle 21:04
Martedì, 15/05/2007
ti sei ricordato di creare un bufferedImage di tipo TYPE_USHORT_GRAY?
Guarda qua...
Codice sorgente - presumibilmente Java

  1. BufferedImage(int width, int height, int imageType)
  2.           Constructs a BufferedImage of one of the predefined image types.



come ultimo parametro scrivi TYPE_USHORT_GRAY... in teoria è per quello che vedi nero. Se no nn so8-| ho trovato solo quello come possibile errore.

PM Quote
Avatar
elettrozp (Normal User)
Newbie


Messaggi: 9
Iscritto: 13/05/2007

Segnala al moderatore
Postato alle 1:23
Mercoledì, 16/05/2007
si, quello lo setto a TYPE_USHORT_GRAY...mannaggia...non so proprio come fare, vorrei postarti un pezzo di codice per fartivedere, ma ho cambiato cosi' tante volte la struttura che non mi ci raccapezzo neanch'io, per questo volevo un aiuto per buttare via tutto e rifare tutto nuovo...


PM Quote
Avatar
elettrozp (Normal User)
Newbie


Messaggi: 9
Iscritto: 13/05/2007

Segnala al moderatore
Postato alle 1:54
Mercoledì, 16/05/2007
cmq hai ragione, il tutto gira intorno al ColorModel...

PM Quote