Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Oracle AI World 2026: in Europa prima la sovranità, poi la sicurezza e solo dopo l'IA
Oracle AI World 2026: in Europa prima la sovranità, poi la sicurezza e solo dopo l'IA
In tre giorni a Las Vegas Oracle ha presentato agenti che eseguono il lavoro, l'alleanza con OpenAI e un cloud aperto agli acceleratori di tutti. Ma i clienti europei chiedono garanzie prima ancora delle funzionalità
DS N°7 E-Tense: il SUV premium made in Melfi che punta su autonomia e comfort
DS N°7 E-Tense: il SUV premium made in Melfi che punta su autonomia e comfort
Fino a 740 km WLTP con la batteria da 97,2 kWh, sospensioni che leggono la strada con una telecamera e un abitacolo da salotto parigino. La nuova DS N°7 raccoglie l'eredità della DS 7 e la porta, per la prima volta, nel mondo 100% elettrico. Ecco come è fatta, cosa offre e quanto costa.
Recensione Samsung Galaxy Tab S12 Ultra: non chiamatelo tablet... è molto di più
Recensione Samsung Galaxy Tab S12 Ultra: non chiamatelo tablet... è molto di più
Abbiamo provato Samsung Galaxy Tab S12 Ultra nella versione 12 GB + 256 GB con tastiera, e il risultato è un tablet che in questa configurazione si comporta come un notebook con la fluidità tipica di Android. Spessore di 5,1 mm, display Dynamic AMOLED 2X da 14,6 pollici, MediaTek Dimensity 9500 e un software senza incertezze compongono un prodotto di vertice, con prezzi da 1.539 euro, frenato solo da un'autonomia nella parte bassa del confronto
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 16-10-2007, 11:25   #1
xirc85
Member
 
L'Avatar di xirc85
 
Iscritto dal: Sep 2007
Città: Trento
Messaggi: 91
[JAVA] Manipolazione di immagini

Ciao a tutti!
Devo fare un'applicazione su piattaforma J2ME per l'analisi di immagini.
Vorrei sapere come posso accedere ai byte che la compongono, dato che uso un'oggetto di tipo Image.
Mi piacerebbe riuscire ad ottenere un array che contenga la codifica del colore per ogni pixel se possibile, così da poterli modificare a mio piacimento...

Grazie a tutti
xirc85 è offline   Rispondi citando il messaggio o parte di esso
Old 16-10-2007, 11:49   #2
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Messaggi: 5206
Quote:
Originariamente inviato da xirc85 Guarda i messaggi
Devo fare un'applicazione su piattaforma J2ME per l'analisi di immagini.
Vorrei sapere come posso accedere ai byte che la compongono, dato che uso un'oggetto di tipo Image.
Mi piacerebbe riuscire ad ottenere un array che contenga la codifica del colore per ogni pixel se possibile, così da poterli modificare a mio piacimento...
Non programmo in J2ME ma ho la documentazione sotto mano. Image ha un metodo getRGB() (nota, MIDP 2.0) per ottenere un array con i dati dei pixel.
Dipende da cosa devi farci con questi pixel. Potresti anche ottenere il Graphics con il metodo getGraphics() e poi disegnarci sopra con dei metodi più comodi e pratici es. drawLine(), fillRect() ecc....
Di più non so dirti.
__________________
Andrea, Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
Java Versions Cheat Sheet
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 16-10-2007, 11:54   #3
xirc85
Member
 
L'Avatar di xirc85
 
Iscritto dal: Sep 2007
Città: Trento
Messaggi: 91
Innanzitutto, grazie
In pratica io devo controllare i pixel per regolare il contrasto come prima cosa (o meglio devo convertire per così dire l'immagine da scala di grigi o a colori a un'immagine bianca e nera a un bit...) e poi devo scandirmela in modo opportuno per capire cosa contiene..

grazie ancora
xirc85 è offline   Rispondi citando il messaggio o parte di esso
Old 16-10-2007, 12:10   #4
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Messaggi: 5206
Quote:
Originariamente inviato da xirc85 Guarda i messaggi
In pratica io devo controllare i pixel per regolare il contrasto come prima cosa (o meglio devo convertire per così dire l'immagine da scala di grigi o a colori a un'immagine bianca e nera a un bit...) e poi devo scandirmela in modo opportuno per capire cosa contiene..
Allora devi proprio accedere direttamente ai valori dei pixel, l'uso di Graphics non ti serve (visto che fa solo operazioni di "alto" livello).

