Torna indietro   Hardware Upgrade Forum > Software > Programmazione

 Recensione OPPO Find X10 Pro Max: un top di gamma completo con tre fotocamere da 200MP
Recensione OPPO Find X10 Pro Max: un top di gamma completo con tre fotocamere da 200MP
OPPO ha appena lanciato sul mercato la nuova serie Find X10, che ha come smartphone premium il Find X10 Pro Max, uno smartphone completo, che fa del comparto fotografico il suo vero punto di forza. Ma sono tante le novità, tra cui l'AI che adesso diventa agentica. Ma andiamo a vedere nel dettaglio questo nuovo smartphone.
WoW Forever provato: il MMORPG che la community chiedeva da anni è arrivato
WoW Forever provato: il MMORPG che la community chiedeva da anni è arrivato
Abbiamo provato la beta di World of Warcraft: Forever, il Classic+ di Blizzard in arrivo il 4 novembre: la nuova razza Skyborne restituisce la sensazione di un gioco nuovo, ma le zone storiche conservano la noia divertita di Classic. Classi ribilanciate, sciamani anche nell'Alleanza e un motore grafico che in 4K gira bene anche su una RTX 3070. Cosa cambia in Forever? La risposta nell'articolo
TCL P80 Ultra: con un display AMOLED opaco è una gioia per gli occhi e per le dita
TCL P80 Ultra: con un display AMOLED opaco è una gioia per gli occhi e per le dita
TCL P80 Ultra abbina per la prima volta un pannello AMOLED alla tecnologia NXTPAPER con finitura opaca, affiancandoci una fotocamera periscopica da 50 MP con zoom ottico 3x, il SoC Dimensity 7400 Elite e una batteria da 5.800 mAh. Nella prova sul campo emergono luminosità di picco molto elevata, comparto fotografico solido per la fascia di prezzo e autonomia nella media, a fronte di velocità di scrittura dello storage piuttosto contenute
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 08-04-2009, 10:47   #1
Dyd87
Senior Member
 
L'Avatar di Dyd87
 
Iscritto dal: Feb 2007
Città: Senigallia(AN)
Messaggi: 2069
[TeoriaImmagini] Algoritmi Filtri

Salve a tutti
Come da titolo , volevo avere da voi , se possibile , delucidazioni su algoritmi di filtraggio immagini come :seppia , bianco e nero ecc...
Per il momento so solo che per applicare tali filtri occorrerebbe modificare , direttamente tramite codice, il codice (scusate la ripetizione) esadecimale dell'immagine...
Qualche spunto o idea o link per capirci qualcosa?
Grazie mille
Ciao
Dyd87 è offline   Rispondi citando il messaggio o parte di esso
Old 08-04-2009, 11:17   #2
-MiStO-
Senior Member
 
Iscritto dal: May 2005
Città: Trieste
Messaggi: 2288
per quello che mi ricordo
detto semplicemente e linearmente(il caso base) ad ogni pixel sono associati 3 valori rappresentanti le 3 componenti di "colore" per quel pixel (a seconda della codifica potrebbe essere rgb o cmy o his o altre)
a seconda del filtraggio scelto modifichi uno o più componenti per ottenere il risultato desiderato
se cerchi su google qualcosa trovi sicuro (magari usando come chiavi i vari tipi di codifica)
__________________
neo mini v2 / asus strix z490i / 10600k@? / uh12s / rx6700xt / 32gb ddr4@3200 / sandisk 250 + asenno 1tb / lenovo g34w
trattative concluse : tante...

-MiStO- è offline   Rispondi citando il messaggio o parte di esso
Old 08-04-2009, 14:52   #3
Dyd87
Senior Member
 
L'Avatar di Dyd87
 
Iscritto dal: Feb 2007
Città: Senigallia(AN)
Messaggi: 2069
Grazie innanzitutto
Mostro qui sotto un'immagine di un editor esadecimale:



La parte destra è codice Ascii , se non erro.
La sinistra dovrebbe rappresentare la parte esadecimale di ogni pixel (sbaglio?)
Ho trovato inoltre questo riferimento
http://it.wikipedia.org/wiki/Seppia_(colore)
Solo che qui viene indicato il colore Seppia , non la tecnica di filtraggio che si basa , si , su colorazioni marroncine...
Dyd87 è offline   Rispondi citando il messaggio o parte di esso
Old 09-04-2009, 14:57   #4
Dyd87
Senior Member
 
