Sunteți pe pagina 1din 15

Universitatea tefan cel Mare Suceava

Facultatea de Inginerie Electric i tiinta Calculatoarelor


Master: Reele de comunicaii i calculatoare
Anul I

Formate de stocare a imaginilor

Ramacanu Andrei-Silviu

Cuprins............................................................................................................................................1
Introducere.......................................................................................................................................2
1. Descrierea formatelor fiierelor de imagine................................................................................4
1.1. Formatul DIB (Device Independent Bitmap)....................................................4
1.2. Formatul BMP................................................5
1.2.1 Citirea unei imagini BMP....................................................................6
1.2.2 Scrierea unei imagini BMP..................................................................6
1.3 Formatul PCX..................................................................................................6
1.3.1 Codificarea RLE (Run-Length Encoded)..............................................7
1.3.2 Antetul fiierului PCX.........................................................................7
1.3.3 Citirea unui fiier PCX........................................................................9
1.4 Formatul GIF..................................................................................................10
1.5 Formatul TIFF (Tagged Image Format File).....................................................12
Concluzii.........................................................................................................................................13
Bibliografie.................................................................................................................................14

Introducere

Prelucrarea de imagini este un domeniu care i pstreaz dinamismul n ciuda trecerii


anilor. Dezvoltrile tehnologice au facilitat accesul unui numr tot mai mare de oameni la aceast
ramur fascinant a imagisticii computerizate.
Sursa de provenienta a imaginilor poate fi un dispozitiv de achizitie (camera video, scanner,
captor radar), dar poate fi la fel de bine si o ecuatie matematica, un ansamblu de date statistice etc.
Exista doua motive principale pentru care se apeleaza la procesarea imaginilor:
mbunatatirea calitatii unei imagini avnd drept scop o mai buna vizualizare pentru un
operator uman. Aceasta poate nsemna: reducerea zgomotului si a altor defecte care pot fi prezente
n imagine (datorate, de exemplu, dispozitivului de achizitie), evidentierea unor zone de interes prin
modificare a luminozitatii, a contrastului, accentuarea muchiilor etc.;
Extragerea de informatii dintr-o imagine, informatii care pot reprezenta intrarea pentru un
sistem automat de recunoastere si clasificare. Aceste informatii pot fi: diferite distante si relatii
dintre obiectele prezente n imagine, momente statistice, parametri geometrici (arie, perimetru,
circularitate), coeficienti Fourier etc.
O imagine este deci un semnal bidimensional; prin urmare prelucrarea imaginilor poate fi
considerat i o ramur a prelucrrii digitale de semnal (care mai include prelucrearea audio,
telecomunicatii etc.).
Prelucrarea imaginilor include sau este legat mai multe discipline:
-

preluarea, compresia i stocarea imaginilor;

restaurarea i ameliorarea imaginilor prin corectii ajustri de contrast, filtrarea

zgomotului etc;
-

fotogrammetrie, adic msurtori ale unor obiecte, fenomene imagini;

recunoaterea formelor (vederea artificial).

Inteligena artificial i prelucrearea imaginilor sunt domenii ce se ntreptrund. Un numr


important din algoritmii performanti folositi la prelucrarea imaginilor utilizeaz metode i tehnici
din domeniul inteligentei artificiale, cum ar fi: retele neuronale, logica fuzzy.
2

Pe de alt parte, inteligenta artificial presupune proiectarea i construirea de sisteme


capabile s realizeze functii ale intelectului uman: nvtarea prin experient, ntelegerea limbajului
natural, utilizarea unui rationament pentru rezolvarea unor probleme sau luarea unor decizii. Toate
aceste presupun ns i acumularea unei anume cantitti de informatie (baza de cunotinte,
informatii din mediu etc.). Aceast informatie este preluat de sistemele inteligente prin sensori i
creaz o imagine a mediului n momentul prelurii datelor (snapshot). Din imaginea astfel obtinut
trebuie extrase informatiile utile.

1. Descrierea formatelor fiierelor de imagine


1.1 Formatul DIB (Device Independent Bitmap)

