In che modo un computer esegue l'upscaling della risoluzione 1024x768 a 1920x1080?


8

Senza che ci siano barre nere, intendo. 1080 non è un multiplo di 768, quindi c'è una sorta di perdita di dati?


5
Esistono algoritmi di ridimensionamento come il ridimensionamento bicubico che utilizzano spline per approssimare il colore dei pixel quando vengono ridimensionati a qualsiasi dimensione.
EvilTak

@EvilTak, puoi espandere il tuo commento in una piccola risposta?
glampert

@glampert lo ha fatto. Vuoi che rimuova il mio commento?
EvilTak

@EvilTak, penso che tu possa lasciarlo. Bella risposta tra l'altro, grazie!
glampert

Risposte:


8

In sostanza un'immagine è un gruppo di punti campione (leggi Un pixel non è un quadratino 3 ). Quando si trasforma o si ridimensiona l'immagine, è necessario ricampionarla. Quindi, teoricamente, ciò che fai è prendere i campioni puntuali e convertirli in una funzione continua. Quindi campionare quella funzione continua e ricostruire un segnale. Quindi, ci sono due o tre fasi diverse qui.

  1. Conversione dei campioni in una funzione continua, (ricostruzione della funzione).
  2. (Transforming)
  3. Ricampionamento del segnale

Si noti che nessuno di questi passaggi ha una forma fissa. In pratica, quando ottimizzato, è impossibile dire che ci sono dei passaggi. La trasformazione non deve essere davvero semplice, potrebbe essere la mappatura della forma in una spirale ecc.

Ricostruzione del segnale

Immagine 1 : un segnale 1-D ricostruito da diversi filtri.

In pratica, è noto un po 'di conoscenza della ricostruzione del segnale nel campo dell'elaborazione del segnale. Progettare questi filtri e scegliere quello giusto è una forma d'arte a sé stante. Ma, in sostanza, la scelta del filtro è un compromesso tra sfocatura e suoneria . Naturalmente l'algoritmo ha anche altre qualità come quante istruzioni sono necessarie per implementare e quanto velocemente e quanta memoria ha bisogno ecc. Che può essere molto importante in tempo reale o applicazioni incorporate.

Il processo

Immagine 2 : panoramica dell'intero processo.


5

Sono disponibili numerosi algoritmi di upscaling e downscaling per ridimensionare le immagini da qualsiasi risoluzione a qualsiasi altra risoluzione arbitraria. Ogni algoritmo comporta in genere un compromesso tra efficienza, scorrevolezza e nitidezza, con vari gradi di ciascun compromesso per algoritmi diversi.

Dai un'occhiata a questo articolo di Wikipedia per tali algoritmi ed esempi di tali algoritmi.

L'algoritmo più popolare (e utilizzato) è l' algoritmo di interpolazione bicubica . Interpola tra punti 2D su una griglia rettangolare. Usando Spline cubiche (o Interpolazione cubica), prima interpola su una dimensione (trova la riga / colonna interpolata), quindi interpola la riga / colonna interpolata nell'altra dimensione.

L'interpolazione bilineare è simile all'interpolazione bicubica, ad eccezione del fatto che il primo interpola usando una funzione lineare e può interpolare solo tra due valori e il secondo utilizza una funzione cubica e può interpolare tra quattro valori.

La semplice funzione per l'interpolazione bicubica è la seguente:

f(f(p00, p01, p02, p03, y),
  f(p10, p11, p12, p13, y),
  f(p20, p21, p22, p23, y),
  f(p30, p31, p32, p33, y),
  x)

dove (x, y) è la posizione interpolata e p [] [] è l'array 2d che rappresenta la griglia 4 * 4.

Controlla questo link per ulteriori informazioni e un codice di esempio, che aiuta davvero molto!


0

Mentre le altre risposte fornite sono corrette, non sono sicuro che rispondano interamente alla tua domanda. Per non ottenere le barre nere hai 2 opzioni se la destinazione non ha la stessa forma (o formato) dell'origine:

  1. Riempi la destinazione lasciando alcuni pixel dalla sorgente fuori dalla destinazione. Nel tuo esempio, l'origine è 1024x768 e la destinazione è 1920x1080. Se si ridimensiona l'immagine originale in modo che il risultato sia 1920x1440, è quindi possibile ritagliare la parte superiore e / o inferiore per renderla 1920x1080.
  2. Allunga l'immagine di destinazione per adattarla. Quindi ridimensioneresti verticalmente di 1080/768 = 1.40625 e ridimensionerai orizzontalmente di 1920/1024 = 1.875. Questo non è quasi mai quello che vuoi, e nella maggior parte dei casi sembra terribile. (Questo è ciò che rende le persone molto più ampie di quanto dovrebbero e trasforma i cerchi in ovali e le rotazioni in cesoie.)

C'è un'altra opzione, ma non si adatta ai tuoi criteri: scala uniformemente, ma solo fino a quando 1 dimensione è grande quanto la destinazione. In questo caso dovresti ridimensionare sia in orizzontale che in verticale di 1.40625 per ottenere un risultato di 1440x1080. Questo di solito viene definito "adatta per adattarsi".

Per ognuna di queste opzioni puoi usare qualunque algoritmo di ridimensionamento soddisfi le tue esigenze.


1
Potresti anche avere delle barre bianche. Puoi anche usare alcune funzioni di sintesi delle immagini per riempire i pixel, puoi sovrapporre un'immagine con se stessa, una che viene ritagliata e una che si estende ad esempio. qui è semplicemente una quantità infinita di modi per gestire senza dati. Penso che la maggior parte di noi abbia appena pensato che sarebbe stata una scala non uniforme.
joojaa,

Verissimo. Supponevo che il poster originale non volesse riempire con un colore solido ed ero interessato solo all'aspetto del ridimensionamento, poiché è quello che mi hanno chiesto. Ma ci sono molti altri metodi di riempimento. Esistono anche metodi di ridimensionamento non lineare, in cui il centro mantiene le proporzioni e i bordi sono allungati, ad esempio.
user1118321
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.