Nel ridimensionamento delle immagini, il filtro evita un fenomeno chiamato aliasing. Se si tenta di ridimensionare senza filtro, aliasing in genere si manifesta come effetti pixelizzate fastidiosi, che sono particolarmente visibili quando animata ...
Per rispondere alla tua punti:
Il filtro non calcolare quanto ogni fonte il pixel contribuisce a ciascuna destinazione. Per il ridimensionamento, si desidera un filtro lineare , che è piuttosto semplice: il filtro può essere visualizzato come una piccola immagine in scala di grigi; in modo efficace, si centra il filtro su una posizione corrispondente a ciascun pixel di uscita, si moltiplica ciascun pixel vicino per il valore del filtro in quella posizione e si aggiungono per ottenere il valore del pixel di uscita.
Tutti questi filtri sono "filtri di convoluzione", poiché la convoluzione è il nome matematico per l'operazione sopra descritta. Un filtro "scatola" assomiglia letteralmente a una scatola: ogni pixel all'interno della casella viene pesato allo stesso modo, mentre i filtri "gaussiani" sono più chiari arrotondati, sfumati verso lo zero.
La cosa più importante per l'upscaling e il downscaling è scegliere il giusto dimensione per il filtro. In breve, si desidera ridimensionare il filtro in base a qualsiasi input e l'output ha la risoluzione più bassa. La seconda cosa più importante è evitare filtri cattivi: il filtro "box" è quello che si ottiene normalmente quando si tenta di ridimensionare senza filtrare; un filtro "bilineare" fornito dall'hardware della computer grafica produce un upscaling mediocre, ma viene fornito nella dimensione sbagliata per il downscaling.
Per motivi di prestazioni, è opportuno ridimensionare le immagini in una dimensione e poi nell'altra. Ciò significa che il filtro funziona molto più velocemente: in tempo proporzionale alla larghezza del filtro, anziché proporzionale all'area del filtro. Tutti i filtri discussi qui sono "separabili", il che significa che puoi applicarli in questo modo.
Se si sceglie un filtro di alta qualità, la forma esatta è meno critica di quanto si possa pensare. Esistono due classi di buoni filtri: quelli positivi come "gaussiano" che tendono al lato sfocato e quelli con lobi negativi come "lanczos" che sono nitidi, ma possono produrre lievi effetti di chiamata. Nota che i filtri "bicubici" sono una categoria, che include "B-spline" che è completamente positivo, e "Mitchell" e "Catmull-Rom" che hanno lobi negativi.
Grazie mille!Penso di aver finalmente capito quando Wikipedia dice che "[un bicubico] interpolatore con proprietà simili può essere ottenuto applicando una convoluzione". Un'ultima cosa, però, non riesco ancora a capire come funziona la ** dimensione ** per l'upscaling e il downscaling. Ho visto molte volte che un filtro ha hardcoded il valore, dice Catmull-Rom è di dimensione 2. Soprattutto quale downscaling va, se ho un'immagine 1000px grande e cosa ridimensionarlo a 10px, se la dimensione fosse 100? Non è lento a "avarage" (?) 100 pixel per ogni pixel in uscita? –
La tua ipotesi è corretta. Per l'upscaling, il filtro deve essere dimensionato in base al pitch del pixel in ingresso, ma per il downscaling, il filtro deve essere dimensionato in base al pitch del pixel in uscita. Questo è ciò che intendevo quando ho scritto "vuoi scalare il filtro in base a qualsiasi input e l'output ha la risoluzione più bassa". – comingstorm
E, sì, è lento per pixel di output, ma non ci si può aspettare di scappare senza elaborare tutti i * input * pixel. – comingstorm