Acesta nu este un format de fiier imagine, ci este formatul n care pot fi pstrate
imaginile n memorie de aplicatiile Windows. De obicei programele care doresc afiarea
diferitelor formate de fiiere imagine recurg la acest format ca i format intermediar.
DIB reprezint o harta de pixeli independent de dispozitiv. Structura blocului de memorie
care conine un DIB este descris n figura 2.3.
Header-ul de la nceputul formatului DIB conine informaii relevante necesare reconstruirii
imaginii:
Typedef struct tagBITMAPINFOHEADER
{
DWORD biSize;

// Dimensiunea acestei structuri

LONG biWidth;

// Latimea imaginii n pixeli

LONG biHeight;

// nalimea imaginii n pixeli

WORD

biPlanes;

// Numarul de plane (intotdeauna 1)

WORD

biBitCount;

// Biti per pixel

DWORD biCompression;

// Modul de compresie folosit:


// BI_RGB, BI_RLE4 sau BI_RLE8

DWORD biSizeImage;

// Numrul de octei din imagine

LONG biXPelsPerMeter;

// Rezoluia pe orizontal

LONG biYPelsPerMeter;

// Rezoluia pe vertical

DWORD biClrUsed;

// Numrul de culori folosite

DWORD biClrImportant;

// Numrul de culori importante

} BITMAPINFOHEADER;
Paleta de culori este o colecie de intrri de tip RGBQUAD. Aceast structur este descris
mai jos:

typedef struct tagRGBQUAD {


BYTE

rgbBlue;

// intensitate albastru

BYTE

rgbGreen;

// intensitate verde

BYTE

rgbRed;

// intensitate rosu

BYTE

rgbReserved;

// iniializat la 0

} RGBQUAD;
Tabloul de pixeli poate fi memorat necomprimat sau folosind o metod de compresie
de tip RLE (Run-Length Encoded) pe 4 sau pe 8 bii. Metoda de stocare a valorii pixelilor
este specificat de valoarea cmpului biCompression din headerul formatului. Amnunte
despre metoda de compresie RLE vor fi date la descrierea formatului PCX.
1.2 Formatul BMP
Un fiier imagine BMP este identic cu reprezezentarea n memorie a formatului DIB,
cu un antet adaugat la formatul DIB. Coninutul antetului este:
typedef struct tagBITMAPFILEHEADER {
WORD

bfType;

DWORD bfSize;
WORD

bfReserved1;

WORD

bfReserved2;

DWORD bfOffBits;

// Tipul fiierului (= BM)


// Mrimea fiierului in octei

// Offsetul de la care ncep datele


//

imaginii

} BITMAPFILEHEADER
Dup antetul fiierului urmeaz o structur BITMAPINFOHEADER, paleta de culori
(dac este folosit) i tabloul pixelilor din imagine (vezi formatul DIB).
1.2.1 Citirea unei imagini BMP

Citirea unei imagini BMP se face direct, deoarece formatul intern al datelor din
ierarhia de clase Image este formatul DIB, iar un fiier imagine BMP conine un antet urmat
de un DIB.
Paii necesari pentru citirea imaginii BMP sunt urmtorii:
1.

Se citete antetul fiierului;

2.

Verific dac valoarea cmpului bfType este BM (indica faptul ca fiierul

conine o imagine BMP);


3.

Determin numrul de octei rmai n fiier (acetia alctuiesc imaginea DIB

stocat n fiier);
4.

Aloc memorie pentru imaginea DIB;

5.

Citete octeii din fiier n acest bloc de memorie.

Afiarea imaginii se face prin apelul funciei membru specializate din clasa printe
Image.
1.2.2 Scrierea unei imagini BMP
Pentru a salva o imagine DIB ntr-un fiier BMP trebuie urmai paii descrii mai jos:
1.

Iniializarea

cmpurilor

din

antetul

fiierului

(structur

de

tip

BITMAPFILEHEADER);
2.

Scrierea antetului n fiier;

3.

Scrierea n fiier a ntregului coninut al formatului DIB.

1.3 Formatul PCX


Fiierul PCX ncepe cu un antet de lungime 128 octei (va fi descris mai
trziu) urmat de liniile de scanare ale imaginii codificate RLE.
Fiecare linie de scanare este creat punnd mai nti liniile de scanare din fiecare
plan de bii una dup cealalt. Apoi ntreaga linie este codificat folosind schema de codare
dup lungime (RLE).
1.3.1 Codificarea RLE (Run-Length Encoded)
6

Regula de codificare / decodificare este foarte simpl:


1.

Se analizeaz pe rnd fiecare octet din zona de date a fiierului;

2.

Dac cei doi bii mai semnificativi ai unui octet au valoarea 1, ceilali ase

bii mai puin semnificativi indic de cte ori trebuie repetat octetul care urmeaz.
2.1.