L'Avatar di Dyd87
 
Iscritto dal: Feb 2007
Città: Senigallia(AN)
Messaggi: 2069
Up
Dyd87 è offline   Rispondi citando il messaggio o parte di esso
Old 09-04-2009, 15:24   #5
yorkeiser
Senior Member
 
L'Avatar di yorkeiser
 
Iscritto dal: Jul 2006
Città: Tristram
Messaggi: 517
In primis, devi distinguere se l'immagine è in formato compresso o meno.
Ad esempio, in una bitmap (.bmp) l'immagine non è compressa, quindi, dopo il necessario header (una serie di byte iniziali che indicano, tra gli altri, la dimensione dell'immagine, la profondità di bit ed altre informazioni) partono le informazioni relative ai colori di ogni singolo pixel.
Ergo, se hai una bitmap con profondità di colore a 32 bit, ovvero 8 bit per ogni componente di colore (rossa, verde e blu) più 8 bit per la componente alfa, ogni coppia di esadecimali (come 'FF', che è un byte, ovvero 8 bit) rappresenta una componente di colore per quel pixel.
Ad esempio, un pixel blu intenso è composto da 4 byte che in esadecimale sarebbero 00 - 00 - 00 - FF, dove 'FF' è il massimo valore (255) per la componente blu, mentre alfa, rosso e verde sono settati a '00', ovvero 0.
Se l'immagine invece è in un formato compresso (ad esempio .jpg), per ottenere il valore di colore dei singoli pixel devi prima passare per un opportuno algoritmo di decompressione.
Una volta che ottieni tutte le terne di colori per ogni singolo pixel della tua immagine, basta modificare quei valori per ottenere degli effetti di filtraggio.
__________________
Il sole è giallo
yorkeiser è offline   Rispondi citando il messaggio o parte di esso
Old 09-04-2009, 15:33   #6
Dyd87
Senior Member
 
L'Avatar di Dyd87
 
Iscritto dal: Feb 2007
Città: Senigallia(AN)
Messaggi: 2069
Grazie mille per la risposta
Ti vorrei porre un altro quesito: come dovrebbero essere gli algoritmi di filtraggio (mi ripeto , vedi Seppia) ,una volta ottenute le terne di colori in forma "trattabile"?
Ovvero sia , in che modo operano questi algoritmi?
In base a cosa modificano le singole terne , creando quei tanto "piacevoli" o non, effetti?
Vorrei capire come "ragionano" per intenderci...
Grazie

P.s: mi sono scaricato persino i source di Gimp per cercare di capire come funzionino
Dyd87 è offline   Rispondi citando il messaggio o parte di esso
Old 09-04-2009, 16:33   #7
Tommo
Senior Member
 
L'Avatar di Tommo
 
Iscritto dal: Feb 2006
Messaggi: 1304
Se devi farlo in C/C++ ti consiglio FreeImage, ti permette di accerere ai dati di immagini di qualsiasi formato in maniera piuttosto intuitiva (20 righe) poi si trova codice per il loading/saving pronto all'uso.

Quando ottieni poi l'elenco dei raw pixel diventa molto facile eseguire qualsiasi filtro ti serva, devi solo fare attenzione quando accedi il buffer dei pixel (monodimensionale) come un'immagine (due dimensioni).
__________________
*ToMmO*

devlog | twitter
Tommo è offline   Rispondi citando il messaggio o parte di esso
Old 09-04-2009, 17:55   #8
yorkeiser
Senior Member
 
L'Avatar di yorkeiser
 
