Compressione lossless di
immagini composite
Corso di Compressione Dati Sistemi Multimediali
Compressi
Compression Team
Prof. Bruno Carpentieri
A.A. 2007/2008
Overview
†
†
†
†
Introduzione
Analisi del problema
Approcci attuali
Soluzioni proposte
„ Compression Team
„ Compressi
Immagini composite
Immagini contenente
testo
Es: Pagina di un libro,
libro quotidiano,
quotidiano
giornale, depliant, libretto
istruzioni
Immagini composite (2)
† Gli algoritmi di compressione
immagine
g
attuali sono nati p
per la
memorizzazione di foto in digitale e
quindi sono ottimizzati p
q
per la
rappresentazione di immagini
naturali.
† Comprimere il testo con la stessa
tecnica non è una soluzione ottimale
Immagini composite (3)
† In determinate circostanze il testo
contenuto all'interno di un'immagine
g
ha
solo significato informativo e non necessità
degli stessi dettagli grafici dell'immagine.
† L'obiettivo è dunque
q
q
quello di migliorare
g
il
rapporto di compressione di un'immagine
composita mantenendo comunque un buon
compromesso con la perdita di
informazione/qualità della parte del testo
Comportamento Jpeg col testo
† La compressione di immagini/testo con JPEG classico
offre risultati “inquietanti ”.
Comportamento JPEG col
testo(2)
† L'immagine precedente contenente
solo testo è di circa 66 KB salvata in
Bitmap monocromatico e varia tra i
68 KB e i 140 KB se salvata in
formato JPG.
SLIm
(Segmented Layered Image)
† La mancanza di un formato per
bitmap composite ha portato allo
sviluppo del sistema SLIm.
† Separa testo e linee dalle immagini di
sfondo, per comprimerli più
efficientemente.
Le caratteristiche
† Estremamente semplice e veloce.
† Performance di compressione
prossime allo stato dell’arte.
† Possibile utilizzo in diverse
applicazioni.
† Opera segmentando l’immagine in tre
distinte componenti: background,
foreground e mask layer.
Architettura di SLIm
† crea la maschera binaria che indica
per ciascun
i
pixel
i l se appartiene
ti
all
foreground o al background.
Architettura di SLIm
† separa l’immagine in input,
utilizzando
tili
d lla maschera,
h
su d
due li
livelli:
lli
foreground e background.
Architettura di SLIm
† Binary coder: codifica la maschera.
† Image
g coder: è un codificatore standard di
immagini (JPEG, JPEG-2000) che codifica
background e foreground.
Architettura di SLIm
† combina l’immagine di foreground e
di background in base alla maschera,
restituendo in output l’immagine
compressa.
Come funziona SLIm ?
F
B
I 2 approcci di compressione
† Un primo approccio è usare un codec di immagini che
utilizza la maschera per codificare separatamente sia
ll’immagine
immagine di background che quella di foreground
foreground.
Background
Foreground
I 2 approcci di compressione
†
Un altro approccio possibile è utilizzare un codec off-theshelf per codificare l’intero bitmap del background e del
foreground perciò si assegnano dei valori che producono
foreground,
una buona compressione a quei pixels “don’t care” che
figurano all’interno della maschera.
Background
Foreground
Masked pixel
Il Problema
†
Il problema principale consiste nell’interpolare i pixels validi
all’interno delle locazioni che figurano nella maschera in
modo da non introdurre sharp edges.
edges
†
Esistono tre diversi algoritmi per risolvere il problema che
producono
d
quasii le
l stesse performance
f
di compressione,
i
pur richiedendo diverse velocità di esecuzione:
„
„
„
Algoritmo di Voronoi
Algoritmo POCS
Algoritmo di Filtering (da noi usato)
Filtering
†
Esegue un filtro, calcolante una
l’immagine da sinistra a destra
sostituendo ogni pixel
(con
combinazione lineare (ad esempio
sinistra e di quello superiore.
media, che scandisce
e dall’alto in basso,
maschera) con una
la media) del pixel a
Filtering (2)
†
Un altro simile filtro opera allo stesso modo, ma segue la
direzione opposta (parte dall’angolo in basso a destra
dell immagine).
dell’immagine)
†
Infine, viene calcolata una combinazione lineare dei risultati
ottenuti da entrambi i filtri, pesata al valore della distanza
del pixel più vicino (senza maschera) incontrato dai filtri.
Mask Separation
†
L’obiettivo è assegnare ogni pixel al background o al
foreground in modo da massimizzare la compressione
combinata di maschera,
maschera foreground e background.
background
†
Supponiamo:
IMG N pixel
i l
2N possibili
ibili maschere
h
ma è oneroso ricercarle tutte.
†
La soluzione, è usare un approccio greedy “divide and
conquer ” su regioni più piccole:
„
calcoliamo la maschera usando solo una versione a
livelli di grigio dell’immagine che minimizza la varianza
all’interno di queste regioni, fino a quella ottimale.
Mask Separation (2)
POSSIBILI MERGE
newF
F1, B1
F2, B2
F=F2; B=B1,B2,F1
newB
F1
F2, B1, B2
F1, B1, F2
B2
F1 F2,
F1,
F2 B2
B1
F2
F1, B1, B2
F1, F2
B1, B2
F1, B1
F2, B2
F1, B2
F2, B1
IMMAGINE
ORIGINALE
MASK(43K)
FOREGROUND(34k)
BACKGROUND(29K)
DjVu
† Sviluppato dal 1996 negli AT&T Labs
† Consente la distribuzione su Internet
di immagini ad alta risoluzione, di
doc menti scannerizzati,
documenti
scanne i ati documenti
doc menti
digitali e fotografie.
Modellazione con DjVu
† Si basa su un modello che propone la
segmentazione
g
dell'immagine
g
in
background layer (foto e texture) e
foreground layer (testo) ciascuno dei quali
viene compresso con algoritmi specifici (es.
algoritmo di tipo wavelet come per JPEG
2000).
2000)
† Con questa tecnica si possono ottenere file
molto
lt "leggeri",
"l
i" veloci
l id
da visualizzare
i
li
anche
h
su computer di vecchia generazione.
Prestazioni DjVu
† Fattori di compressione
„ documenti a colori
colori, dalle 5 alle 10 volte
migliori rispetto ad altri formati
concorrenti quali JPEG e GIF;
„ documenti in bianco e nero, fattori dalle
3 alle 8 volte migliori
g
rispetto
p
al
formato TIFF G4;
„ documenti digitalizzati a 400 ppi in fullcolor,
l
con rapportii di compressione
i
tra
1:300 e 1:1000.
DjVu VS JPEG
Bitmap
(699 KB)
DjVu 300dpp
(37 KB)
JPEG 300dpp
(54 KB)
Immagine originale
JPEG
(200 kbytes)
SLIm
(100 kbytes)
DjVu
(65 kbytes)
Approcci Compression Team
† L’approccio che sarà adottato è
quello basato sulla tecnologia SLIm
† Compressione dei due livelli
(background e foreground) settando
i pixel “don’t care” a:
„
„
„
„
1 (bianco)
0 (nero)
M di d
Media
deii pixel
i l adiacenti
di
ti
Filtering
Esempi approcci
Codificati
A
B X
Non codificati
Mascherato non codificato
Esempi approcci
Codificati
A
B 1
Non codificati
Mascherato non codificato
Settaggio pixel
mascherato ad 1 (bianco)
Esempi approcci
Codificati
A
B 0
Non codificati
Mascherato non codificato
Settaggio pixel
mascherato ad 0
(nero)
Esempi approcci
Codificati
A
B
Non codificati
Mascherato non codificato
A+ B
2
Settaggio pixel mascherato alla
media dei valori dei pixel
adiacenti
Esempi approcci
U
A V X
Filtro 1
Analizzati dal filtro
U +V
X=
2
Non analizzati
Pixel da mascherare
Analizzato senza maschera
più vicino
Y W
Z B
Y=
Z +W
2
Filtro 2
Esempi approcci
Codificati
Non codificati
Mascherato non codificato
X
d ( X , A) ⋅ X + d (Y , B ) ⋅ Y
X=
d ( X , A) + d (Y , B )
Settaggio
S
tt
i pixel
i l mascherato
h t alla
ll
combinazione lineare dei
risultati ottenuti dai filtri, pesata
al valore della distanza del pixel
più vicino senza maschera
incontrato dai filtri
Soluzione Proposte da “Compressi”
† Utilizzo di una “maschera colore” per estrarre
dall'immagine
dall
immagine tutte i pixel di un colore
selezionato dall'utente, che corrisponde al
colore del testo.
† Utilizzo di una maschera che selezioni ed estragga i
pixel solo oltre una certa oscurità indicata dall'utente
(
(threshold)
)
† Utilizzo di Canny per l'edge detection e cercare di
dividere ll'interno
interno (testo) e ll'esterno
esterno (sfondo e
immagine) dei contorni e comprimerli
separatamente.
Maschera colore
La maschera colore è uno strumento che permette di
effettuare l’estrazione di un determinato colore,
selezionato dall’utente, da una immagine.
Esempio estrazione del colore rosso:
Maschera colore (cont.)
†
†
Utilizzando la maschera colore si può estrarre un testo.
L’esempio seguente mostra come la selezione del colore
rosso comporta l’esclusione
l esclusione dello stesso nell’area
nell area relativa al
testo.
Soluzione Proposte
† Utilizzo di una “maschera colore” per estrarre
dall'immagine
dall
immagine tutte i pixel di un colore selezionato
dall'utente, che corrisponde al colore del testo.
† Utilizzo di una maschera che selezioni ed
estragga i pixel solo oltre una certa oscurità
indicata dall'utente (threshold)
(
)
† Utilizzo di Canny per l'edge detection e cercare di
dividere ll'interno
interno (testo) e ll'esterno
esterno (sfondo e
immagine) dei contorni e comprimerli separatamente.
Utilizzo della Threshold
†
La scelta della corretta soglia permette di separare il background
dagli oggetti.
†
Se il testo possiede una tonalità di colore diversa dal resto
dell’immagine potrà essere facilmente selezionata attraverso il
taglio dell’istogramma decidendo il corretto intervallo
corrispondente alla tonalità di colore da eliminare.
Soluzione Proposte
† Utilizzo di una “maschera colore” per estrarre
dall'immagine tutte i pixel di un colore selezionato
dall'utente,
dall
utente, che corrisponde al colore del testo.
† Utilizzo di una maschera che selezioni ed estragga i
pixel
i l solo
l oltre
lt una certa
t oscurità
ità indicata
i di t d
dall'utente
ll' t t
(threshold)
† Utilizzo di Canny per l'edge detection e cercare
di dividere l'interno (testo) e l'esterno (sfondo e
immagine) dei contorni e comprimerli
separatamente.
Edge Detection
†
L' Algoritmo di Canny è un operatore ideato da John F. Canny
nel 1986, ed adottato nel campo dell'elaborazione delle immagini
per il riconoscimento dei contorni.
†
I bordi nelle immagini spesso corrispondono a contorni di oggetti
dove l’intensità varia rapidamente.
†
L’individuazione dei bordi e’ largamente utilizzata quando si vuole
dividere l’immagine in aree corrispondenti a oggetti differenti.
Inoltre rappresentare un’immagine attraverso i suoi bordi permette
che la quantità di dati da memorizzare sia ridotta
significativamente.
f
†
Il metodo di Canny segue i seguenti passi:
1.
1
2.
3.
4.
Filtro gaussiano
Norma del gradiente
Thresholding
Thinning
Edge Detection (cont.)
Passi dell’algoritmo
Immagine
input
Selezione
della regione
Immagine
senza testo
Creazione
maschera
Compressione
con LOCO
Estrazione
testo
maschera
Combina
bits
Compressione
maschera
Immagine con testo compressa
Passi dell’algoritmo proposto
†
Immagine da
comprimere
†
Per il forte balzo
di intensità
intorno alla
scritta OK
l’algoritmo di
compressione
lossless JPEG
non è efficiente
ffi i t
Passi dell
dell’algoritmo
algoritmo proposto
(cont.)
† Passo 1)
„ L’utente
L utente seleziona la minima area
contenente del testo.
Passi dell
dell’algoritmo
algoritmo proposto
(cont.)
† Passo 2)
„ Sull’area
Sull area selezionata viene applicato
l’algoritmo di Canny Edge Detection.
Canny edge detection
Passi dell
dell’algoritmo
algoritmo proposto
(cont.)
† Passo 3)
„ Creazione della maschera
† Maschera colore
† Sfruttando il Canny Edge Detector
† Threshold sull’istogramma
La maschera verrà compressa
e salvata separata dall’immagine
Codice della maschera
Passi dell
dell’algoritmo
algoritmo proposto
(cont.)
† Passo 4)
„ Si sostituisce il colore dei pixel
corrispondenti alla maschera
nell’immagine
ll’i
i
originale
i i l con il valore
l
d
deii
pixel intorno al testo
„ Così
C ì ffacendo
d sii attenueranno
tt
le
l forti
f ti e
repentine variazioni di intensità presenti
nell’immagine
nell
immagine in modo da garantire un
migliore funzionamento dell’algoritmo
Lossless Jpeg.
Jpeg
Passi dell
dell’algoritmo
algoritmo proposto
(cont.)
† Passo 5)
„ Compressione senza perdita
dell’immagine e della maschera ottenute.
Al momento della visualizzazione
dell’immagine compressa, maschera e i
pixel del contorno saranno riutilizzati per
riposizionare il testo all’interno
dell’immagine
dell
immagine di partenza.
Scarica

Compressione lossless di immagini composite