Se citete octetul urmtor i se pune n tabloul rezultat de attea ori de cte

indic octetul anterior;


3.

Dac cei doi bii mai semnificativi nu au amndoi valoarea 1, octetul

reprezint date din harta de pixeli.


Exemplu:
Octei din irul iniial (n Hexa)

Octei din irul codificat (n Hexa)

04 66 66 66 29 3F 3F A7 A7 A7 A7 A7
1.3.2 Antetul fiierului PCX
Antetul fiierului PCX este de forma:
struct PCXHeader
{
unsigned char manufacturer;
unsigned char version;
unsigned char encoding;
unsigned char bits_per_pixel_per_plane;
short

xmin;

short

ymin;

short

xmax;

short

ymax;

unsigned short hresolution;


7

04 C3 66 29 C2 3F C5 A7

unsigned short vresolution;


unsigned char colormap[48];
unsigned char reserved;
unsigned char nplanes;
unsigned short bytes_per_line;
short

palette_info;

unsigned char filler[58]; // Header is 128 bytes


};
Semnificaia celor mai importante cmpuri din antet este urmtoarea:
-

unsigned char manufacturer este iniializat ntotdeauna cu valoarea 0AH

pentru un fiier PCX valid. Acest cmp este folosit pentru a verifica dac un fiier conine o
imagine n format PCX;
-

unsigned char version indic versiunea programului PC PainBrush care a

creat fiierul imagine. Dac bits_per_pixel_per_plane * nplanes este 8 i version este mai
mare dect 5, fiierul are o palet de culori cu 256 intrri (256x3=768 octei) adugat la
sfritul imaginii;
-

unsigned char encoding trebuie s fie totdeauna 1 pentru a indica faptul c

imaginea este codificat RLE;


-

unsigned char bits_per_pixel_per_plane este numrul de bii pentru fiecare

pixel n fiecare plan de bii. De exemplu, o imagine cu 256 culori va avea un singur plan de
bii cu 8 bii pentru fiecare pixel;
-

short xmin, xmax, ymin, ymax specific dimensiunile imaginii. Limea

este (xmax xmin + 1), iar nlimea este (ymax ymin + 1);
-

unsigned char colormap[48] este o hart de culori (palet de culori) cu 16

intrri de cte un octet pentru fiecare component RGB. Aceast palet este valid dac
valoarea produsului bits_per_pixel_per_plane * nplanes este mai mic sau egal cu 4;
8

unsigned char nplanes este numrul de plane de bii.

1.3.3 Citirea unui fiier PCX


Pentru a realiza citirea unui fiier PCX trebuie executai urmtorii pai:
1.

Iniializarea antetului imaginii DIB;

2.

Iniializarea paletei de culori din formatul DIB;

3.

Pentru fiecare linie de scanare se citete pe rnd fiecare octet i se realizeaz

scierea n bufferul destinaie innd cont de regula de decodificare RLE


4.

Datorit modului n care este proiectat ierarhia de clase Image trebuie ca

imaginea PCX s fie convertit din plane de bii n format compact de tip DIB. Pentru
aceasta trebuie combinai biii corespunztori unui pixel din fiecare plan de bii PCX pentru
a obine un format compact care s reprezinte valoarea pixelului n format DIB:
Creaz o masc pentru cei mai semnificativi bii_pe_pixel_pe_plan iniializai la
valoarea 1;
Repet (pentru toate liniile din imaginea PCX)
{
Repet (pentru toi octeii din fiecare plan)
{
Repet (de (8 / bii_pe_pixel_pe_plan) ori)
{
Repet (pentru toate planele)
{
mpacheteaz biii din fiecare plan ntr-un octet;
Dac sunt completai toi cei 8 bii, copiaz octetul n locaia adecvat din formatul
DIB;
}
9

Deplaseaz masca la dreapta cu bii_pe_pixel_pe_plan bii;


}
}
}
Afiarea imaginii se face prin apelul funciei membru specializat n afiarea
formatului DIB din clasa printe Image.
1.4 Formatul GIF
Un fiier GIF este organizat pe blocuri i pot exista mai multe imagini ntr-un
acelai fiier. Structura general a unui fiier GIF este urmtoarea:
1.

Antet de 6 octei avnd urmtoarea structur:

struct GIFHeader
{
char signature[3];

// trebuie s conin GIF

char version[3];

// 87a sau 89a

}
2.

Descriptorul logic de ecran, care ofer informaii despre imagine, avnd

