New Immissions/Updates:
boundless - educate - edutalab - empatico - es-ebooks - es16 - fr16 - fsfiles - hesperian - solidaria - wikipediaforschools
- wikipediaforschoolses - wikipediaforschoolsfr - wikipediaforschoolspt - worldmap -

See also: Liber Liber - Libro Parlato - Liber Musica  - Manuzio -  Liber Liber ISO Files - Alphabetical Order - Multivolume ZIP Complete Archive - PDF Files - OGG Music Files -

PROJECT GUTENBERG HTML: Volume I - Volume II - Volume III - Volume IV - Volume V - Volume VI - Volume VII - Volume VIII - Volume IX

Ascolta ""Volevo solo fare un audiolibro"" su Spreaker.
CLASSICISTRANIERI HOME PAGE - YOUTUBE CHANNEL
Privacy Policy Cookie Policy Terms and Conditions
Compressione dati lossless - Wikipedia

Compressione dati lossless

Da Wikipedia, l'enciclopedia libera.

La compressione dati lossless è quella classe di algoritmi di compressione che non comportano perdite di dati, che consentano quindi di recuperare tutta l'informazione e ricostruire esattamente i dati originali partendo dai dati compressi.

Un esempio di questo tipo di compressione è dato dai formati zip, gzip, bzip2, rar, 7z. I file per cui non è accettabile una perdita di informazione, come i testi o i programmi, utilizzano questo metodo. Per le immagini fotografiche generalmente non si usano algoritmi lossless in quanto sarebbero veramente poco efficienti, ma per le immagini che contengono schemi o disegni realizzati al PC spesso la compressione lossless non solo è applicabile, ma anche conveniente (GIF, PNG, MNG, TIFF).

Indice

[modifica] Problemi della compressione lossless

