Domanda

Così qui è il mio problema:

Ho un'immagine, l'immagine è grande (alta risoluzione) e ha bisogno di essere di piccole dimensioni (risoluzione molto più bassa).

Così faccio la cosa ingenua (uccidere tutti gli altri pixel) e il risultato appare poveri.

Quindi cerco di fare qualcosa di più intelligente (filtrazione passa-basso con una trasformata di Fourier e ri-campionamento nello spazio di Fourier) e il risultato è un po 'meglio, ma ancora piuttosto scarsa.

Quindi la mia domanda, c'è un'immagine percettivamente motivato down-sampling algoritmo (o implementazione)?

modifica: Mentre io sono a conoscenza di una serie di tecniche di ricampionamento, la mia domanda è più interessato a preservare le caratteristiche percettive, piuttosto che produrre immagini più morbide.

EDIT2: è lecito ritenere che ho un certo livello di familiarità con l'elaborazione del segnale digitale, circonvoluzioni, trasformate wavelet, etc

È stato utile?

Soluzione

bicubica è generalmente considerato abbastanza buono, ma non esiste una soluzione perfetta, dipende dalle persone e dalle proprietà dell'immagine in fase di resampled.

Link correlati:

Io non sapevo nemmeno che la nitidezza è stato chiamato anche acutance .

Aliasing è un problema che può verificarsi quando downsampling ingenuamente.

Altri suggerimenti

Leggere questo:

http://www.dspguide.com/

OK, questo è piuttosto una lettura. Ma capire disegno del filtro sarebbe utile.

In generale, il processo per il ridimensionamento di un'immagine da W1 x H1 a W2 x H2 dove W1, W2, H1, H2 sono interi, è quello di trovare nuovi W3, H3 in modo che W1 e W2 sono fattori interi di W3 e H1 e H2 sono fattori interi di H3, e quindi il pad l'immagine originale con zeri (serve per distanziare i pixel dell'immagine originale) in modo che sia ora W3 x H3 dimensioni. Questo introduce le alte frequenze a causa di discontinuità nell'immagine, quindi si applica un filtro passa-basso per l'immagine, e quindi decimare l'immagine filtrata per la sua nuova dimensione (W2 x H2). Suona come si potrebbe essere cercando di fare questo già, ma il filtraggio può essere fatto nel dominio del tempo in modo che la trasformata di Fourier non è realmente necessario.

In pratica, il processo che ho appena descritto è ottimizzato (noterete che quando si applica un filtro convoluzione all'immagine upscaled maggior parte dei termini sarà 0, in modo da poter evitare la maggior parte delle operazioni di moltiplicazione nel vostro algoritmo, per esempio. e poiché si finisce per gettare via molti dei risultati filtrati, non hai bisogno di calcolare quelli, così si finisce con una manciata di moltiplicazioni e addizioni per ogni pixel dell'immagine di destinazione, in fondo. il trucco è quello di figura quali coefficienti da usare.)

libswscale nel progetto ffmpeg fa qualcosa del genere, credo. Check it out:

http://gitorious.org/libswscale

Come altri hanno sottolineato, (e apparentemente notato) decimando l'immagine introduce aliasing artefatti. Non posso essere sicuro circa l'implementazione ricampionamento, ma la tecnica ha trucchi interessanti a seconda della dimensione della finestra si usa e di altri dettagli di implementazione.

Pascal è giusto. Dipende l'immagine, e da quello che vuoi. Alcuni fattori:

  • conservando spigoli
  • i colori preservando
  • velocità algoritmo

Questa è il metodo .

Alcuni altri:

Si noti che a volte il ricampionamento verso il basso si può ottenere un risultato più nitida rispetto, ad esempio, utilizzando una fotocamera a risoluzione inferiore, perché non ci saranno bordi dell'immagine ad alta risoluzione, che non può essere rilevato da un dispositivo a basso res in.

Nota laterale: Molti algoritmi (soprattutto vicino più vicino) può essere ottimizzato se si ridimensionamento da un numero intero (ad esempio dividendo per 4 o 6)

.

ImageMagick metodi downsampling raccomandati "general purpose" sono discussi qui: http: // www .imagemagick.org / Uso / filtro / Nicolas / # downsample

Si potrebbe provare un algoritmo di ridimensionamento a conoscenza dei contenuti. Vedere: http://www.seamcarving.com/

Vernice Mono (un fork del sistema operativo di Paint.NET ) implementa algoritmo di sovracampionamento per un'immagine downsampling qui: http://code.google.com/p/paint-mono/source/browse/trunk/src/PdnLib/Surface.cs?spec=svn59&r=59#1313

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top