Torna indietro   Hardware Upgrade Forum > Software > Programmazione

HONOR Magic 8 Pro: ecco il primo TOP del 2026! La recensione
HONOR Magic 8 Pro: ecco il primo TOP del 2026! La recensione
HONOR ha finalmente lanciato il suo nuovo flagship: Magic 8 Pro. Lo abbiamo provato a fondo in queste settimane e ve lo raccontiamo nella nostra recensione completa. HONOR rimane fedele alle linee della versione precedente, aggiungendo però un nuovo tasto dedicato all'AI. Ma è al suo interno che c'è la vera rivoluzione grazie al nuovo Snapdragon 8 Elite Gen 5 e alla nuova MagicOS 10
Insta360 Link 2 Pro e 2C Pro: le webcam 4K che ti seguono, anche con gimbal integrata
Insta360 Link 2 Pro e 2C Pro: le webcam 4K che ti seguono, anche con gimbal integrata
Le webcam Insta360 Link 2 Pro e Link 2C Pro sono una proposta di fascia alta per chi cerca qualità 4K e tracciamento automatico del soggetto senza ricorrere a configurazioni complesse. Entrambi i modelli condividono sensore, ottiche e funzionalità audio avanzate, differenziandosi per il sistema di tracciamento: gimbal a due assi sul modello Link 2 Pro, soluzione digitale sul 2C Pro
Motorola edge 70: lo smartphone ultrasottile che non rinuncia a batteria e concretezza
Motorola edge 70: lo smartphone ultrasottile che non rinuncia a batteria e concretezza
Motorola edge 70 porta il concetto di smartphone ultrasottile su un terreno più concreto e accessibile: abbina uno spessore sotto i 6 mm a una batteria di capacità relativamente elevata, un display pOLED da 6,7 pollici e un comparto fotografico triplo da 50 MP. Non punta ai record di potenza, ma si configura come alternativa più pragmatica rispetto ai modelli sottili più costosi di Samsung e Apple
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
Città: TO
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, SCJP 5 (91%) - SCWCD 5 (94%)
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
Città: TO
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, SCJP 5 (91%) - SCWCD 5 (94%)
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
Città: TO
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, SCJP 5 (91%) - SCWCD 5 (94%)
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
Città: TO
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, SCJP 5 (91%) - SCWCD 5 (94%)
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: 19149
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
Città: TO
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, SCJP 5 (91%) - SCWCD 5 (94%)
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: 19149
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: 19149
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: 19149
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
Città: TO
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, SCJP 5 (91%) - SCWCD 5 (94%)
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


HONOR Magic 8 Pro: ecco il primo TOP del 2026! La recensione HONOR Magic 8 Pro: ecco il primo TOP del 2026! L...
Insta360 Link 2 Pro e 2C Pro: le webcam 4K che ti seguono, anche con gimbal integrata Insta360 Link 2 Pro e 2C Pro: le webcam 4K che t...
Motorola edge 70: lo smartphone ultrasottile che non rinuncia a batteria e concretezza Motorola edge 70: lo smartphone ultrasottile che...
Display, mini PC, periferiche e networking: le novità ASUS al CES 2026 Display, mini PC, periferiche e networking: le n...
Le novità ASUS per il 2026 nel settore dei PC desktop Le novità ASUS per il 2026 nel settore de...
Germania, bonus per le auto elettriche d...
Nella causa OpenAI, Elon Musk rivendica...
DJI Osmo 360 in offerta su Amazon: video...
Canada: raggiunto accordo con la Cina, c...
500 terabyte di libri pirata per addestr...
Mandiant le pubblica rainbow table Net-N...
Robot aspirapolvere top di gamma al mini...
Changan prepara l'offensiva in Europa: 8...
Call of Duty rallenta: finisce l'era del...
Colossus 2 entra in funzione: il superco...
Ningtendo PXBOX 5: PS5, Xbox Series X e ...
Scossone in Ubisoft: il boss di The Divi...
Nuovo Media Creation Tool per Windows 11...
Animazioni credibili per ingannare gli u...
Hyundai mostra il camper elettrico STARI...
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: 15:01.


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