Se stai usando MIDP 2.0 vedi quindi il metodo getRGB() della classe javax.microedition.lcdui.Image.
__________________
Andrea, Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
Java Versions Cheat Sheet
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 16-10-2007, 12:26   #5
xirc85
Member
 
L'Avatar di xirc85
 
Iscritto dal: Sep 2007
Città: Trento
Messaggi: 91
grazie mille!
adesso mi studio un pò la documentazione e poi provo a fare qualche esperimento...
xirc85 è offline   Rispondi citando il messaggio o parte di esso
Old 16-10-2007, 14:20   #6
xirc85
Member
 
L'Avatar di xirc85
 
Iscritto dal: Sep 2007
Città: Trento
Messaggi: 91
Ho provato a smanettarci un pò e dopo aver richiamato il metodo getRGB, mi stampo l'array contenente le codifiche dei pixel... non riesco però a capire questa codifica...

Ad esempio mi stampa una cosa del tipo "-15658735" e sinceramente non riesco a capire se si tratta di una codifica del colore in intero, o se è un numero generato dalla composizione di più parametri concatenati

Qualcuno mi può aiutare??
xirc85 è offline   Rispondi citando il messaggio o parte di esso
Old 16-10-2007, 14:26   #7
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Messaggi: 5206
Quote:
Originariamente inviato da xirc85 Guarda i messaggi
Ho provato a smanettarci un pò e dopo aver richiamato il metodo getRGB, mi stampo l'array contenente le codifiche dei pixel... non riesco però a capire questa codifica...

Ad esempio mi stampa una cosa del tipo "-15658735" e sinceramente non riesco a capire se si tratta di una codifica del colore in intero, o se è un numero generato dalla composizione di più parametri concatenati
La documentazione è pure molto chiara. Ogni pixel è memorizzato in un valore di tipo int nel formato 0xAARRGGBB. Il sostanza il valore a 32 bit è suddiviso in 4 campi da 8 bit. Quindi il valore non è da trattare come un puro valore numerico.

Un valore come -15658735, in esadecimale è 0xFF111111, pertanto in questo caso rosso, verde e blu hanno valore 0x11 o in decimale 17.
__________________
Andrea, Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
Java Versions Cheat Sheet
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 16-10-2007, 14:38   #8
xirc85
Member
 
L'Avatar di xirc85
 
Iscritto dal: Sep 2007
Città: Trento
Messaggi: 91
mmm... grazie!

quindi per poter capire di che colore è effettivamente quel pixel, devo trattare il valore numerico per estrarre le informazioni?
Dato che a me interessa più che altro capire se un colore è "chiaro" o "scuro" potrei basarmi sul valore massimo e minimo contenuto nell'array (magari dopo aver tolto "l'informazione" riguardante l'Alpha processing...)??
xirc85 è offline   Rispondi citando il messaggio o parte di esso
Old 16-10-2007, 15:21   #9
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Messaggi: 5206
Quote:
Originariamente inviato da xirc85 Guarda i messaggi
quindi per poter capire di che colore è effettivamente quel pixel, devo trattare il valore numerico per estrarre le informazioni?
Se devi prendere in considerazione i singoli colori R, G e B, devi prelevare solo gli 8 bit necessari dal int. E questo richiede l'uso degli operatori bitwise di AND (&) e di shift.

Quote:
Originariamente inviato da xirc85 Guarda i messaggi
Dato che a me interessa più che altro capire se un colore è "chiaro" o "scuro"
Potresti determinare il valore su scala di grigio che è molto semplice da calcolare: 30% di R + 59% di G + 11% di B.
__________________
Andrea, Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
Java Versions Cheat Sheet
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 16-10-2007, 15:36   #10
xirc85
Member
 
L'Avatar di xirc85
 
Iscritto dal: Sep 2007
Città: Trento
Messaggi: 91
grazie per l'idea.. mi sembra un pò complicata , comunque adesso provo a implementarla.
xirc85 è offline   Rispondi citando il messaggio o parte di esso
Old 16-10-2007, 16:22   #11
recoil
Senior Member
 