structura urmtoare:
Struct LogicalScreenDescriptor
{
unsigned shortwidth;
unsigned shortheight;
unsigned char flags;
unsigned char bgcolor;
unsigned char aspect_ratio;
10

}
Dac cel mai semnificativ bit al cmpului flags are valoarea 1, fiierul GIF include o
tabel de culori. Aceast tabel de culori este denumit tabel global de culori, deoarece se
aplic tuturor imaginilor coninute n fiierul GIF.
3.

Tabela global de culori care este un tablou cu valori RGB.

4.

Blocuri de informaie. Primul octet al fiecrui bloc identific tipul blocului.

Unul dintre cele mai importante blocuri este blocul descriptor al imaginii care ncepe cu o
virgul (2CH) i conine informaii despre imaginea care urmeaz. Structura care reprezint
informaiile coninute ntr-un bloc descriptor de imagine este:
Struct ImageInfo
{
unsigned shortleft;

// Pozitia imaginii

unsigned shorttop;

// (adesea este ignorat)

unsigned char width;

// Mrimea imaginii

unsigned char height;


unsigned char flags;

// Indic prezena unei


// tabele de culori

}
Dac cel mai semnificativ bit al cmpului flags are valoarea 1, urmeaz o tabel de
culori. Aceast tabel de culori este denumit tabel local de culori.
Dup tabela de culori local urmeaz un singur octet al crui valoare indic numrul
de bii necesar pentru a reprezenta valoarea curent a unui pixel din imagine. Acest octet
determin i dimensiunea iniial a codului folosit de algoritmul de compresie LZW.
Urmeaz apoi valorile pixelilor din imagine, stocate ntr-o secven de blocuri de cel
mult 255 octei n fiecare bloc. Aceste valori sunt stocate ntr-un format comprimat codificat
cu ajutorul algoritmului LZW cu coduri de lungime variabil.
11

5.

Dac fiierul GIF conine mai multe imagini, secvena bloc descriptor, blocuri

cu date ale imaginii se repet.


6.

Bloc final care conine un singur octet cu valoarea 3BH i marcheaz sfritul

fluxului de date GIF n fiier.


Pe lng blocurile de imagine exist i un mare numr de blocuri GIF de extensie.
Nu insistm aici asupra acestor blocuri.
1.5 Formatul TIFF (Tagged Image Format File)
Formatul TIFF este cel mai flexibil dintre cele discutate aici. Acest format de
fiiere imagine poate stoca imagini monocrome, cu nuane de gri sau color, suportnd
diferite tipuri de compresie a datelor.
Flexibilitatea provine din folosirea unui set foarte extins de cmpuri de descriere i
de date. Aceasta duce ns la apariia unei probleme majore: foarte puine dintre cititoarele
de fiiere TIFF au capacitatea de a decodifica toate cmpurile unui fiier TIFF. De aceea se
ntmpl foarte des ca un fiier TIFF creat de o anumit aplicaie s nu poat fi ncrcat ntro alta. Cauza principal a acestei probleme este faptul c standardul TIFF permite utilizarea
unor formate particulare pentru cmpurile de date, i muli productori exploateaz aceast
facilitate.
Totui TIFF este un format utilizat pe o scar foarte larg, mai ales datorit faptului
c toate programele care nsoesc scannerele scannerele au posibilitatea de a salva imagini n
format TIFF.

Concluzii

12

Odat cu importantele dezvoltri tehnologice din ultimii ani (tehnologie electronic,


informatic i a comunicaiilor), dispozitivele de achiziie a imaginilor i sistemele de calcul de uz
general au devenit tot mai rspndite i mai la ndemn. n mod firesc, dorina de a dispune de
sisteme autonome nzestrate cu vedere artificial, care s realizeze n mod independent diferite
sarcini specifice a revenit n actualitate, limitat ns la obiectivemai simple i mai pragmatice fa
de declaraiile oarecum bombastice ale deceniului trecut (Prelucrarea imaginilor permite
dezvoltarea mainii totale de vedere artificial, capabil s reproduc fuunciile vizuale ale oricrei
vieuitoare.).

Bibliografie
13

1. Introducere: Elemente fundamentale de prelucrare a imaginilor, C. Vertan


2. Prelucrarea si Analiza Imaginilor, Ed. Printech, Bucuresti, 2001, C. Vertan, M. Ciuc,
M. Zamfir
3. Sisteme de prelucrri grafice, V. Donis

14

S-ar putea să vă placă și