Grafica > 2D

Ridimensionamento immagine

(1/6) > >>

CrashTest:
Sera ragazzi,

scusate il lungo periodo di assenza ma in questo periodo sono molto impegnato con l'uni.
Sono qui perchè ho un piccolo problema. Qualcuno ha mai avuto a che fare con l'elaborazione di immagini? Devo scalare uno sprite per un videogioco (ma una immagine qualunque fa lo stesso) per fare in modo che si ridimensioni in base alla grandezza della finestra. Non posso usare nessuna libreria ad hoc, nessun motore grafico, niente di niente. Solo C++ ed una libreria multimediale (SFML). Per fare questo sto immaginando l'immagine come una serie di punti in uno spazio euclideo a due dimensioni. Essendo una immagine raster, in caso di trasformazioni geometriche questa è soggetta a perdita di qualità.

Per scalare l'immagine e ricostruire i colori avevo pensato di usare l'interpolazione che mi permette approssimare il valore di una funzione nell' intorno di un punto. Essendo l'immagine in un piano a due dimensioni ho pensato ad una interpolazione bilineare (semplicemente una interpolazione lineare ma in funzione di due variabili, in questo caso x ed y, gli assi del piano) che dato un punto -in questo caso sarebbe il pixel- analizza i pixel più vicini per trovare il miglior valore RGB per quel punto. Parlando con un ragazzo però, è uscita fuori l'interpolazione nearest-neighbor che a differenza della bilineare dovrebbe essere più semplice da implementare. Ora sono ancora più confuso di prima, quale sistema secondo voi è più preciso? Avete qualche suggerimento?

g:
Esiste 1 algorimo di cui non ricodro il nome ma somiglia a vignetta(AAAaaaAAaAIUuuUUuuUUtoooOOoO...) mi pare basato sulla FFT bidimensionale nato esattamente x il ridimensionamento

Ma a pensarci ci DEVE essere x forza 1 funzione di sistema Linux interna all'X-Windows e dovresti poterla lanciare direttamente da C

CrashTest:
Diciamo che dello scaling di uno sprite quando ridimensioni una immagine se ne occupa il renderer in automatico, a me serve scrivere un algoritmo che faccia questo.
È per scopi didattici piuttosto che pratici, appoggiarmi a qualcosa di pronto non risolve il mio problema.
Una soluzione per ricostruire l'immagine scalata sarebbe prendere un punto e fare un subsampling come si deve usando un filtro passa basso (gaussian blur) insieme ad una decimazione che prende un punto sì qualche punto no, ma è una cosa troppo complessa. Oppure se avessi usato OpenGL avrei potuto fare una piramide con dei livelli di mip mapping che contengono diverse versioni subsampled e userei un filtro trilineare che prende due immagini a diversa risoluzione per variare la scala in maniera più morbida. Di soluzioni, appoggiandosi ad API e motori grafici ce ne sono, a me però serve studiare un sistema per farlo partendo da zero e le prime soluzioni che ho trovato sono state le due interpolazioni: bilineari e nearest-neighbor

g:
Infatti ti volevo suggerire di studiarti quell'algoritmo"vignetta" ;)

CrashTest:
Va bene, ora cerco qualcosa su quell'algoritmo ahahah. Grazie mille :D

Navigation

[0] Message Index

[#] Next page

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 
There was an error while thanking
Thanking...
Go to full version