L'Avatar di recoil
 
Iscritto dal: Jul 2002
Città: Milano
Messaggi: 19150
se non esiste già fai una piccola classe che contenga i tre valori RGB e che ti consenta di ottenere un valore unico per la scala di grigio.
devi fare operazioni tipo dithering sull'immagine? perché attenzione, non tutte le elaborazioni si fanno sul singolo pixel senza considerare quelli che stanno attorno
recoil è offline   Rispondi citando il messaggio o parte di esso
Old 16-10-2007, 16:25   #12
xirc85
Member
 
L'Avatar di xirc85
 
Iscritto dal: Sep 2007
Città: Trento
Messaggi: 91
Io pensavo di fare una cosa di questo tipo: estrarre i tre valori rgb, metterli in scala di grigio, poi cercarmi il valore massimo e quello minimo, farmi la media e se il valore è sotto o sopra la media metterlo direttamente in nero o in bianco...
è una cretinata??
xirc85 è offline   Rispondi citando il messaggio o parte di esso
Old 16-10-2007, 16:33   #13
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Messaggi: 5206
Nota che le percentuali che ho indicato non sono "sparate" a caso. Sono le percentuali "standard" che rispecchiano la sensibilità dell'occhio umano ai tre colori primari rosso/verde/blu.

E comunque non devi fare complicate operazioni in floating-point! Una volta che hai "isolato" i 3 valori RGB, li moltiplichi rispettivamente per 30, 59 e 11, fai la somma, poi dividi il tutto per 100. Tutte operazioni "intere".
__________________
Andrea, Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
Java Versions Cheat Sheet
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 16-10-2007, 16:34   #14
recoil
Senior Member
 
L'Avatar di recoil
 
Iscritto dal: Jul 2002
Città: Milano
Messaggi: 19150
viene una schifezza purtroppo, ti ritrovi con delle grosse zone di nero facendo così. te lo dico perché me ne sono occupato per lavoro, dovevo convertire immagini da colore/grigi a bianco e nero

devi utilizzare degli algoritmi per il dithering, però per farlo non puoi leggere un pixel alla volta.
ad esempio puoi usare questo http://en.wikipedia.org/wiki/Floyd-Steinberg_dithering

non posso darti il mio codice perché l'ho usato per lavoro però puoi trovare delle implementazioni open source, ad esempio nella libreria netpbm. non è niente di complicato da capire e implementare

quello che succede è che viene introdotto "rumore" nell'immagine e in questo modo puoi passare da una RGB a un'immagine "puntinata", che ti assicuro è di qualità piuttosto buona se non la ingrandisci troppo. senza quel rumore casuale dovresti basarti sul valore del pixel ma avresti, come ti dicevo, zone nere o bianche a blocchi.
io l'ho impiegato per un fax e la stampa che ottengo a partire da un'immagine a colori è di buona qualità
recoil è offline   Rispondi citando il messaggio o parte di esso
Old 16-10-2007, 16:37   #15
xirc85
Member
 
L'Avatar di xirc85
 
Iscritto dal: Sep 2007
Città: Trento
Messaggi: 91
ma comunque il fatto di "discriminare" se un pixel deve essere messo in bianco o in nero va bene basandosi sulla "tonalita media" (non so se mi spiego...) che è presente nell'immagine?
xirc85 è offline   Rispondi citando il messaggio o parte di esso
Old 16-10-2007, 16:38   #16
recoil
Senior Member
 
L'Avatar di recoil
 
Iscritto dal: Jul 2002
Città: Milano
Messaggi: 19150
Quote:
Originariamente inviato da xirc85 Guarda i messaggi
ma comunque il fatto di "discriminare" se un pixel deve essere messo in bianco o in nero va bene basandosi sulla "tonalita media" (non so se mi spiego...) che è presente nell'immagine?
cosa intendi per "tonalità media"?
recoil è offline   Rispondi citando il messaggio o parte di esso
Old 16-10-2007, 16:47   #17
xirc85
Member
 
L'Avatar di xirc85
 
Iscritto dal: Sep 2007
Città: Trento
Messaggi: 91
chiedo scusa se ho fatto una domanda alla quale avevate già risposto, ma ho avuto problemi di refresh della pagina...