Gli algoritmi di compressione lossless non possono sempre garantire che ogni insieme di dati in input diminuisca di dimensione. In altre parole per ogni algoritmo lossless ci saranno particolari dati in input che non diminuiranno di dimensione quando elaborati dall'algoritmo. Questo è facilmente verificabile con della matematica elementare:

  • Si assuma che ogni file sia rappresentato da una stringa di bit di lunghezza arbitraria.
  • Si supponga (per assurdo), che esista un algoritmo di compressione che trasformi ogni file in un file più corto distinto. (se i files risultanti non sono distinti, l'algoritmo non può essere reversibile senza perdita di dati.)
  • Si considerino l'insieme dei file con lunghezza massima di N bit. Questo set ha 1 + 2 + 4 + ... + 2N = 2N+1-1 elementi, se si include il file di lunghezza zero.
  • Ora considerando l'insieme dei file con N-1 bit, vi sono 1 + 2 + 4 + ... + 2N-1 = 2N-1 file che vi appartengono, sempre considerando anche il file di di lunghezza zero.
  • Tale numero di elementi è più piccolo di 2N+1-1. Non è possibile collegare in modo univoco gli elementi di un insieme più grande (i file da comprimere) con gli elementi di un insieme più piccolo (i file dopo la compressione).
  • Questa contraddizione implica che l'ipotesi originale (che un algoritmo di compressione renda tutti i file più piccoli) sia errata.

Si può notare che la differenza di dimensione è così elevata che non fa alcuna differenza se si considerano file di dimensione esattamente N come insieme dei file da comprimere: tale insieme è comunque di dimensioni maggiori (2N) dell'insieme dei file compressi.

Una dimostrazione anche più semplice (ma equivalente) é come segue:

  1. Si assuma che ogni file sia rappresentato da una stringa di bit di lunghezza arbitraria.
  2. Si supponga (per assurdo), che esista un algoritmo di compressione C che trasformi ogni file di lunghezza maggiore di 1 in un file più corto distinto. (se i files risultanti non sono distinti, l'algoritmo non può essere reversibile senza perdita di dati.)
  3. Dato un qualunque file F di lunghezza L(F)=N, si applichi C a questo file, ottenendo il file C(F)
  4. Si ripeta il passo precedente applicando C a C(F) e si continui in questo modo: per l'ipotesi al punto (2), si ha:
L(F)=N>L(C(F)) > L(C2(F)) > ...

e quindi:

L(C(F))<= N-1
L(C2(F))<= N-2
L(Ck(F))<= N-k


Dopo al massimo N iterazioni, si deve avere L(CN-1(F))=1, perché ogni iterazione deve diminuire la lunghezza di almeno un bit: questo procedimento non dipende dal valore di N. Dalle nostre ipotesi consegue quindi che esisterebbero due soli file distinti (quello contente il bit 0 e quello contenente il bit 1). Questo é evidentemente falso, quindi l'ipotesi è falsa.

Quindi, ogni algoritmo di compressione che rende alcuni file più piccoli, deve necessariamente rendere altri file più grandi o lasciarli di lunghezza invariata.

Nell'uso pratico, si considerano buoni gli algoritmi di compressione che comprimono effettivamente la maggior parte dei formati più comuni: questo non corrisponde necessariamente ad una misura di bontá in senso teorico (che misura la distanza media, misurata su tutti i file possibili, tra la lunghezza ottenuta e il numero di bit di entropia contenuti nel file, che, per un teorema di Shannon, é il limite di comprimibilitá teorico). Inversamente, un algoritmo teoricamente buono potrebbe non avere applicabilitá pratica (ad esempio perché riduce formati di uso comune).

In realtà, molti applicativi che utilizzano la compressione lossless prevedono di lasciare invariati gli insiemi di dati la cui dimensione sia aumentata dopo la compressione. Ovviamente, il flag che indica che questo gruppo di dati non va processato dall'algoritmo aumenta la dimensione effettiva necessaria a memorizzare il gruppo di dati, ma permette di evitare un ulteriore spreco di spazio e di tempo necessario alla compressione/decompressione.

[modifica] Qualità della compressione e velocità

In generale, vi è un rapporto di proporzionalità indiretta tra qualità della compressione ottenibile da una algoritmo e la sua velocità di esecuzione.

Prendiamo ad esempio la seguente stringa di dati:

005555550055555500555555005555550055555500555555

La stringa richiede 48 caratteri, ma è immediatamente disponibile all'utilizzo. Un algoritmo di compressione lossless potrebbe essere "cifra-numero di ripetizioni". La stringa, utilizzando questo algoritmo, diviene quindi:

025602560256025602560256

È chiaro che per rendere disponibili i dati occorre svolgere un passaggio intermedio. È possibile migliorare l'algoritmo per ottenere una compressione più spinta. L'algoritmo "cifra-numero di ripetizioni-numero di ripetizioni" permette di ottenere una stringa equivalente di soli 5 caratteri, ma al "prezzo" di un ulteriore passaggio:

02566

Normalmente gli algoritmi di compressione vengono progettati per essere più veloci nella decodifica dell'informazione rispetto alla fase di codifica, in quanto quest'ultima è un'operazione effettuata di gran lunga più frequentemente.

[modifica] Tecniche di compressione

Esistono diversi algoritmi di compressione. Tra i più noti:

[modifica] Compressione dati

[modifica] Audio

  • Apple Lossless - ALAC (Apple Lossless Audio Codec)
  • Direct Stream Transfer - DST
  • Free Lossless Audio Codec - FLAC
  • Meridian Lossless Packing - MLP
  • Monkey's Audio - Monkey's Audio APE
  • RealPlayer - RealAudio Lossless
  • Shorten - SHN
  • TTA - True Audio Lossless
  • WavPack - WavPack lossless
  • WMA Lossless - Windows Media Lossless

[modifica] Immagini

  • ABO - Adaptive Binary Optimization
  • GIF - (lossless, anche se utilizza un numero esiguo di colori)
  • PNG - Portable Network Graphics
  • JPEG-LS - (lossless/near-lossless compression standard)
  • JPEG 2000 - (comprende un metodo di compressione lossless, come dimostrato da Sunil Kumar, professore della San Diego State University)
  • JBIG2 - (Compressione lossless o lossy di immagini in bianco e nero)
  • TIFF - (Tagged Image File Format)
  • WMPhoto - (Contempla un meodo di compressione lossless)
  • Qbit Lossless Codec - (Dedicato alla compressione intra-frame)


[modifica] Video

  • Huffyuv
  • SheerVideo
  • CorePNG [1]
  • MSU Lossless Video Codec
  • LCL [2]
  • Qbit Lossless Codec [3]
  • Animation codec
  • Lagarith
  • H.264/MPEG-4 AVC

[modifica] Voci correlate

Static Wikipedia (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -

Static Wikipedia 2007 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -

Static Wikipedia 2006 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu

Static Wikipedia February 2008 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu