Implementazioni tecniche di upscaling


15

Quindi ho visto bicubici e frattali elencati come metodi di upscaling delle foto. Quali sono i dettagli tecnici alla base di come funzionano e perché / quando uno è migliore dell'altro?


upsize: bilineare; downsize: lanczos 3.

Risposte:


15

Innanzitutto, l'ingrandimento dell'immagine comporta lo spostamento dei pixel separati di una quantità fissa e il riempimento dello spazio tra pixel precedentemente vicini con contenuti simili. Questo può essere fatto attraverso la fabbricazione di pixel di base (filtro bicubico) o tramite mezzi più complessi, come la conversione dell'immagine in una rappresentazione vettoriale e il ridimensionamento nello spazio vettoriale.

Il filtro bicubico, insieme al filtro bilineare, usa una curva di funzione relativamente semplice per fondere insieme i colori dei pixel vicini quando si ingrandisce un'immagine. Bilineare usa una curva di funzione lineare, mentre Bicubic usa una curva di funzione spline cubica (cspline). La filtrazione bicubica generalmente produce risultati più fluidi, tuttavia entrambi gli algoritmi stanno fondendo i valori dei pixel vicini attraverso una curva di funzione per "riempire gli spazi" durante l'ingrandimento di un'immagine. Va notato che il ridimensionamento bicubico è generalmente senza perdita, in quanto viene generato solo lo spazio tra i pixel originali. A seconda delle sfumature di implementazioni specifiche, i pixel originali possono variare leggermente, tuttavia, per la maggior parte, i dati originali vengono conservati e vengono fabbricati nuovi dati da riempire man mano che l'immagine viene ingrandita.

L'approccio frattale al ridimensionamento delle immagini ha un approccio completamente diverso. Algoritmi più complessi vengono utilizzati per analizzare il contenuto di un'immagine, identificare bordi e "oggetti" e infine convertire l'immagine in un formato vettoriale frattale. Una volta che l'immagine è vettorializzata, può essere ridimensionata "senza perdita di dati" nello spazio vettoriale, quindi ridimensionata con dimensioni maggiori. Gli algoritmi frattali, come quelli genuini, utilizzano un algoritmo vettoriale frattale per ridimensionare un'immagine mantenendo bordi lisci e nitidi. Questo approccio è utile quando l'immagine ha inizialmente bordi nitidi e riconoscibili come fattore chiave e è importante mantenere una nitidezza nitida su tali bordi.

Inoltre, Genuine Fractals tenta di mantenere i dettagli non edge attraverso il concetto di "auto-somiglianza", preservando i dettagli considerando il contenuto dell'immagine come frattale in natura e ridistribuendo il contenuto non edge dagli algoritmi frattali. Questo ha il presunto vantaggio di, piuttosto che semplicemente fabbricare informazioni da pixel vicini, è possibile generare nuovi contenuti da schemi composti da molti pixel. Questo approccio può funzionare benissimo quando si esegue l'upscaling di circa il 200%, tuttavia la natura vettoriale fondamentale del ridimensionamento diventa più evidente quando si esegue il ridimensionamento a dimensioni maggiori. Va anche notato che questo metodo di ridimensionamento non è privo di perdite e alcuni dettagli pixel fini potrebbero essere scartati mentre l'algoritmo tenta di trovare il frattalemodelli che possono essere replicati. L'upscaling estremo può comportare una replica visibile del motivo e i dettagli dei bordi sottili possono essere cancellati nel tentativo di mantenere bordi lisci e nitidi a tutte le dimensioni dell'immagine.

BenVista fornisce anche un algoritmo proprietario chiamato S-Spline. Ci sono poche informazioni sui dettagli di questo algoritmo, tuttavia sembra un altro algoritmo basato sulla curva di funzione. Il ridimensionamento S-Spline Max in PhotoZoom Pro, come i frattali genuini, fa un ottimo lavoro mantenendo la definizione dei bordi. Questo algoritmo è anche in grado di ridimensionare fino a circa il 200% o giù di lì, tuttavia spingendo questo algoritmo molto più in là si ottiene una degradazione e un livellamento visibili dei dettagli senza bordi. Sembra che il compromesso generale negli algoritmi di ridimensionamento sia la massima definizione dei bordi o la massima conservazione dei dettagli. Va inoltre notato che la maggior parte degli algoritmi di ridimensionamento di terze parti, inclusi Genuine Fractals e BenVista PhotoZoom Pro, applicano automaticamente una maschera di contrasto all'immagine finale per impostazione predefinita.

È possibile utilizzare bicubico in modo iterativo. Il punto cruciale del ridimensionamento bicubico è che produce più informazioni più grande è la scala, al costo finale di nitidezza. Eseguendo il ridimensionamento bicubico con incrementi del 3-5%, si conservano dettagli molto più originali o quasi originali e si fabbricano molte meno immagini ad ogni passaggio. I risultati finali di un ridimensionamento bicubico iterativo (o a gradini) possono mantenere una definizione dei bordi notevolmente maggiore, senza perdere dettagli precisi. Il costo, tuttavia, è un investimento personale di gran lunga maggiore nel ridimensionamento, poiché al momento non ci sono applicazioni prefabbricate che lo faranno per te. Devi calcolare manualmente la nuova larghezza e altezza dell'immagine ad ogni passaggio moltiplicando la larghezza o l'altezza precedente per la percentuale di ridimensionamento e collegando quel numero al programma di modifica delle immagini " s strumento di ridimensionamento bicubico. I risultati finali possono essere superbi e nitidi come un'immagine bicibica con mascheratura di contrasto. I limiti per quanto più grande è possibile ridimensionare un'immagine senza danno visibile è molto più grande di altri algoritmi, almeno del 400%, forse di più.


Hmm. Sarebbe abbastanza facile scrivere quel ridimensionamento bicubico iterativo come uno script gimp o un'azione photoshop ....
Leggi il profilo

L'ho provato come azione di Photoshop, tuttavia non ho avuto successo, poiché richiedeva informazioni di calcolo. In realtà non faccio molto scripting con Photoshop, quindi non sono sicuro che supporti funzioni matematiche o script.
jrista

2
+1 Wow, fantastica risposta dettagliata. Ho pensato che fosse una domanda noiosa fino a quando non ho letto la tua risposta.
march

Ho appena testato il rezising multiplo in Paint.net, ma i risultati non erano quelli indicati in questa risposta, l'immagine ridimensionata più volte risultava tanto sfocata quanto la stessa immagine ricampionata solo una volta. Ho provato con la stessa immagine ridimensionando al 200% e iterativo 104% ogni volta fino a raggiungere approssimativamente le stesse dimensioni dei pixel.
Jahaziel,

1
Se vuoi un esempio di bicubico iterativo fatto su un'immagine che ha beneficiato del metodo, guarda la mia analisi qui: Studio empirico: upscaling digitale estremo
jrista
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.