Esercitazione: elaborare immagini bitmap

Transcript

Esercitazione: elaborare immagini bitmap
Esercitazione:
elaborareimmaginibitmap
PierpaoloLore+
2015-2016
1
Sommario
• 
• 
• 
• 
• 
• 
• 
• 
Immaginidigitaliepixel
Formatobitmap
Le;uraescri;uradibmp
Rappresentazionedelcolore
Modificareicolori
Convoluzione
Applicaredeifiltri
...
2015-2016
2
ImmaginiDigitali
•  Rappresentazionenumericadiunaimmagine2D
–  +picamentebinaria
•  La+picarappresentazionesichiamaraster
–  l'immagineèrappresentatadauninsiemefinitodielemen+
elementari:ipixel
•  abbreviazionediPictureELement
•  ipixelsonoglielemen+piùpiccoliinunaimmagine
–  ognipixelrappresentala"luminosità"diundeterminatocolore
inunpuntospecifico
Ogniquadra+noèunpixel
2015-2016
3
Definizioneerisoluzione
•  Definizione
–  numerodipixelchecos+tuisconol'immagine,
–  dimensioneinforma+ca
•  numerodicolonnexnumerodilinee
•  Es.640x480
•  Risoluzione
–  numerodipun+perunitàdisuperficie
–  rapportotrailnumerodipixeleladimensionerealedellasuarappresentazione
suunsupportofisico
–  DPI(DotsPerInch)oPPI(PixelPerInch)
–  Inch:ilpollicevale2.54cm
•  300dpi:300x300pixelperpollicequadrato
–  90000pixelperpollicequadrato
–  Point:0.353mm
•  derivadallarisoluzione72dpi
•  unpixelvale1"/72
2015-2016
4
Fileperimmagini
•  Fileconunformatostandardidoneoacontenereimmagini
–  contengonoleinformazioneperpotervisualizzareostampare
l'immagine
–  ida+possonoesserenoncompressi,compressiove;oriali
•  Raster
–  JPEG,PNG,TIFF,GIF,BMP,PSD
•  Ve;oriali
–  CGM,SVG,AI
•  Formatoecompressione
–  BMP:senzacompressione(maanchecon)
–  GIF,PNG:forma+compressisenzaperdita
–  JPEG:compressoconperdita
2015-2016
5
Pesodiunimmagine
•  Ladimensionedelfiledipendedalnumerodipixeledalcomesi
rappresentailcolore(bitperpixel)
–  profonditàdelcolore
•  Ladimensionedelfiledipendeanchedallaeventualecompressione
edall'algoritmodicompressioneu+lizzato
•  Senzacompressione:640*480concoloria24bit
–  640*480*24=7,372,800bits=921,600bytes=900KiB
2015-2016
6
FormatoBitmap
•  FormatoRasterpermemorizzazioneindipendentedaldevice
–  fa;odallaMicroso>
•  introdo;onel1990conwindows3.0
–  pensatoperapplicazioniinWindowsedOS2
–  notoanchecomedeviceindependentbitmap(DIB)
•  Neesistonotanteversioni
–  lapiùsempliceèlaV3
–  laV4eV5fa;eperwin98
•  aggiungonoilcanalealfaedaltro
•  pocou+lizzate
•  Supportaimmagini
–  dimensioneerisoluzionearbitraria
–  monocroma+cheoacolori
–  varieprofonditàdicolore
•  1,4,8,16,24o32bitperpixel
–  possibilecompressione(V4V5)
2015-2016
7
Filebmp
•  Headerbase
–  BITMAPFILEHEADER
–  14byte
–  +poimmagine,dimensione,offset
•  Infoheader
–  BITMAPINFOHEADER
–  40byte
–  dimensioneimmagine,righe,colonne,ppp
•  Pale;e
•  ImageData
–  Arraydeipixel
2015-2016
8
Imagedata
ID(W,H)
•  Lasezioneimagedatacon+enelasequenza
deida+rela+viaipixel
•  L'immagineèunamatriceWxHdinumeri
2(1,2)
1(1,1)
3(1,3)
4(1,4)
5(2,1)
6(2,2)
–  Wwidth,Hheight
•  Inumerirappresentanoicolorideipixel
7(2,3)
8(2,4)
9(3,1)
height
13
4
15
16
10(3,2)
11(3,3)
9
10
11
12
2
5
6
7
8
13(4,1)
1
1
2
3
4
14(4,2)
3
1
2015-2016
14
2
3
4
width
12(3,4)
15(4,3)
16(4,4)
9
Coloreepadding
•  Ognipixelèrappresentatodaalcunibyte
–  es.24bit(3byte):FFFFFF
–  nell'headerc'èilcampoBitsperpixelche
specificaquan+byteperpixelsonousa+
•  Ognirigadell'arrayda+deveesseremul+plo
di4byte
–  Senonloèsifapadding
–  Esempio
•  immagine8x8-riga:3*8=24
•  immagine10x10–riga3*10=30
–  rigada32bytepadding2byte
2015-2016
13
14
15
16
9
10
11
12
5
6
7
8
1
2
3
4
10
Leggere
unabitmap
2015-2016
11
Leggere
unabitmap
Leggoi54bytedell'header
2015-2016
12
Leggere
unabitmap
Leggolasizedelfile
•  offset2
•  dimesione4byte
2015-2016
13
Leggere
unabitmap
Loopsullerighe
Loopsullecolonne
Leggoivalori
dicoloredelpixeli,j
2015-2016
14
Esercizio
•  Leggereestamparele64triplecherappresentanoicolori
diognibitdell'immagineimg1.bmp
–  leggereheader54byte
–  leggerearrayimmagine4x4
–  ognipixelèrappresentatocon3byte
•  Immagine
–  h;p://ppl.eln.uniroma2.it/finf/img1.bmp
2015-2016
15
Profonditàdelcolore
•  biancoenero:
–  immagazzinandounbitperognicasella,èpossibiledefinireduecolori(neroo
bianco).
•  16colorio16livellidigrigio:
–  immagazzinando4bitinognicasella,èpossibiledefinire24possibilitàdi
intensitàperognipixel,cioè16sfumaturedigrigiochevannodalneroalbianco
oppure16coloridiversi.
•  bitmap256colorio256livellidigrigio:
–  immagazzinandounbyteinognicasella,èpossibiledefinire28intensitàdipixel,
cioè256sfumaturedigrigiochevannodalneroalbiancooppure256colori
diversi.
•  pale;adeicolori
–  sidefinisceunatavolozzadeicolorichel'immaginecon+eneadognunodeiquali
èassociatounindice,adognipixelsiassocial'indice
•  Conindicia8bitèpossibiledefinire256coloriu+lizzabili
•  Truecolor
–  questarappresentazioneperme;edirappresentareun'immaginedefinendoi
coloricomponen+(rosso,verdeeblu)perognipixel.
2015-2016
16
Rappresentazionedelcolore
•  Perpoterscambiareinformazionicolorimetricheè
necessarioforniredellerappresentazionimatema+che
–  associounnumeroaduncolore
•  Lerappresentazionipiùnotesono
–  RGB(Red,Green,Blue)
–  HSL(Hue,Satura+on,Luminance)
–  CMYK(Cyan,Magenta,YellowandblacK).
–  YUV
2015-2016
17
Sintesidicolori
•  Sintesiaddi+va
–  aggiungadellecomponen+dellaluce
•  Lecomponen+dellalucesonodire;amenteaggiunte
all'emissione,èilcasodeimonitorodelletelevisionia
colori
–  Seaggiungonoletrecomponen+Rosso,verde,blu
(RVB),siooeneilbianco
–  L'assenzadellecomponen+dailnero.
–  Icolorisecondarisonoilciano,ilmagentaedilgiallo
datoche
•  Sintesiso;raova
–  Lecomponen+sonoassorbitedallamateria
–  Questoprocessoèusatoinfotografiaeperla
stampadeicolori
–  Icolorisecondarisonoilblu,ilrossoeilverde
2015-2016
18
CodificaRGB
•  CodificaRed,Green,Blue
–  elaboratonel1931dallaCommissioneInternazionale
dell'Illuminazione
–  basatasulfunzionamentodell'occhioumanocheha
rece;oridis+n+pericolori
•  Codificasuunbyteognicomponentedicolore
–  256perognicomponentedicolore
–  16.777.216combinazionipossibili
•  l'occhioumanonedis+nguecirca2milioni.
•  Letrecomponen+dicoloresisommano
–  sintesiaddi+va
2015-2016
19
Coloricomuni
R G
0 0
255 0
0 255
0 0
255 255
255 0
0 255
255 128
128 255
128 128
64 64
128 128
192 192
255
255
2015-2016
B
0
0
0
255
0
255
255
128
128
255
64
128
192
255
HexValue
000000
FF0000
00FF00
0000FF
FFFF00
FF00FF
00FFFF
FF8080
80FF80
8080FF
404040
808080
C0C0C0
FFFFFF
Color
Black
Red
Green
Blue
Yellow
Magenta
Cyan
BrightRed
BrightGreen
BrightBlue
DarkGrey
IntermediateGrey
BrightGrey
White
20
RappresentazioneHLS
•  tonalità(iningleseHue)
–  descrivelasensazionedelcolore,inaltreparole
seilcoloreèrosso,giallo,verde,ciano,blu,
magenta...
–  comeperlospe;rodilucevisibile
–  valoreda0a360gradi
•  Saturazione
–  gradoincuilatonalitàdifferiscedaungrigio
neutro
–  0%,grigio,al100%coloreintenso
–  Quantopiùlospe;rodellaluceèconcentrata
intornounalunghezzad'onda,piùsaturoil
coloresarà.
•  Luminosità
–  illuminazionedelcolore
–  allo0%ilcoloreècompletamentenero,al50%
ilcoloreèpuro,al100%diventabianco
2015-2016
21
Operazionisuicolori
• 
Nega+ve
–  255-C
–  Ritornailcoloreopposto.Es.biancodiventanero,rossodiventaciano
• 
Darken
• 
Brighten
–  C/porC-p
–  Dividereilcoloreperunacostante(maggioredi1),oso;rarreunacostante,perrenderlopiùscuro.
–  C*porC+p
–  Mol+plicareilcoloreperunacostante(maggioredi1),oaggiungereunacostanteadesso,perrenderlo
piùluminoso.
• 
Greyscale
–  (R+G+B)/3
–  Calcolarelamediadei3canalipero;enereuncoloregrigioconlastessaluminosità.
• 
RemoveChannel
–  R=0,G=0eB=0
–  Impostandounoopiùcanalia0,rimuoverecompletamentequelcomponentecoloredallafoto.
• 
SwapChannels
–  R=G,G=R,...
–  Scambiareivalorididuecanalidicolorepero;enereun'immagineconuncolorecompletamente
diverso.
2015-2016
22
Modifiche
aicolori
Originale
C/2
C*2
C-50
C+50
2015-2016 Nota:ilminimoè0edilmassimo255–alcunicolorisaturano
23
Modifiche
aicolori
B=0
ScaladiGrigio
G=0
R=0
Nega+vo
24
2015-2016
Copiare
unimmagine
2015-2016
25
Copiare
unimmagine
2015-2016
26
Esercizio
•  Leggerel'immagineimg2.bmp(200x132)esalvarele
seguen+immaginimodificate
–  Scaladigrigio
–  Immaginenega+va
–  Immaginesenzaincanalerosso
•  Immagine
–  h;p://ppl.eln.uniroma2.it/finf/img2.bmp
2015-2016
27
Convoluzione
Immagine
Immaginerisultante
0 1 1 0 0 0 0 0
0 1 1 1 1 0 0 0
0 1 2 2 1 1 0 0
0 1 2 2 3 2 2 1
0 1 2 3 2 2 1 1
0 1 2 2 1 2 1 0
Kernel
4 0 0
0 0 0
0 0 -4
0 1 1 1 1 2 1 0
0 0 0 1 1 1 0 0
2015-2016
28
Convoluzione
Immagine
Immaginerisultante
0 1 1 0 0 0 0 0
0 1 1 1 1 0 0 0
0 1 2 2 1 1 0 0
0 1 2 2 3 2 2 1
0 1 2 3 2 2 1 1
0 1 2 2 1 2 1 0
Kernel
8
4 0 0
0 0 0
0 0 -4
0 1 1 1 1 2 1 0
0 0 0 1 1 1 0 0
4*0+0*1+0*1+
0*0+0*1+0*1+
0*0+0*1+(-4*2)
=8
2015-2016
29
Convoluzione
Immagine
Immaginerisultante
0 1 1 0 0 0 0 0
0 1 1 1 1 0 0 0
0 1 2 2 1 1 0 0
0 1 2 2 3 2 2 1
0 1 2 3 2 2 1 1
0 1 2 2 1 2 1 0
Kernel
8 8
4 0 0
0 0 0
0 0 -4
0 1 1 1 1 2 1 0
0 0 0 1 1 1 0 0
2015-2016
30
Convoluzione
Immagine
Immaginerisultante
0 1 1 0 0 0 0 0
0 1 1 1 1 0 0 0
0 1 2 2 1 1 0 0
0 1 2 2 3 2 2 1
0 1 2 3 2 2 1 1
0 1 2 2 1 2 1 0
Kernel
8 8 0 -4 0 0
4 0 0
0 0 0
0 0 -4
0 1 1 1 1 2 1 0
0 0 0 1 1 1 0 0
2015-2016
31
Operazionediconvoluzione
a
b c
f
* k4 k5 k6
h i
k7 k8 k9
d e
g
k1 k2 k3
=
p
(k1*i)+(k2*h)+(k3*g)+
(k4*f)+(k5*e)+(k6*d)+
(k7*c)+(k8*b)+(k9*a)
p=min(max(p*factor+bias,0),255)
normalizzazioneecorrezione
2015-2016
32
Filtri
Originale
BLUR
0
0.2 0
Sharpen
0.2 0.2 0.2
0
0.2 0
Edgedetec+on
1
1
1
1
-7
1
1
1
1
-1
-1
-1
-1
9
-1
-1
-1
-1
-1
-1
0
-1
0
1
0
1
1
Emboss
bias=128
2015-2016
Dovenonindicato:factor=1,bias=0
33
Esercizio
•  Leggerel'immagineimg3.bmpesalvareleseguen+
immagini
–  Immagineconapplicatoilfiltrodiblur
–  Applicarealtrifiltri
–  ...
–  Immaginecapovoltaver+calmente
•  Immagine
–  h;p://ppl.eln.uniroma2.it/finf/img3.bmp
–  h;p://ppl.eln.uniroma2.it/finf/fil+mgst.c
2015-2016
34
2015-2016
35
2015-2016
36
2015-2016
37
2015-2016
38
2015-2016
39
Filebmp:img1.bmp
2015-2016
40
Esempiodi
leMuraheader
h;ps://en.wikipedia.org/wiki/BMP_file_format
2015-2016
41
Esercizio
•  Leggerel'headereida+delleseguen+immagini
•  Immagine
–  h;p://ppl.eln.uniroma2.it/finf/img4.bmp
–  h;p://ppl.eln.uniroma2.it/finf/img5.bmp
•  Necessitapadding
2015-2016
42