Le rotazioni di "Windows Photo Viewer" sono senza perdita?


58

Posso ruotare foto compresse con perdita di dati che visualizzo in Visualizzatore foto di Windows senza preoccuparmi di perdere ancora più informazioni per la compressione?


1
Si noti che - per quanto ne so - una rotazione di 90 gradi (e 180, 270) è senza perdita in sé e per sé perché è uno scambio di coordinate xey (altri angoli richiedono interpolazione). Quindi qualsiasi perdita di valore attribuita alla trasformazione proviene dalla ricompressione. Puoi evitare questa ricompilazione salvando l'immagine trasformata in un formato senza perdita, ma questo chiaramente non fa parte della tua domanda, quindi non lo suggerirò
horatio

5
@horatio, i multipli di 90 gradi sono un caso speciale per la compressione JPG, dove è tecnicamente possibile ruotare l'immagine senza un ciclo di compressione "semplicemente" riorganizzando i dati compressi. Implica la rimozione e l'applicazione di un livello di compressione senza perdita, quindi la dimensione del file potrebbe cambiare, ma non sono necessarie operazioni con perdita.
RBerteig,

1
Penso di averti capito, ma il mio punto è che jpeg è un formato di archiviazione su disco e non ha alcun impatto sulla qualità delle trasformazioni stesse. Vale a dire, anche se spesso si parla di lavorare con jpeg ecc., Mentre il file viene visualizzato sullo schermo e manipolato, non è un jpeg.
horatio,

1
Amico, ho sempre desiderato conoscere la risposta a questa domanda. IMO DOVREBBERO essere. Ma molto probabilmente a causa dello standard JPEG ... Non penso che sia tecnicamente possibile rendere questa operazione senza perdite.
Trevor Boyd Smith,

2
Il visualizzatore di immagini di Google Picasa È senza perdita di dati. ma imbroglia. non ruota l'immagine. nei metadati viene semplicemente contrassegnato "visualizza questa immagine ruotata".
Trevor Boyd Smith,

Risposte:


64

Se le dimensioni dell'immagine sono multipli di 8 (o 16 se si utilizza il sottocampionamento cromatico), le rotazioni sono senza perdita. Altrimenti non è possibile ruotare l'immagine senza ricalcolare i blocchi, ovvero ricomprimere l'immagine, che è in perdita.

La ragione di ciò è che le immagini jpeg sono suddivise in una serie di blocchi 8x8 o 16x16 che vengono compressi singolarmente. I blocchi incompleti sono consentiti solo sul bordo destro e sul bordo inferiore. Quindi la tua immagine non è un multiplo esatto di 8/16 conterrà blocchi incompleti, che finiranno sul bordo sbagliato dopo la rotazione.

Ho verificato l'asserzione sopra usando la versione di Windows Photo Viewer fornita con Windows 7. Ho usato due immagini di rumore cromatico. Un'immagine era 256x256, ovvero entrambi i formati multipli di 8. L'altra immagine era la stessa ma ritagliata a 253x253, ovvero nessuna dimensione era un multiplo di 8. Ecco le immagini:

256x256

253x253

Ho quindi eseguito quattro rotazioni in senso antiorario, chiudendo il visualizzatore di foto dopo ogni rotazione per assicurarmi che l'immagine fosse salvata nel suo stato ruotato.

256x256

253x253

Non è necessario eseguire una sottrazione per vedere la differenza con l'immagine di 253 pixel, è notevolmente più scura e più fangosa!

Un diff sull'altra immagine è simile al seguente:

cioè le immagini sono identiche, le rotazioni erano senza perdita.


1
So che in passato, quando ho fatto le rotazioni, mi ha avvertito che la rotazione sarebbe in perdita, il che implica che nei casi in cui l'avviso non veniva visualizzato la trasformazione era senza perdita, ma non ho verificato. Né ricordo quale versione di WPV stavo usando, senza precludere la possibilità che MS cambiasse la base di codice, quindi no non posso esserne sicuro.
Matt Grum,

1
@Tim un'immagine di puro rumore è per definizione il caso peggiore per jpeg (o qualsiasi algoritmo di compressione), motivo per cui l'ho scelto! I risultati su immagini reali apparirebbero meglio.
Matt Grum,

1
@MattGrum, demo molto interessante. Spero che tutti i produttori di fotocamere digitali abbiano le dimensioni dell'immagine in multipli interi di 8!
Trevor Boyd Smith,

1
@MattGrum Lavoravo nel team di WPV. AFAIK, (e sono abbastanza sicuro) la tua risposta è corretta. Inoltre, +1 per un metodo molto completo per dimostrare la tua ipotesi
:)

@TrevorBoydSmith ogni telecamera che ho visto ha dimensioni dell'immagine che sono un multiplo di 8 o 16. La rotazione non è necessariamente la ragione, può solo consentire un'ottimizzazione della pipeline JPEG.
Mark Ransom,
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.