Iscritto dal: Jul 2006
Città: Tristram
Messaggi: 517
Quote:
Originariamente inviato da Dyd87 Guarda i messaggi
Grazie mille per la risposta
Ti vorrei porre un altro quesito: come dovrebbero essere gli algoritmi di filtraggio (mi ripeto , vedi Seppia) ,una volta ottenute le terne di colori in forma "trattabile"?
Ovvero sia , in che modo operano questi algoritmi?
In base a cosa modificano le singole terne , creando quei tanto "piacevoli" o non, effetti?
Vorrei capire come "ragionano" per intenderci...
Grazie
P.s: mi sono scaricato persino i source di Gimp per cercare di capire come funzionino
Non ho idea precisamente di cosa voglia dire effetto seppia, ma facciamo l'esempio del bianco e nero (o meglio, scala di grigi), che forse ci si avvicina.
Un'idea per effettuare un rozzo effetto di bianco e nero potrebbe essere quella di calcolare l'intensità di ogni pixel e trasformarla in grigio.
L'intensità di un pixel potresti ad esempio calcolarla come:
(R + G + B) / 3
dove R, G e B sono i valori della componente rossa, verde e blu del pixel originario.
Una volta calcolata l'intensità, per trasformarla in un grigio basta copiare il suo valore (appena calcolato) nelle tre componenti R G B (un pixel grigio è caratterizzato dall'avere le 3 componenti di valore uguale o comunque con poca differenza).
__________________
Il sole è giallo
yorkeiser è offline   Rispondi citando il messaggio o parte di esso
Old 09-04-2009, 19:23   #9
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
Le immagini sono funzioni del colore nello spazio o funzioni del colore nella frequenza.

I filtri non sono altro che composizioni di funzioni con l'immagine (intesa a sua volta come funzione).

Ad esempio il blur è una funzione che taglia i picchi di frequenza dall'immagine intesa come funzione del colore nella frequenza (ottieni una rappresentazione del colore nella frequenza applicando una trasformata di fourier alla funzione del colore nello spazio).

Il "sepia tone" fa una cosa simile solo che anzichè "tagliare" i picchi sposta le bande in un range di frequenza che corrisponde ad un determinata tonalità di colore.

Almeno in teoria, non ho mai provato ad applicare un effetto seppia da codice :
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me!
PGI-Bis è offline   Rispondi citando il messaggio o parte di esso
Old 09-04-2009, 20:29   #10
Tommo
Senior Member
 
L'Avatar di Tommo
 
Iscritto dal: Feb 2006
Messaggi: 1304
Beh, ci son sicuramente diversi modi di intendere i filtri... per esempio uno shader su un'immagine è sicuramente un filtro.

IMHO al computer, più che come una funzione, è meglio pensare all'immagine come ad un array di colori... e il filtro come una funzione che li "mischia" a seconda della loro prossimità.

Il seppia credo sia facile da fare, basta rendere l'immagine una grayscale e poi usarla per interpolare fra marrone scuro e giallino... almeno io farei cosi'
__________________
*ToMmO*

devlog | twitter
Tommo è offline   Rispondi citando il messaggio o parte di esso
Old 10-04-2009, 07:10   #11
BrutPitt
Senior Member
 
L'Avatar di BrutPitt
 
Iscritto dal: Mar 2009
Città: Bologna
Messaggi: 1180
Quoto PGI-Bis, anche se ce ne sarebbe da dire sull'argomento...

Insomma un filtro e' una "funzione" (nel termine matematico del termine) tale che y=f(x) per ogni x,y appartenenti a RGB, o CMY, o HSL, o HSV, o CrCbY... etc. che sono tutti spazi di rappresentazione dell'immagine.

Analoghe funzioni possono lavorare anche in frequenza... eventualmente dopo opportune "trasformazioni".