per quello che ho definito come "tonalità media" intendo un valore rgb che sia equamente distante dagli estremi che sono realmente presenti nell'immagine in quanto non posso sapere a priori quale è il valore più chiaro e quello più scuro... (non so se mi sono spiegata meglio...)
le immagini che tratto io, in pratica sono delle fotografie di codici a barre (in realtà sono una specie...) e quindi sono prevalentemente in bianco e nero...
In questo caso devo comunque fare un'algoritmo di dithering?
xirc85 è offline   Rispondi citando il messaggio o parte di esso
Old 16-10-2007, 16:52   #18
recoil
Senior Member
 
L'Avatar di recoil
 
Iscritto dal: Jul 2002
Città: Milano
Messaggi: 19150
uhm con un codice a barre probabilmente no, avrai valori molto sopra e molto sotto il tuo threshold, che probabilmente potrai tenere costante conoscendo le caratteristiche dell'immagine
il dithering comunque non dovrebbe disturbarti, nelle zone nere non mette puntini bianchi a casaccio. sarebbe un costo inutile.

se devi occuparti di immagini più comuni, come una foto, il dithering diventa obbligatorio se vuoi passare al bw
recoil è offline   Rispondi citando il messaggio o parte di esso
Old 16-10-2007, 16:55   #19
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Messaggi: 5206
Quote:
Originariamente inviato da xirc85 Guarda i messaggi
ma comunque il fatto di "discriminare" se un pixel deve essere messo in bianco o in nero va bene basandosi sulla "tonalita media" (non so se mi spiego...) che è presente nell'immagine?
Se devi ottenere una immagine in bianco/nero, allora è giusto quello che ha detto recoil. Hai bisogno di effettuare il dithering per ottenere dei buoni risultati.

Ti mostro cosa succederebbe (qui le immagini in b/w le ho fatte con un programma di grafica ma il concetto non cambia):

immagine originale:


immagine bianco/nero con la riduzione "nearest color" (in pratica quello che stavi dicendo tu, stabilisci se un colore è più vicino al nero o al bianco):


immagine bianco/nero con la riduzione con dithering "Floyd-Steinberg":


Nota il notevole miglioramento con il dithering.
__________________
Andrea, Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
Java Versions Cheat Sheet
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 16-10-2007, 17:02   #20
xirc85
Member
 
L'Avatar di xirc85
 
Iscritto dal: Sep 2007
Città: Trento
Messaggi: 91
Quindi in teoria, potrei farne a meno... anche perchè l'unico "disturbo" sulla foto potrebbe essere al massimo un'ombra o un riflesso e non dovrebbe crearmi dei grossi problemi.... credo
xirc85 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Oracle AI World 2026: in Europa prima la sovranità, poi la sicurezza e solo dopo l'IA Oracle AI World 2026: in Europa prima la sovrani...
DS N°7 E-Tense: il SUV premium made in Melfi che punta su autonomia e comfort DS N°7 E-Tense: il SUV premium made in Melfi...
Recensione Samsung Galaxy Tab S12 Ultra: non chiamatelo tablet... è molto di più Recensione Samsung Galaxy Tab S12 Ultra: non chi...
Hyundai IONIQ 5 N, l'elettrica che finge di essere termica (e ci riesce da paura) Hyundai IONIQ 5 N, l'elettrica che finge di esse...
CES Unveiled Milan, l'IA diventa tecnologia fondativa e il commercio torna centrale CES Unveiled Milan, l'IA diventa tecnologia fond...
L’ex CEO di Intel Gelsinger punta su una...
Techly, quattro nuovi supporti TV fra mo...
Mass Effect sacrificato per Star Wars: i...
Gemini, addio al copia e incolla per cor...
13 miliardi per un colpo di stato? NVIDI...
L'agente AI Wabi crea mini-app su misura...
Edge è il primo browser a supportare Acc...
L'IA di Firefox ora compila i moduli da ...
Tracking pixel nelle email: cosa cambia ...
La GeForce RTX 5080 da 24 GB potrebbe ar...
Apple mette alle strette OpenAI, la caus...
Xbox ancora in calo: ecco com'è a...
Car of the Year 2027: sette finaliste e ...
Google Beam cambia tutto: arrivano le vi...
Curry Barker, il regista di Obsession, p...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 20:06.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v