Quote:
Originariamente inviato da yorkeiser Guarda i messaggi
Non ho idea precisamente di cosa voglia dire effetto seppia, ma facciamo l'esempio del bianco e nero (o meglio, scala di grigi), che forse ci si avvicina.
Un'idea per effettuare un rozzo effetto di bianco e nero potrebbe essere quella di calcolare l'intensità di ogni pixel e trasformarla in grigio.
L'intensità di un pixel potresti ad esempio calcolarla come:
(R + G + B) / 3
dove R, G e B sono i valori della componente rossa, verde e blu del pixel originario.
Una volta calcolata l'intensità, per trasformarla in un grigio basta copiare il suo valore (appena calcolato) nelle tre componenti R G B (un pixel grigio è caratterizzato dall'avere le 3 componenti di valore uguale o comunque con poca differenza).
Quasi...
Per acquisire la luminanza (immagine in tonalita' di grigi), bisognerebbe tener conto dell'influenza delle varie lunghezze d'onda delle tre componenti e quanto queste influenzano la percezione, .

In pratica la formula per estrapolare la luminanza:
Date le componenti di colore R,G,B , la luminanza Y e' data dal'espressione:

Y = (0.299 * R) + (0.587 * G) + (0.114 * B)

Una volta ottenuta la luminanza, per ottenere il seppia, potresti seguire qualcosa del genere:
Assumendo che il valore di Y sia compreso in [0,255] e che l'immagine risultante sara' in forma r,g,b, ogni valore compreso tra [0,255], allora le tre componenti sono date da:

se (Y < 225) allora ( r = Y + 30 ) altrimenti ( r = 255 )
g = Y
se (Y > 30) allora ( b = Y - 30 ) altrimenti ( b = 0 )

(qui pero' dipende dalle tonalita', piu' "calde" o piu' "fredde", che desideri ottenere... e adattare le costanti all'occasione)

E cosi' hai trasformato la tua immagine R,G,B... attraverso questo procedinemto (funzione)... in seppia (r,g,b).
In sintesi: (r,g,b) = f(R,G,B).

Ultima modifica di BrutPitt : 10-04-2009 alle 11:19.
BrutPitt è offline   Rispondi citando il messaggio o parte di esso
Old 12-04-2009, 14:44   #12
Dyd87
Senior Member
 
L'Avatar di Dyd87
 
Iscritto dal: Feb 2007
Città: Senigallia(AN)
Messaggi: 2069
Grazie mille per la spiegazione (scusate il ritardo)
Avreste altre idee per "filtri"?
Finora gli unici che mi son venuti in mente , son "seppia" e "bianco e nero"...
Altri non saprei sinceramente , ho provato a guardare quelli per photoshop (tipo Mosaico) ma non mi sembrano semplicissimi...
Grazie ancora , saluti


P.s: Buone feste
Dyd87 è offline   Rispondi citando il messaggio o parte di esso
Old 12-04-2009, 14:51   #13
stdecden
Member
 
L'Avatar di stdecden
 
Iscritto dal: Apr 2007
Messaggi: 263
All'inizio comincerei con una sfocatura con l' algoritmo box-blur, che non fa altro che fare la media di tutti i pixel vicini.
stdecden è offline   Rispondi citando il messaggio o parte di esso
Old 13-04-2009, 09:43   #14
^TiGeRShArK^
Senior Member
 
L'Avatar di ^TiGeRShArK^
 
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12113
high pass, low pass, unsharp mask, deconvolution....
__________________
^TiGeRShArK^ è offline   Rispondi citando il messaggio o parte di esso
Old 13-04-2009, 09:51   #15
Dyd87
Senior Member
 
L'Avatar di Dyd87
 
Iscritto dal: Feb 2007
Città: Senigallia(AN)
Messaggi: 2069
Quote:
Originariamente inviato da stdecden Guarda i messaggi
All'inizio comincerei con una sfocatura con l' algoritmo box-blur, che non fa altro che fare la media di tutti i pixel vicini.
Del tipo: analizzo il primo pixel (terna di colori) lo confronto con quello sotto e quello di lato , faccio la media tra i tre e assegno al primo pixel questa media?
E via di seguito?
Dyd87 è offline   Rispondi citando il messaggio o parte di esso
Old 13-04-2009, 12:11   #16
stdecden
Member
 
L'Avatar di stdecden
 
Iscritto dal: Apr 2007
Messaggi: 263
Non solo quello sotto e quello di lato, ma anche quello sopra, quello sotto a destra, e così via...
Ma sennò l'idea di base è giusta
stdecden è offline   Rispondi citando il messaggio o parte di esso
Old 13-04-2009, 21:29   #17
^TiGeRShArK^
Senior Member
 
L'Avatar di ^TiGeRShArK^
 
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12113
Quote:
Originariamente inviato da Dyd87 Guarda i messaggi
Del tipo: analizzo il primo pixel (terna di colori) lo confronto con quello sotto e quello di lato , faccio la media tra i tre e assegno al primo pixel questa media?
E via di seguito?
per quelli semplici basta applicare una matrice di convoluzione, magari meglio nello spazio di colore YUV.
__________________
^TiGeRShArK^ è offline   Rispondi citando il messaggio o parte di esso
Old 14-04-2009, 15:24   #18
Dyd87
Senior Member
 
L'Avatar di Dyd87
 
Iscritto dal: Feb 2007
Città: Senigallia(AN)
Messaggi: 2069
http://it.wikipedia.org/wiki/Matrice_di_convoluzione
Praticamente (singolo esempio) un pixel di A viene sostituito con il prodotto del pixel sottostante ad A con il pixel di B (quello centrato)?
Oppure no?
Mi sembra non sia così , però non riesco a spiegarmi meglio pardon
Dyd87 è offline   Rispondi citando il messaggio o parte di esso
Old 15-04-2009, 00:16   #19
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
Il pixel di destinazione è composto dalla somma dei pixel della sorgente per i corrispondenti valori del kernel.

Vale a dire, supponendo che il kernel della convoluzione sia la matrice 3x3

Codice:
0.0,0.1,0.2
0.3,0.4,0.5
0.6,0.7,0.8

applicandola ad un'immagine di 3x3 pixel

Codice:
P0, P1, P2
P3, P4, P5
P6, P7, P8
Otteniamo l'immagine di destinazione:

Codice:
P0, P1, P2
P3, XX, P5,
P6, P7, P8
con

Codice:
XX = F{(P0 * 0.0) + (P1 * 0.1) + (P2 * 0.2)  + (P3 * 0.3) + (P4 * 0.4) + (P5 * 0.5) + (P6 * 0.6) + (P7 * 0.7) + (P8 * 0.8)}
PX * N è la moltiplicazione di un vettore (r, g, b, a) per uno scalare N, F(P) è la funzione di riduzione dei componenti di P al limite inferiore o superiore (es. se il canale red va da -1 a 1 e la moltiplicazione col kernel lo porta a ventimila F lo riduce a 1).

Se l'immagine è più grande del kernel la convoluzione si applica allo stesso modo, "spostando il kernel all'interno dell'immagine".

Vale a dire, immagine:

Codice:
P00, P01, P02, P03
P04, P05, P06, P07
P08, P09, P10, P11
Kernel:

Codice:
A,B,C
D,E,F
G,H,I
la convoluzione genera l'immagine:

Codice:
P00, P01, P02, P03
P04, XXX, YYY, P07
P08, P09, P10, P11
con

Codice:
XXX = F(A*P00 + B*P01 + C*P02 + D*P04 + E*P05 + F*P06 + G*P08 + H*P09 + I*P10).
YYY = F(A*P01 + B*P02 + C*P03 + D*P05 + E*P06 + F*P07 + G*P09 + H*P10 + I*P11).
Tutto qua.
PGI-Bis è offline   Rispondi citando il messaggio o parte di esso
Old 15-04-2009, 10:05   #20
Dyd87
Senior Member
 
L'Avatar di Dyd87
 
Iscritto dal: Feb 2007
Città: Senigallia(AN)
Messaggi: 2069
Che dire...
Grazie!
Dyd87 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


 Recensione OPPO Find X10 Pro Max: un top di gamma completo con tre fotocamere da 200MP Recensione OPPO Find X10 Pro Max: un top di gam...
WoW Forever provato: il MMORPG che la community chiedeva da anni è arrivato WoW Forever provato: il MMORPG che la community ...
TCL P80 Ultra: con un display AMOLED opaco è una gioia per gli occhi e per le dita TCL P80 Ultra: con un display AMOLED opaco &egra...
HUAWEI MatePad Air recensione: OLED opaco e tastiera dedicata per lavorare meglio HUAWEI MatePad Air recensione: OLED opaco e tast...
NVIDIA RTX Spark: il PC Windows on ARM costruito per l'IA agentica NVIDIA RTX Spark: il PC Windows on ARM costruito...
Electronic Arts avvia una profonda riorg...
NVIDIA rilascia i driver 621.01: debutta...
Rowenta X-Clean 12: lavapavimenti con fu...
OPPO Enco X4 ufficiali: doppio driver Dy...
OPPO Find X10 e Find X10 Pro Max arrivan...
Recensione OPPO Enco X4: tecnologia da t...
Qualcomm, ricavi in calo e svolta verso ...
Blink Mini 4K+ e Pan-Tilt 2K+ in preordi...
Booking.com sotto indagine UE: nel mirin...
Generative Bionics apre la più gr...
Mercury 3 di Inception: 1 milione di tok...
RAM per portatili e PC all-in-one in off...
PHP, due falle critiche: patch alle 16 e...
ISRO sta proseguendo lo sviluppo della n...
Greenpeace interrompe il keynote di Jens...
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: 00:38.


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