Algoritmi de bază de procesare a imaginii. Algoritmi de preprocesare a imaginii Preprocesarea imaginii

Zgomotul digital este un defect al imaginii, care reprezintă zone situate aleatoriu care sunt aproape de dimensiunea unui pixel și diferă de imaginea originală în luminozitate sau culoare. Reducerea zgomotului joacă un rol important în transmiterea, procesarea și compresia secvențelor și imaginilor video.

Zgomotul video poate apărea din mai multe motive:

1. Echipament de captare video imperfect.

2. Condiții proaste de fotografiere - cum ar fi fotografiere/video de noapte, fotografiere pe vreme nefavorabilă.

3. Interferențe în timpul transmisiei pe canale analogice - interferențe din surse de câmpuri electromagnetice, zgomot intrinsec al componentelor active (amplificatoare) ale liniei de transmisie. Un exemplu este un semnal de televiziune.

4. Filtrarea inexactităților la extragerea semnalelor de luminanță și diferență de culoare dintr-un semnal analog compus etc.

Cantitatea de zgomot dintr-o imagine poate varia de la o pată aproape imperceptibilă într-o fotografie digitală realizată în lumină bună, până la fotografii astronomice în care zgomotul ascunde o mare parte din informațiile utile care pot fi obținute doar printr-o prelucrare laborioasă a imaginii.

Zgomotul poate fi de diferite tipuri, în funcție de natura distribuției aleatorii a zgomotului în imagine. În practică, cele mai comune tipuri sunt:

Zgomot alb gaussian

Unul dintre cele mai comune zgomote este zgomotul Gaussian aditiv, care se caracterizează prin adăugarea de valori cu o distribuție normală și o medie zero la fiecare pixel al unei imagini. Termenul „aditiv” înseamnă că acest tip de zgomot se adaugă semnalului util. Apare atunci când condițiile de recepție a semnalului sunt slabe.

zgomot digital

Cauza zgomotului digital este cel mai adesea asociată cu caracteristicile echipamentului utilizat pentru fotografiere - de obicei, cu o sensibilitate insuficientă la lumină a matricei. Acest tip de zgomot se caracterizează prin înlocuirea unora dintre pixelii din imagine cu valorile unei variabile fixe sau aleatorii. Dacă luminozitatea punctelor este aproximativ egală, zgomotul digital este numit și „impulsiv”. Dacă intensitatea punctelor se poate schimba de la negru la alb, acest zgomot se numește zgomot de sare și piper.

De obicei, acest tip de zgomot afectează doar un număr mic de pixeli dintr-o imagine.

Zgomot combinat

Mult mai rar sunt cazuri când imaginea într-un volum egal este zgomotoasă cu zgomot gaussian și impulsuri aleatorii. Acest set se numește zgomot combinat.

Defecte de scanare a imaginilor

Pe imagine pot apărea și efecte străine, cum ar fi fisuri, zgârieturi, vânătăi. Aceste artefacte nu au o structură omogenă, determinarea formei și locației lor depășește practic analiza matematică. Defectele de acest fel pot fi combătute doar cu ajutorul prelucrării manuale a imaginii; prin urmare, ele nu sunt luate în considerare în această lucrare.

Algoritmi de eliminare a zgomotului

Există un număr mare de algoritmi pentru eliminarea zgomotului din imagini și pot fi utilizați nu numai de programe speciale de procesare, ci și de unele camere foto și video. În ciuda acestui fapt, încă nu există un algoritm de filtrare universal, deoarece la procesarea unei imagini, este întotdeauna necesar să alegeți între gradul de eliminare a efectelor nedorite și păstrarea micilor detalii care au caracteristici asemănătoare zgomotului. În plus, un algoritm care face față cu ușurință unui tip de zgomot poate strica imaginea doar cu un alt tip de zgomot.

Să luăm în considerare câțiva dintre cei mai cunoscuți algoritmi de reducere a zgomotului de imagine.

Media liniară a pixelilor

Cea mai simplă idee pentru eliminarea zgomotului este să mediați valorile pixelilor din vecinătatea spațială. Deoarece zgomotul variază independent de la pixel la pixel, zgomotul pixelilor adiacenți se va anula reciproc atunci când este însumat. Este setată o fereastră dreptunghiulară, care este suprapusă pe rând pe fiecare pixel al imaginii. Valoarea pixelului central este calculată pe baza analizei tuturor pixelilor vecini care se încadrează în zona ferestrei. În consecință, cu cât fereastra luată este mai mare, cu atât se va obține o valoare medie mai mare în final, ceea ce duce la un efect puternic de estompare.

În cea mai simplă versiune, analiza pixelilor vecini este de a găsi media lor aritmetică. Pentru a reduce influența pixelilor care nu aparțin aceleiași zone cu cea luată în considerare (de exemplu, un contur întunecat pe un fundal deschis), puteți introduce un anumit prag numeric și luați în considerare numai acei vecini a căror diferență față de pixelul central nu depășește acest prag. Cu cât valoarea pragului este mai mare, cu atât media va fi mai puternică. Varianta considerată poate fi complicată prin introducerea coeficienților de greutate pentru fiecare pixel învecinat, în funcție de distanța acestora față de centrul zonei luate în considerare.

Această metodă poate fi aplicată, de asemenea, în domeniul timpului, prin medierea fiecărui pixel pe cadrele adiacente ale fluxului video (fiecare pixel va fi mediat pe pixelii aflați în aceeași poziție în cadrele adiacente).

Acest algoritm este foarte simplu, dar nu dă un rezultat bun, ducând în același timp la o estompare puternică a detaliilor imaginii.

filtru gaussian

Are un principiu de funcționare similar cu metoda anterioară și aparține și numărului de filtre anti-aliasing. Cu toate acestea, reducerea zgomotului folosind un filtru de mediere liniară are un dezavantaj semnificativ: toți vecinii pixelului procesat au același efect asupra rezultatului, indiferent de distanța lor de acesta. Filtrul Gaussian face, de asemenea, media pixelului central și vecinilor săi dintr-o anumită zonă, doar că acest lucru se întâmplă conform unei anumite legi, care este stabilită de funcția Gaussiană.

Unde parametrul y specifică gradul de estompare, iar parametrul A asigură normalizarea. Ca urmare, pixelul central al zonei luate în considerare va avea cea mai mare valoare corespunzătoare vârfului distribuției gaussiene. Valorile elementelor rămase vor avea un efect din ce în ce mai puțin pe măsură ce vă îndepărtați de centru.

Filtrul de matrice calculat prin formula specificată se numește Gaussian; cu cât este mai mare dimensiunea sa, cu atât este mai puternică estomparea (pentru un y fix). Deoarece acest filtru este separabil, poate fi reprezentat ca:

Rezultă că convoluția poate fi efectuată secvențial în rânduri și coloane, ceea ce duce la o accelerare semnificativă a metodei pentru dimensiuni mari de filtru.

Algoritmul 2Dcleaner

Înlocuiește fiecare pixel din imagine cu valoarea medie a pixelilor învecinați, luați într-o zonă delimitată de o anumită rază. În acest caz, nu sunt luate în considerare toate punctele care se încadrează în rază, ci numai acelea a căror valoare diferă de pixelul central cu cel mult o valoare predeterminată (prag). Din acest motiv, zonele colorate uniform sunt neclare mai mult decât marginile ascuțite ale obiectelor. Acest lucru reduce zgomotul de nivel scăzut din imagine, păstrând în același timp detaliile fine intacte.

Filtrarea mediană

Algoritmii liniari se dovedesc a fi foarte eficienți în suprimarea zgomotului gaussian, atunci când pixelii vecini, deși au o oarecare răspândire aleatorie a valorilor, rămân totuși în o anumită valoare medie caracteristică zonei căreia îi aparțin. Totuși, uneori trebuie să faci față imaginilor distorsionate de alte tipuri de interferențe. Un exemplu de astfel de interferență este zgomotul de impuls, care se manifestă în prezența unor puncte de luminozitate aleatorie împrăștiate aleatoriu în imagine. În acest caz, media, „pătește” fiecare astfel de punct pe pixelii vecini, ceea ce duce la o deteriorare a calității imaginii.

Filtrarea mediană este modalitatea standard de a suprima zgomotul de impuls. Această metodă neliniară de procesare a imaginii elimină vârfurile, dar, spre deosebire de algoritmii de mediere liniară, lasă intacte secvențele monotone de pixeli. Datorită acestui fapt, filtrele mediane sunt capabile să păstreze fără distorsiuni contururile obiectelor și diferențele dintre zonele cu luminozitate diferită, suprimând în același timp eficient zgomotul necorelat și detaliile de dimensiuni mici.

Principiul de filtrare: este setată o anumită fereastră de dimensiune impară, suprapusă secvenţial pe fiecare pixel al imaginii. Dintre toți pixelii care se încadrează în zona luată în considerare, inclusiv pe cel central, se caută valoarea mediană, care este în cele din urmă atribuită pixelului central al zonei. Mediana în acest caz este elementul mijlociu al matricei de valori sortate de pixeli aparținând regiunii. Dimensiunea impară a ferestrei este aleasă tocmai pentru a asigura existența pixelului din mijloc.

De asemenea, este posibil să utilizați un filtru median pentru a suprima zgomotul alb gaussian din imagine. Cu toate acestea, un studiu al suprimării zgomotului folosind filtrarea mediană arată că eficiența sa în rezolvarea acestei probleme este mai mică decât cea a filtrării liniare.

Filtrarea mediană nu este lipsită de un dezavantaj inerent majorității filtrelor de reducere a zgomotului - atunci când dimensiunea măștii este mărită pentru a îmbunătăți gradul de reducere a zgomotului, claritatea imaginii scade și contururile sale sunt neclare. Cu toate acestea, este posibil să se minimizeze efectele negative prin aplicarea de filtrare mediană cu o dimensiune dinamică a măștii (filtrare mediană aditivă) Principiul său rămâne același, doar dimensiunea ferestrei glisante de filtrare se poate modifica în funcție de luminozitatea pixelilor vecini.

Clarificarea imaginii

Aproape toți algoritmii de reducere a zgomotului în imagine duc la estomparea acesteia, ca urmare, micile detalii se pierd, iar percepția imaginii este dificilă. Pentru a compensa parțial acest efect negativ și a restabili contrastul de contur pierdut și tranzițiile de culoare, filtrul de clarificare a imaginii este capabil de. Claritatea poate depinde și de mulți alți factori - de calitatea obiectivului, de diafragma folosită, de grosimea filtrului anti-moire găsit pe matricea majorității camerelor digitale, care estompează imaginea în grade diferite. De asemenea, claritatea imaginilor trebuie deseori mărită după reducerea dimensiunii lor, deoarece în acest caz o parte din informații se pierde inevitabil și, odată cu aceasta, claritatea contururilor.

Mascarea neclară este o tehnică care, prin creșterea contrastului tranzițiilor dintre tonurile dintr-o imagine, își îmbunătățește percepția vizuală datorită iluziei de ascuțire. De fapt, claritatea rămâne la același nivel, deoarece în principiu este imposibil să restabiliți detaliile pierdute ale imaginii, dar îmbunătățirea contrastului dintre zonele cu luminozitate diferită duce la faptul că imaginea este percepută ca fiind mai clară.

Figura 5.1 - Ilustrarea conceptului de „claritate a conturului”

Claritatea imaginii depinde de mărimea diferenței de luminozitate dintre zonele (W) care formează contururile acesteia și de claritatea modificării acestei diferențe (H).

Tehnica mascării neclare a fost aplicată pentru prima dată la prelucrarea fotografiilor de film. Metoda adaptată pentru procesarea imaginilor digitale diferă puțin de cea originală: așa-numita „mască neclară” este scăzută din imagine - copia sa neclară și inversată. Rezultatul este o nouă imagine care conține doar contururile ușoare ale originalului. Contururile întunecate pot fi obținute prin simpla inversare a rezultatului.

Dacă scădeți și mai mult marginile întunecate din imaginea originală și adăugați margini luminoase, veți obține o creștere semnificativă a contrastului la fiecare diferență de luminozitate.

Oricare dintre filtrele de reducere a zgomotului, cum ar fi filtrul Gaussian, poate fi folosit pentru a estompa originalul pentru a obține o „mască neclară”.

Figura 5.2 - Rezultatul aplicării mascării neclare

Operația de convoluție este destul de des folosită în procesarea imaginilor. Pe lângă ascuțire, este folosit pentru a estompa, a crește luminozitatea, a străluci etc.

Convoluția imaginii este operația de calculare a unei noi valori a unui pixel dat, care ia în considerare valorile pixelilor vecini din jur. În sens general, acest termen înseamnă o acțiune care este efectuată pe fiecare parte a imaginii.

Elementul principal al convoluției este masca de convoluție - aceasta este o matrice (de dimensiune și raport de aspect arbitrar). Adesea, o astfel de mască este numită filtru, miez, șablon sau fereastră. Valorile elementelor matricei se numesc de obicei coeficienți.

Cel mai adesea, o matrice pătrată este folosită ca nucleu de convoluție.

Procesarea imaginii prin operația de convoluție are loc astfel: Elementul central al matricei, numit „ancoră”, este suprapus succesiv pe fiecare pixel al imaginii. Noua valoare a pixelului considerat este calculată ca suma valorilor pixelilor vecini înmulțită cu coeficienții de convoluție respectivi ai maștii.

Efectul rezultat depinde de nucleul de convoluție selectat.

Nuezul filtrului boost are o valoare mai mare decât 1 în punctul (0, 0), cu suma totală a tuturor valorilor egală cu 1. De exemplu, un filtru boost sunt filtre cu nuclee date de matrice:

Efectul de creștere a contrastului se realizează datorită faptului că filtrul subliniază diferența dintre intensitățile pixelilor vecini, eliminând aceste intensități unul de celălalt. Acest efect va fi mai puternic, cu cât valoarea termenului central al nucleului va fi mai mare.

Filtrarea liniară îmbunătățită prin contrast bazată pe convoluție poate provoca halouri vizibile de culoare în jurul marginilor imaginii.

Compensarea diferenței de lumină

Problemele de iluminare a imaginii apar cel mai adesea atunci când ferestrele, soarele sau alte surse de lumină neregulate intră în cadru.

Această situație se numește „exces de lumină” și duce la faptul că, din cauza luminii de contrafort prea puternice, detaliile și culorile obiectelor situate pe fundalul unor obiecte prea luminoase se pierd, devenind greu de distins.

Situația de lipsă de lumină este și ea des întâlnită. Poate fi cauzată de fotografierea în camere întunecate cu iluminare slabă, precum și de o gamă limitată de sensibilitate a echipamentelor video.

Algoritmul Retinex la scară unică

Când încercați să luminați imaginea prin creșterea luminozității fiecărui pixel cu o valoare fixă, inițial zonele luminoase se pot dovedi a fi complet supraexpuse.

În astfel de cazuri, este necesar să se aplice o corecție de culoare „inteligentă”, care ar putea uniformiza iluminarea din imagine, procesând zonele luminoase într-o măsură mai mică decât pe cele întunecate.

Aceste cerințe sunt îndeplinite de algoritmul Single Scale Retinex bazat pe principiile receptorilor retinieni. Scopul principal al algoritmului este de a împărți imaginea în componente care sunt responsabile separat de iluminare și detalii. Deoarece problemele din imagine sunt legate de iluminarea scenei, atunci, după ce a primit componenta responsabilă pentru iluminare, devine posibilă transformarea acesteia separat de imagine, crescând astfel semnificativ calitatea acesteia.

Orice imagine poate fi reprezentată ca un produs al unui semnal de înaltă frecvență (reflexie - R) și al unui semnal de joasă frecvență (iluminanță - I).

S(x,y) = I(x,y) * R(x,y)(5.6)


Figura 5.3 - Reprezentarea imaginii în algoritmul Retinex.

O imagine aproximativă a luminii poate fi obținută folosind filtrarea trece-jos - cu alte cuvinte, pur și simplu estompați imaginea originală, de exemplu, cu un filtru gaussian.

unde G -- filtru gaussian

Deoarece logaritmul semnalului nu modifică frecvența și datorită proprietăților funcției logaritmice (logaritmul produsului este egal cu suma logaritmilor factorilor), sarcina de a separa produsul semnalelor poate fi simplificată la problema separării sumei semnalelor.

După aceea, rămâne doar să luăm exponentul din semnalul primit pentru a-l readuce la scara de amplitudine inițială. Componenta de înaltă frecvență rezultată poate fi adăugată la imaginea originală neclară și luminoasă, care acționează ca un nou model de iluminare.

Efectul obținut din egalizarea luminii poate fi prea puternic (zonele întunecate vor deveni aceeași luminozitate ca și cele luminoase). Pentru a reduce efectul, puteți pur și simplu să amestecați imaginea procesată cu originalul într-o anumită proporție.

Corecție gamma

Scopul inițial al corecției gamma este de a compensa diferențele de culori afișate pe diferite dispozitive de ieșire, astfel încât imaginea să arate la fel atunci când este vizualizată pe monitoare diferite. Datorită formei neliniare a funcției de putere aplicată, corecția gama face posibilă și creșterea contrastului zonelor întunecate ale imaginii fără a evidenția detaliile luminoase și fără a pierde vizibilitatea limitelor obiectelor din imagine.

Informațiile de luminanță în formă analogică în televiziune, precum și în formă digitală în cele mai comune formate grafice, sunt stocate la o scară neliniară. Luminozitatea unui pixel de pe ecranul unui monitor poate fi considerată proporțională

unde I este luminozitatea pixelului de pe ecran (sau luminozitatea componentelor de culoare, roșu, verde și albastru separat),

V este o valoare numerică a culorii de la 0 la 1 și

r -- indicele de corecție gamma .

Dacă r este mai mic de 1, atunci caracteristica de transfer de nivel va fi convexă, iar imaginea rezultată va fi mai ușoară decât cea originală. Dacă r este mai mare decât 1, atunci caracteristica de transfer de nivel va fi concavă, iar imaginea rezultată va fi mai întunecată decât cea originală.

Implicit, parametrul r este 1, ceea ce corespunde unei transmisii liniare a nivelurilor și nicio corecție gamma.

Selectarea conturului imaginii

Analiza conturului poate fi utilizată pentru a descrie, recunoaște, compara și căuta obiecte grafice reprezentate ca contururi externe. Deoarece utilizarea contururilor exclude punctele interne ale obiectului din considerare, acest lucru poate reduce semnificativ complexitatea computațională și algoritmică a acestor operații.

Figura 5.4 - Modificarea tipului funcției de putere în funcție de parametrul r

Conturul unui obiect este o listă de puncte care reprezintă o curbă într-o imagine care separă obiectul de fundal. Cel mai adesea, există un salt în luminozitate sau culoare de-a lungul conturului.

Pentru a simplifica căutarea contururilor în imagine, o puteți pre-binariza.

Filtrul Sobel evidențiază marginile obiectelor în funcție de luminozitatea acestora. Deoarece componenta de culoare nu este luată în considerare, imaginile trebuie mai întâi convertite în tonuri de gri.

Filtrul Sobel este aplicat secvenţial fiecărui pixel, calculând valoarea aproximativă a gradientului său de luminozitate. Gradientul pentru fiecare punct al imaginii (funcția de luminozitate) este un vector bidimensional ale cărui componente sunt derivatele orizontale și verticale ale luminozității imaginii.

În fiecare punct al imaginii, vectorul gradient este orientat în direcția celei mai mari creșteri a luminozității, iar lungimea acestuia corespunde cantității de modificare a luminozității. Aceste date ne permit să facem o presupunere cu privire la probabilitatea de a găsi punctul considerat pe limita unui anumit obiect, precum și despre orientarea acestei limite.

Acea. rezultatul operațiunii operatorului Sobel într-un punct din regiunea de luminozitate constantă va fi un vector zero, iar într-un punct situat la granița unor regiuni de luminozitate diferită - un vector care traversează granița în direcția creșterii luminozității.

Pentru a calcula valorile aproximative ale derivatelor în fiecare punct din imagine, filtrul Sobel folosește o convoluție cu o matrice 3×3.

Coeficienții matricei Sobel:

Valoarea finală a gradientului se calculează prin aproximare după formula:

|G| = |Gx| + |Gy|

Kenny Boundary Detector

Deși munca lui Kenny a fost făcută în primele zile ale vederii computerizate (1986), detectorul de margine al lui Kenny este încă unul dintre cei mai buni detectoare de astăzi. Metoda lui Kenny este un algoritm cu mai multe etape și include următorii pași:

1. Curățarea imaginii de zgomot și detalii inutile.

2. Curățarea imaginii de zgomot și detalii inutile.

3. Căutați degrade de imagine, de exemplu, utilizând operatorul Sobel.

4. Suprimarea non-maximelor. Doar maximele locale sunt marcate ca limite.

5. Filtrare cu dublu prag. Granițele potențiale sunt definite de praguri.

6. Trasarea traseelor ​​(Conectează marginile la căi)

Deoarece cel mai mic zgomot din imagine poate rupe integritatea contururilor acesteia, se recomandă filtrarea imaginii folosind orice metodă de reducere a zgomotului înainte de a începe căutarea. Datorită vitezei mari de funcționare și ușurinței de implementare, filtrul Gaussian este cel mai des utilizat. Marginile unei imagini pot fi în direcții diferite, așa că algoritmul lui Kenny folosește patru filtre pentru a detecta marginile orizontale, verticale și diagonale. Folosind un operator de detectare a marginilor (cum ar fi operatorul Sobel) se obține valoarea derivatei întâi în direcția orizontală (Gy) și în direcția verticală (Gx). Din acest gradient, puteți obține unghiul direcției graniței:

Unghiul de direcție a frontierei este rotunjit la unul dintre cele patru unghiuri reprezentând verticală, orizontală și două diagonale (de exemplu, 0, 45, 90 și 135 de grade). Doar acei pixeli sunt declarați ca margini, în care se atinge maximul local al gradientului în direcția vectorului gradient. Valoarea direcției trebuie să fie un multiplu de 45°. După suprimarea non-maxima, marginile devin mai precise și mai subțiri.

În pasul următor, filtrarea pragului determină pentru fiecare pixel considerat dacă acesta aparține limitelor imaginii. Cu cât pragul este mai mare, cu atât contururile găsite vor fi mai uniforme, cu toate acestea, marginile slabe pot fi ignorate. Pe de altă parte, scăderea pragului crește susceptibilitatea algoritmului la zgomot. Detectarea marginilor Kenny folosește două praguri de filtrare: dacă valoarea pixelului este peste limita superioară, ia valoarea maximă (limita este considerată de încredere), dacă este mai mică, pixelul este suprimat, puncte cu o valoare care se încadrează în intervalul cuprins între pragurile iau o valoare medie fixă ​​(vor fi rafinate la pasul următor).

Ultima etapă a procesării imaginii este legarea marginilor individuale în contururi uniforme. Pixelii care au primit valoarea medie în pasul anterior sunt fie suprimați (dacă nu ating niciuna dintre marginile deja detectate) fie atașați la conturul corespunzător.

Segmentarea

Majoritatea imaginilor obtinute din echipamente foto si video sunt raster, adica formate din puncte colorate dispuse intr-o grila dreptunghiulara. Cu toate acestea, oamenii percep lumea din jurul lor ca o colecție de obiecte solide și nu o matrice de puncte. Creierul uman este capabil să unească detaliile disparate ale imaginii în zone omogene, împărțind-o în mod clar în obiecte la nivel subconștient. Acest proces se numește segmentare și poate fi implementat în software atunci când se rezolvă problema analizei imaginii computerizate și recunoașterii modelelor. Segmentarea se realizează în primele etape de analiză, iar calitatea implementării acesteia poate avea un impact puternic asupra vitezei și acurateței acesteia.

Metodele de segmentare pot fi împărțite în două clase: automate - care nu necesită interacțiunea utilizatorului și interactive - folosind intrarea utilizatorului direct în proces.

În primul caz, nu se utilizează informații a priori despre proprietățile regiunilor, dar unele condiții sunt impuse partiției imaginii în sine (de exemplu, toate regiunile trebuie să fie uniforme ca culoare și textură). Deoarece această formulare a problemei de segmentare nu utilizează informații a priori despre obiectele reprezentate, metodele acestui grup sunt universale și aplicabile oricăror imagini.

Pentru o estimare aproximativă a calității unei metode într-o anumită sarcină, sunt de obicei fixate câteva proprietăți pe care o bună segmentare ar trebui să le aibă:

§ Omogenitatea regiunilor (uniformitatea culorii sau texturii);

§ diferența dintre regiunile învecinate;

§ netezimea hotarului regiunii;

§ un număr mic de „găuri” mici în cadrul regiunilor;

Segmentarea pragului

Procesarea pragului este cea mai simplă metodă orientată către procesarea imaginilor, zone omogene individuale ale cărora diferă în luminozitate medie. Cu toate acestea, dacă imaginea este iluminată neuniform, unele obiecte se pot potrivi cu intensitatea fundalului, ceea ce va face ca segmentarea pragului să fie ineficientă.

Cel mai simplu și în același timp frecvent utilizat tip de segmentare de prag este segmentarea binară, când în imagine se disting doar două tipuri de zone omogene.

În acest caz, transformarea fiecărui punct al imaginii sursă în imaginea de ieșire se realizează conform regulii:

unde x0 este singurul parametru de procesare numit prag. Nivelurile de luminozitate de ieșire y0 și y1 pot fi arbitrare, funcționând doar ca markeri, cu ajutorul cărora se marchează harta rezultată - atribuindu-și punctele claselor K1, respectiv K2. Dacă preparatul rezultat este pregătit pentru percepția vizuală, atunci adesea valorile lor corespund nivelurilor de alb și negru. Dacă există mai mult de două clase, atunci trebuie specificată o familie de praguri în timpul pragării, separând luminozitățile diferitelor clase una de cealaltă.

Segmentarea pragului este potrivită pentru selectarea unui număr mic de obiecte care nu se intersectează dintr-o imagine care au o structură uniformă și ies în evidență clar de fundal. Odată cu creșterea gradului de eterogenitate a imaginii și, prin urmare, a numărului de segmente și a complexității acestora, acest tip de segmentare devine ineficient.

Segmentarea bazată pe partiționarea unui grafic

Metodele teoriei grafurilor sunt una dintre domeniile cel mai activ în dezvoltare în segmentarea imaginilor.

Ideea generală a metodelor acestui grup este următoarea. Imaginea este reprezentată ca un grafic ponderat, cu vârfuri în punctele imaginii. Greutatea marginii graficului reflectă similitudinea punctelor într-un anumit sens (distanța dintre puncte de-a lungul unei metrici). Partiționarea imaginii este modelată prin tăieturi grafice.

De obicei, în metodele teoriei grafurilor, este introdusă o funcțională „cost” redus, care reflectă calitatea segmentării rezultate. Astfel, problema partiționării unei imagini în regiuni omogene se reduce la o problemă de optimizare a găsirii unei reduceri minime a costurilor pe un grafic. Această abordare permite, pe lângă uniformitatea culorii și texturii segmentelor, să se controleze forma segmentelor, dimensiunea acestora, complexitatea marginilor etc.

Pentru găsirea reducerii minime a costurilor se folosesc diverse metode: algoritmi greedy (la fiecare pas se alege o muchie astfel încât costul total al tăierii să fie minim), metode de programare dinamică (se garantează că prin alegerea muchiei optime la fiecare pas). , vom ajunge cu calea optimă), algoritmul Dijkstra etc.

Interpolare

În grafica computerizată, metoda interpolării este adesea folosită în procesul de schimbare a dimensiunii imaginilor. Prin modificarea numărului de pixeli ai imaginii, interpolarea ajută la evitarea pixelizării excesive a imaginii atunci când aceasta este mărită sau pierderea detaliilor importante atunci când este redusă.

În timpul procesului de interpolare, între pixelii imaginii sunt introduse puncte suplimentare, ale căror tonuri și culoare estimate sunt calculate folosind un algoritm special bazat pe analiza datelor disponibile pe zonele învecinate. Din păcate, deoarece orice interpolare este doar o aproximare, imaginea își va pierde invariabil calitatea ori de câte ori este interpolată.

Interpolarea celui mai apropiat vecin

Acest algoritm este cel mai simplu tip de interpolare, pur și simplu crescând fiecare pixel al imaginii la scara necesară. Necesită cel mai mic timp de procesare, dar duce la cele mai proaste rezultate.

Interpolare biliniară

Acest tip de interpolare se realizează pentru fiecare coordonată a grilei bidimensionale. Imaginea este considerată ca o suprafață, culoare - a treia dimensiune. Dacă imaginea este colorată, atunci interpolarea este efectuată separat pentru trei culori. Pentru fiecare punct necunoscut din noua imagine, interpolarea biliniară ia în considerare un pătrat de patru pixeli cunoscuți care îl înconjoară. Media ponderată a acestor patru pixeli este utilizată ca valoare interpolată. Drept urmare, imaginile arată mult mai netede decât rezultatul metodei celui mai apropiat vecin.

Interpolarea biliniară funcționează bine la valori întregi mari ale factorilor de scalare, cu toate acestea, estompează destul de mult marginile ascuțite ale imaginii.

Interpolarea bicubică merge cu un pas mai departe decât biliniară, luând în considerare o matrice de 4x4 pixeli din jur -- 16 în total. Deoarece se află la distanțe diferite de pixelul necunoscut, cei mai apropiați pixeli primesc mai multă greutate în calcul. Interpolarea bicubică produce imagini mult mai clare decât cele două metode anterioare și este, fără îndoială, cea mai bună în ceea ce privește timpul de procesare și calitatea ieșirii. Din acest motiv, a devenit standard în multe programe de editare a imaginilor (inclusiv Adobe Photoshop), drivere de imprimantă și interpolare încorporată a camerei.

Imaginea la scară poate deveni semnificativ mai puțin clară. Algoritmii de interpolare care păstrează mai bine claritatea sunt, de asemenea, mai predispuși la moiré, în timp ce cei care elimină moiré tind să producă rezultate mai moi. Din păcate, acest compromis nu poate fi evitat.

Una dintre cele mai bune modalități de a combate acest lucru este aplicarea unei mască neascuțită imediat după detartrare, chiar dacă originalul a fost deja ascuțit.

5.2 Motivația alegerii algoritmilor utilizați în subsistem

Principala cerință pentru pachetul software dezvoltat a fost să minimizeze întârzierea redării fluxului video în timpul procesării sale preliminare pe un cluster de calcul. In plus, filmarea poate avea loc in orice conditii, ceea ce inseamna ca in scurt timp a fost necesara implementarea unui numar mare de filtre simple pentru a neutraliza diversele efecte negative. În plus, a fost necesar să se studieze un număr mare de factori negativi care apar pe videoclip într-un timp scurt și să se implementeze filtre simple pentru a le neutraliza. Algoritmii care satisfac cerințele prezentate trebuie să fie ușor accesibili, bine optimizați, să aibă fiabilitate ridicată și, în același timp, să fie ușor de implementat. Funcțiile bibliotecii OpenCV au astfel de proprietăți, prin urmare, la alegerea unor metode specifice de implementare a filtrelor de procesare a fluxului video, s-a acordat prioritate algoritmilor conținuti în această bibliotecă într-o formă sau alta.

Toți algoritmii luați în considerare în partea teoretică a lucrării finale de calificare au fost implementați sub formă de test pentru a le compara caracteristicile în practică. În special, s-a preferat un compromis între viteza de procesare a unui cadru de flux video și calitatea rezultatului.

Ca rezultat, au fost aleși următorii algoritmi pentru a implementa filtrele de procesare a fluxului video pe clusterul de calcul:

1. Algoritmul gaussian a fost ales pentru a elimina zgomotul „alb aditiv”. Fiind cea mai comună metodă de reducere a zgomotului, este foarte bine optimizată și, prin urmare, are o viteză mare.

2. Algoritmul gaussian a fost ales pentru a elimina zgomotul „alb aditiv”. Fiind cea mai comună metodă de reducere a zgomotului, este foarte bine optimizată și, prin urmare, are o viteză mare de funcționare.

3. Filtrarea mediană a fost aleasă pentru a elimina zgomotul „de impuls”. Această metodă este, de asemenea, bine optimizată și a fost concepută special pentru a elimina zgomotul impulsiv și de sare și piper.

4. Convoluția a fost aleasă pentru a clarifica imaginea, deoarece funcționează mult mai rapid decât mascarea neclară, oferind în același timp rezultate acceptabile.

5. Biblioteca OpenCV nu conține algoritmi de corecție a culorilor - prin urmare, s-a decis implementarea celui mai comun și bine documentat algoritm Single Scale Retinex. Această metodă are o eficiență foarte mare, dar necesită optimizare pentru a accelera munca.

6. Algoritmul Kenny a fost ales ca metodă de detectare a marginilor, deoarece oferă rezultate mai bune decât filtrul Sobel.

7. Algoritmul de segmentare piramidală prezentat în biblioteca OpenCV este extrem de lent, așa că s-a decis să se utilizeze algoritmul de segmentare considerat anterior pe grafice.

8. interpolare - metoda interpolării bicubice a fost aleasă ca fiind cel mai rezonabil compromis între viteza de lucru și calitatea rezultatului.

Instalarea și configurarea software-ului utilizat.

Clusterul de calcul folosit rula GNU Linux (Ubuntu)

După instalarea sistemului de operare, trebuie să instalați mai multe biblioteci care acceptă citirea și scrierea fișierelor imagine, desenarea pe ecran, lucrul cu videoclipuri etc.

Instalarea CMake

Proiectul este construit folosind CMake (necesită versiunea 2.6 sau mai mare). Îl poți instala cu comanda:

apt-get install cmake

Este posibil să aveți nevoie și de următoarele biblioteci:

build-essential libjpeg62-dev libtiff4-dev libjasper-dev libopenexr-dev libtbb-dev libeigen2-dev libfaac-dev libopencore-amrnb-dev libopencore-amrwb-dev libtheora-dev libvorbis-dev libxvidcore-

Se instalează ffmpeg

Pentru ca opencv să proceseze corect fișierele video, trebuie să instalați biblioteca ffmpeg. Acest lucru se face cu următoarele comenzi:

1) Descărcarea codurilor sursă ale bibliotecii

wget http://ffmpeg.org/releases/ffmpeg-0.7-rc1.tar.gz

2) Despachetarea arhivei cu codurile sursă

tar -xvzf ffmpeg-0.7-rc1.tar.gz

3) Configurarea bibliotecii

configure --enable-gpl --enable-version3 --enable-nonfree --enable-postproc

enable-libfaac --enable-libopencore-amrnb --enable-libopencore-amrwb

Enable-libtheora --enable-libvorbis --enable-libxvid --enable-x11grab

Enable-swscale --enable-shared

4) Construirea și instalarea bibliotecii

Instalare GTK

Afișarea ferestrelor OpenCV necesită instalarea GTK+ 2.x sau o versiune ulterioară, inclusiv fișierele de antet (libgtk2.0-dev)

apt-get install libgtk2.0-dev

Instalarea Opencv

După instalarea tuturor bibliotecilor aferente, instalarea opencv2.2 se face cu următoarele comenzi:

1) Descărcarea codurilor sursă ale bibliotecii OpenCV

http://downloads.sourceforge.net/project/opencvlibrary/opencv-unix/2.2/OpenCV-2.2.0.tar.bz2

2) Despachetarea arhivei cu codurile sursă

tar -xvf OpenCV-2.2.0.tar.bz2

3) generarea unui Makefile folosind CMake.

4) construirea și instalarea bibliotecii OpenCV

5) De asemenea, poate fi necesar să setați calea către biblioteci

export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH

Instalarea și compilarea pachetului software dezvoltat

Este necesar să copiați codurile sursă ale programelor de pe discul atașat acestei note explicative. Copiați fișierul batch build_all.sh în același folder și apoi rulați-l. Dacă compilatorul gcc este instalat pe sistem, construirea va avea loc automat.

DIGITAL TRATAMENT SEMNALE

Subiectul 17. PROCESAREA IMAGINII

Nu există nimic dincolo de imaginația omului.

Titus Lucretius. Filosof și poet roman. secolul I î.Hr e.

Imaginația este un lucru bun. Dar să scoți un vagabond din subsol, să-l speli, să-l transformi într-un Apollo, să-l împachetezi într-o cutie de chibrituri și să-l trimiți prin e-mail unui prieten, un program de grafică bun se va descurca mai bine.

Anatoly Pyshmintsev, geofizician al școlii din Ural din Novosibirsk. Secolului 20

Introducere.

1. Concepte de bază. Reprezentarea grafică a imaginilor. Reprezentarea culorii în grafica computerizată. Model de culoare RGB. Sistem de culoare CIE XYZ.

2. Transformări geometrice ale imaginilor raster. Domenii și etape de transformare. Prelevarea de probe. Seria de interpolare a recuperării semnalului bidimensional. Distorsiuni de frecvență ale imaginilor și eliminarea acestora. Reeșantionarea imaginii.

3. Filtrarea imaginilor. Filtre de linie. Filtre de netezire. Filtre de contrast. filtre de diferență. Convoluție ciclică bidimensională. filtre neliniare. Filtrarea pragului. filtrare mediană. Filtre extreme.

4. Compresia imaginii. Algoritmi de codare a lungimii de repetiție (RLE). Dicţionar algorithms. Algoritmi de codare statistică. Compresie cu pierderi de imagine. Estimarea pierderii imaginii. transformata Fourier. Transformarea wavelet.

INTRODUCERE

Domeniul cercetării în domeniul imaginii digitale crește rapid. Acest lucru se datorează faptului că procesarea imaginilor este o procesare multidimensională a semnalului, iar majoritatea semnalelor din lumea reală sunt multidimensionale.


O imagine în reprezentare matematică este un semnal bidimensional care transportă o cantitate imensă de informații. O imagine color de 500 × 500 de elemente este o matrice de câteva sute de mii de octeți. Este posibil să se proceseze astfel de informații numai printr-o organizare rațională a calculelor. Pentru sarcini specifice de procesare a imaginilor, pot fi aplicate metode eficiente de procesare, ținând cont de caracteristicile și limitările acestei sarcini specifice. Dar dacă vorbim despre procesarea imaginilor pentru rezolvarea unei clase largi de probleme, atunci este necesar să evidențiem un set de operații standard din care se pot construi algoritmi pentru rezolvarea problemelor arbitrare. Acestea includ transformări liniare, convoluție 2D și transformări Fourier discrete 2D.

Dar în procesarea imaginilor, transformările neliniare sunt, de asemenea, utilizate pe scară largă. Particularitatea imaginilor este că elementele individuale ale imaginii sunt într-o anumită legătură cu elementele învecinate. Prin urmare, majoritatea algoritmilor de transformare a imaginii sunt de natură locală, adică procesează imaginile pe grupuri de elemente situate în vecinătatea celui dat. Transformările liniare satisfac proprietatea localității și permit construirea unor algoritmi a căror complexitate de calcul nu depinde foarte mult de mărimea vecinătății acoperite. Aceleași proprietăți sunt necesare pentru transformările neliniare ale imaginii. Clasa unor astfel de transformări include algoritmi, care sunt numiți algoritmi de filtrare a rangului, bazați pe calculul statisticilor locale ale imaginii de rang. La calcularea statisticilor de clasare și a derivatelor acestora, sunt posibile simplificări legate de redundanța informațională a imaginilor. Cel mai cunoscut algoritm al acestei clase este algoritmul de filtrare mediană. Alte exemple de algoritmi de rang sunt algoritmii de filtrare extremă care înlocuiesc elementul de imagine analizat cu un maxim sau un minim în vecinătate. O altă proprietate a algoritmilor de rang este adaptarea locală la caracteristicile imaginii procesate și potențialul de utilizare a acestora nu numai pentru netezire și dezgomot, ci și pentru extragerea caracteristicilor în recunoașterea automată a imaginii.

În procesarea imaginilor, metodele de procesare a semnalelor unidimensionale sunt utilizate pe scară largă, dacă este posibil să le generalizeze la semnale multidimensionale. În același timp, trebuie să ținem cont de faptul că metodele matematice de descriere a sistemelor multidimensionale nu sunt complete. Sistemele multidimensionale au un număr mare de grade de libertate, iar proiectarea lor capătă o flexibilitate care nu este caracteristică sistemelor unidimensionale. În același timp, polinoamele multidimensionale nu pot fi descompuse în factori simpli, ceea ce complică analiza și sinteza sistemelor multidimensionale.

17.1. Noțiuni de bază

Reprezentarea grafică a imaginilor. Pentru a reprezenta informații grafice pe un plan bidimensional (ecran de monitor), se folosesc două abordări: raster și vector.

Prin abordarea vectorială, informația grafică este descrisă ca un set de obiecte geometrice abstracte - linii drepte, segmente, curbe, dreptunghiuri etc. Descrierea vectorială presupune cunoștințe a priori despre structura imaginii.

Grafica raster operează pe imagini arbitrare sub formă de hărți de bit. Un raster este o descriere a unei imagini pe un plan prin împărțirea (eșantionarea) acesteia în elemente identice de-a lungul unei grile obișnuite și atribuirea fiecărui element propria culoare și orice alte atribute. Cel mai simplu raster este dreptunghiular, cel mai economic din punct de vedere al numărului de mostre pentru transmiterea imaginilor este hexagonal. Din punct de vedere matematic, un raster este o aproximare constantă pe bucăți pe planul unei funcții de imagine continuă.

Un element al unui raster se numește pixel. Identificare standard a pixelilor:


f(i, j) = (A(i, j),C(i, j)), (17.1.1)

unde A(i, j) Ì R2 - zona pixelilor, C(i, j) Î C - atributul pixelului (de obicei culoare). Cele două atribute cele mai frecvent utilizate sunt:

C(i, j) = I(i, j) - intensitatea (luminozitatea) unui pixel;

C(i, j) = (R(i, j), G(i, j), B(i, j)) - atribute de culoare în modelul de culoare RGB.

Sub formă de matrice:

Mij ​​= (Aij, Cij).

La eșantionarea imaginilor continue, valorile Aij pot fi definite în două moduri, fie ca valori ale punctelor Aij = (i, j) pentru care sunt definite atributele Cij, fie ca valori ale pătratelor Aij = (i, i+1) × (j, j+1) sau orice altă formă, cu definiția lui Cij prin valorile medii din această formă (Fig. 17.1.1).

În practică, de regulă, X și Y sunt seturi limitate de numere întregi nenegative ale unui raster pătrat sau dreptunghiular cu un raport de aspect (raport de aspect) dintre lățimea și înălțimea rasterului, care este scris ca, de exemplu, „4:3”.

Reprezentarea culorii în grafica computerizată. Conceptul de culoare se bazează pe percepția de către ochiul uman a undelor electromagnetice într-un anumit interval de frecvență. Lumina zilei pe care o percepem are lungimi de undă λ variind de la 400 nm (violet) la 700 nm (roșu). Descrierea fluxului luminos poate fi funcția sa spectrală I(λ). Lumina se numește monocromatică dacă spectrul său are o singură lungime de undă specifică.

Există două tipuri de receptori pe retină: bastonașe și conuri. Sensibilitatea spectrală a bețelor (Fig. 17.1.2) este direct proporțională cu luminozitatea luminii incidente. Conurile sunt împărțite în trei tipuri, fiecare dintre ele având o anumită sensibilitate în intervale limitate, cu maxime pentru culorile roșu, verde și albastru și își pierd brusc sensibilitatea în întuneric. Susceptibilitatea ochiului la albastru este mult mai mică decât la celelalte două. O proprietate importantă a percepției umane a luminii este liniaritatea atunci când se adaugă culori cu lungimi de undă diferite.

Model de culoare RGB (Roșu, Verde, Albastru - roșu, verde, albastru) în grafica computerizată este în prezent cea mai comună. În acest model, funcția spectrală este reprezentată ca suma curbelor de sensibilitate pentru fiecare tip de con cu coeficienți de greutate nenegativi (normalizați de la 0 la 1), care sunt notați cu R, G și B. Modelul este caracterizat prin proprietatea aditivității de a obține culori noi. De exemplu, codificarea funcțiilor spectrale:

Negru: fnegru = 0, (R, G, B) = (0,0,0);

Violet fviolet = fred + falbastru, (R, G, B) = (1,0,1);

Alb falb = fred + fverde + falbastru, (R, G, B) = (1,1,1).

Spațiul de culoare tridimensional al modelului RGB este prezentat în fig. 17.1.3. Datorită particularităților percepției luminii de către receptori, nu toate culorile vizibile pentru oameni sunt reprezentabile în acest model. Cu toate acestea, proporția de culori reproductibile este mult mai mare decât proporția de culori care nu sunt reprezentabile în acest model.

Sistem de culoare CIE XYZ. Standardul internațional de reprezentare a culorilor CIE (CIE - Commission Internationale de l "Eclairage) a fost adoptat în 1931 de către Comisia Internațională pentru Iluminare. Acesta definește trei funcții de bază ρX (λ), ρY (λ), ρZ (λ), în funcție de lungime de undă , ale căror combinații liniare cu coeficienți nenegativi (X, Y și Z) produc toate culorile vizibile pentru om. Aceste funcții țin cont de percepția relativă a intensității luminii de către receptorii ochiului. În spațiul tridimensional, CIE sistemul de culoare formează un con în primul cadran și este utilizat pentru afișarea de înaltă calitate a imaginilor color.

17.2. Transformări geometrice ale bitmap-urilor

Domenii și etape de transformare. Imaginile pot fi împărțite în texturate și detaliate. În imaginile cu textură, toate mostrele (elementele) poartă informații (o imagine pe ecranul televizorului). O imagine detaliată este o imagine în care pot fi distinse obiectele care interferează, fundalul și obiectele utile.

Există trei grupuri principale de algoritmi de procesare a imaginilor pe computere:

1. Prelucrare primară (preliminară) a imaginii în scopul restaurării, curățării de zgomote aleatorii, îmbunătățirii calității, corectării distorsiunilor geometrice ale sistemelor optice (defocalizare, aberații etc.).

2. Descrierea imaginilor, recunoașterea modelelor. Se efectuează pentru a determina parametrii detaliilor imaginii și include: găsirea de zone ale imaginii care sunt uniforme în ceea ce privește iluminarea și culoarea, evidențierea semnelor de formă a imaginilor, determinarea coordonatelor punctelor speciale ale obiectelor etc.

3. Codare eficientă pentru a reduce cantitatea de transmisie și stocare.

Majoritatea metodelor de preprocesare se bazează pe utilizarea filtrelor lineare spațial invariante (LPI). Algoritmii liniari sunt realizați folosind analogi 2D ai filtrelor 1D FIR și IIR. Ele pot fi folosite, de exemplu, la implementarea filtrelor pentru a reduce nivelul de zgomot din imagini.

Filtrele FIR sunt implementate folosind metoda convoluției. Avantajul filtrelor 2D FIR este vizibilitatea, simplitatea și stabilitatea absolută. Filtrele IIR sunt implementate folosind ecuații de diferență și transformări z. Sunt mai rapide decât filtrele FIR, dar pot fi instabile. Sinteza filtrelor IIR bidimensionale diferă de sinteza celor unidimensionale, deoarece pentru o funcție bidimensională nu este posibilă selectarea explicită a polilor.

Metode neliniare pot fi, de asemenea, necesare pentru a restaura imaginile și pentru a le îmbunătăți calitatea. Deci, de exemplu, pentru a suprima zgomotul și, în același timp, a păstra partea de contur a imaginilor, este necesar să se aplice filtre neliniare sau liniare spațial non-invariante (SPNI), care sunt implementate de algoritmi de rang. Toate filtrele neliniare de rang se bazează pe algoritmi rapizi pentru calcularea histogramelor locale.

O astfel de metodă este filtrarea mediană. Utilizarea filtrelor mediane este eficientă pentru suprimarea anumitor tipuri de zgomot și zgomot periodic fără a distorsiona simultan semnalul, de exemplu, pentru suprimarea exploziilor de emisii de zgomot, inclusiv întreruperile de linie. Metoda poate fi folosită și pentru a rezolva probleme legate de recunoaștere, de exemplu, pentru a evidenția linii subțiri și mici obiecte izolate.

Algoritmii pentru descrierea imaginilor și recunoașterea imaginilor, de regulă, sunt neliniari și sunt de natură euristică. Semnele obiectelor sunt de obicei aria imaginii obiectului, perimetrul conturului imaginii, raportul dintre zonă și pătratul perimetrului imaginii. Forma unui obiect poate fi caracterizată prin raza cercului înscris în imagine sau circumscrisă în jurul imaginii obiectului, lungimea raze-vectorului minim și maxim de la „centrul de masă” al imaginii.

Prelevarea de probe. Transformările imaginii într-un computer și stocarea datelor procesate sunt efectuate într-o formă discretă. Eșantionarea este utilizată pentru a obține o reprezentare discretă din imagini analogice continue ale lumii reale. În practică, se realizează prin dispozitive de intrare (camera digitală, scaner sau altele). Pentru percepția vizuală a imaginilor procesate pe dispozitivele de ieșire (afișaj, plotter etc.), o imagine analogică este reconstruită conform reprezentării sale discretizate.

În cel mai simplu caz al imaginilor alb-negru, avem o matrice bidimensională sa(x, y). Pentru imaginile color din modelul RGB, ținând cont de proprietatea de aditivitate la adăugarea culorilor, fiecare strat R, G și B poate fi considerat și procesat ca o matrice bidimensională, cu însumarea ulterioară a rezultatelor.

Dintre modalitățile de generalizare a discretizării periodice unidimensionale în cazul bidimensional, cea mai simplă este discretizarea periodică în coordonate dreptunghiulare:

s(n, m) = sa(nDx, mDy),

unde Dx și Dy sunt intervalele de eșantionare orizontale și verticale ale semnalului continuu bidimensional sa(x, y) cu coordonate continue x și y. Mai jos, valorile lui Dx și Dy, ca și în cazul unidimensional, sunt luate egale cu 1.

Discretizarea unui semnal bidimensional duce, de asemenea, la periodizarea spectrului său și invers. Condiția echivalenței informaționale a reprezentărilor de coordonate și frecvență ale unui semnal discret este, de asemenea, păstrată cu un număr egal de puncte de eșantionare în domeniile principale de semnal. Pentru discretizarea dreptunghiulară, transformatele Fourier directe și inverse sunt definite prin expresiile:

S(k, l) =s(n, m) exp(-jn2pk/N-jm2pl/M), (17.2.1)

S(k, l) =exp(-jn2pk/N) s(n, m) exp(-jm2pl/M), (17.2.1")

s(n, m) =S(k, l) exp(-jn2pk/N-jm2pl/M). (17.2.2)

s(n, m) = exp(-jn2pk/N) S(k, l) exp(-jm2pl/M). (17.2.2")

Orez. 17.2.1. Periodizarea spectrului.

Aceste expresii arată că un DFT 2D peste un raster de eșantionare de date dreptunghiular poate fi calculat folosind DFT-uri seriale 1D. A doua sumă de expresii (17.2.1") și (17.2.2") sunt DFT-uri unidimensionale ale secțiunilor funcțiilor s(n, m) și S(k, l) de-a lungul liniilor n și k, respectiv, iar primele sunt DFT-urile unidimensionale ale funcțiilor calculate în secțiunile de m și l. Cu alte cuvinte, matricele inițiale ale valorilor s(n, m) și S(k, l) sunt mai întâi recalculate în matrici intermediare cu DFT pe rânduri (sau pe coloane), iar matricele intermediare sunt recalculate în matrice finale cu DFT pe coloane (sau, respectiv, pe rânduri).

Pentru ca repetarea periodică a spectrului (Fig. 17.2.1), cauzată de eșantionarea unui semnal analogic cu frecvența Fx=1/Dx și Fy=1/Dy, să nu modifice spectrul în frecvența principală (în raport cu spectrul semnalului analog original), este necesar și este suficient ca componentele de frecvență maximă fmax din spectrul semnalului analogic, atât în ​​rânduri, cât și în coloane, să nu depășească frecvența Nyquist (fmax. x £ fN = Fx/2, fmax.y £ fM = Fy/2). Aceasta înseamnă că frecvența de eșantionare a semnalului trebuie să fie de cel puțin două ori mai mare decât componenta de frecvență maximă din spectrul semnalului:

Fx ³ 2fmax. x, Fy ³ 2fmax. y, (17.2.3)

care asigură că funcțiile spectrale ating valori zero la capetele intervalului principal al spectrului.

Seria de interpolare a recuperării semnalului bidimensional. Dacă semnalul continuu sa(x, y) este un semnal cu spectru limitat, iar perioadele de eșantionare sunt alese suficient de mici și spectrele perioadelor învecinate nu se suprapun:

Sa(Wx, Wy) = 0 pentru |Wx|p/Dx, |Wy|p/Dx,

apoi, ca și în cazul unidimensional, semnalul sa(x, y) poate fi reconstruit dintr-un semnal discret folosind un analog bidimensional al seriei Kotelnikov-Shannon:

sa(x, y) = Sn Sm s(n, m) . (17.2.4)

Distorsiuni de frecvență ale imaginilor și eliminarea acestora. Se poate eșantiona și un semnal cu spectru nelimitat, dar în acest caz există o suprapunere a spectrelor în perioade adiacente, în timp ce frecvențele înalte, mai mari decât frecvențele Nyquist, vor fi „mascate”, ca și în cazul unidimensional, sub frecvenţele joase ale perioadei principale. Efectul de „reflecție” de la limitele perioadei oferă o imagine și mai complexă datorită interferenței frecvențelor reflectate în coordonate diferite. Un efect similar, cunoscut sub numele de aliasing, va avea loc și atunci când imaginea este subeșantionată. Acest efect poate fi observat mai ales clar la schimbările contrastante ascuțite ale luminozității.

Pentru a combate astfel de fenomene, se folosește prefiltrarea (anti-aliasing) - convoluția preliminară a unei imagini analogice cu o funcție de filtru de greutate care decupează componentele de înaltă frecvență care pot duce la aliasing. În cazul bidimensional, filtrarea este descrisă după cum urmează:

z(x, y) = h(x", y") ③③ s(x-x", y-y"). (17.2.5)

Trebuie remarcat faptul că imaginile analogice există numai în domeniul optic, de exemplu, sub forma unui afișaj luminos pe un ecran, hârtie fotografică sau film, dar nu pot exista în memoria computerului. Prin urmare, implementarea fizică a prefiltrării este posibilă numai la înregistrarea unei imagini prin defocalizarea acesteia, care, de regulă, nu este utilizată. Informațiile primare ar trebui să fie întotdeauna înregistrate cu maximă completitate și acuratețe, iar curățarea informațiilor primare de detalii inutile și redundanță este o chestiune de prelucrare ulterioară a datelor. Prin urmare, în raport cu ecuația 17.2.5, prefiltrarea bidimensională, în implementarea sa practică, nu poate fi decât o filtrare a imaginilor eșantionate cu o marjă mare peste gama principală de frecvență (cu rezoluție excesivă), și este utilizată, de regulă, , la reeșantionarea la un pas mai mare, de exemplu, la comprimarea imaginilor. Prefiltrarea poate fi, de asemenea, integrată în algoritmii de imagistică.

Pe fig. 17.2.3 și mai jos, Tabelul 17.2.1 prezintă exemple ale celor mai comune filtre anti-aliasing unidimensionale. Ele pot fi implementate și sub formă de filtre analogice și sunt utilizate, de exemplu, la transmiterea liniilor de televiziune de imagini în formă analogică prin canale radio (antialiasing orizontal). În principiu, o operație similară poate fi efectuată pe coloane (duplicat - imagine), iar după însumarea imaginii se va efectua o operație completă de antialiasing, dar această metodă aparține mai mult domeniului cercetării științifice speciale.

Tabelul 17.2.1.

Funcții de bază de greutate

fereastra de timp

functie de greutate

transformata Fourier

Natural (P)

П(t) = 1, |t|£t; П(t) = 0, |t|>t

П(w) = 2t sinc

Bartlett (D)

B(w) = t sinc2(wt/2).

Henning, Hanna

p(t) = 0,5

0,5p(w)+0,25p(w+p/t)+0,25p(w-p/t)

Hamming

p(t) = 0,54+0,46 cos(pt/t)

0,54P(w)+0,23P(w+p/t)+0,23P(w-p/t)

Carré (a doua fereastră)

p(t) = b(t) sinc(pt/t)

t B(w)*P(w), P(w) = 1 pentru |w|

Laplace-Gauss

p(t) = exp[-b2(t/t)2/2]

[(t/b) exp(-t2w2/(2b2))] ③ P(w)

Analogii bidimensionali ai filtrelor unidimensionale f1(x) sunt construiți în două variante de simetrie: sau în funcție de rază:

f2(x, y) = f1(),

sau ca lucrare:

f2(x, y) = f1(x) × f1(y).

Prima opțiune este mai corectă, dar a doua are proprietatea de separabilitate, adică convoluția bidimensională poate fi efectuată prin două convoluții unidimensionale succesiv în rânduri cu f1(x) și în coloane cu f1(y).

Reeșantionarea imaginii sau reeșantionarea este o modificare a ratei de eșantionare a unui semnal digital. Pentru imaginile digitale, aceasta înseamnă redimensionarea imaginii.

Există diferiți algoritmi de reeșantionare a imaginilor. De exemplu, pentru a crește imaginea de 2 ori folosind metoda de interpolare biliniară, coloanele și rândurile intermediare sunt obținute prin interpolarea liniară a valorilor coloanelor și rândurilor învecinate. Este posibil să se obțină fiecare punct al noii imagini ca o sumă ponderată a unui număr mai mare de puncte din imaginea originală (bicubic și alte tipuri de interpolare). Reeșantionarea de cea mai înaltă calitate se obține atunci când se utilizează algoritmi care iau în considerare nu numai timpul, ci și domeniul de frecvență al semnalului.

Luați în considerare un algoritm de reeșantionare cu păstrarea maximă a informațiilor de frecvență a imaginii. Vom lua în considerare funcționarea algoritmului pe semnale unidimensionale, deoarece o imagine bidimensională poate fi mai întâi întinsă sau comprimată orizontal (în rânduri) și apoi vertical (în coloane), iar reeșantionarea unei imagini bidimensionale poate fi redus la reeșantionarea semnalelor unidimensionale.

Să presupunem că avem un semnal unidimensional (Fig. 17.2.4), dat pe intervalul 0-T și discretizat cu un pas Dt=1 (N intervale). Este necesar să „întindeți” semnalul de m ori. Spectrul semnalului prezentat în figură este calculat prin transformarea Fourier rapidă (FFT, numărul de mostre de spectru este egal cu numărul de mostre de semnal) și este dat în domeniul principal FFT (0-2p, frecvența Nyquist wN = p/Dt = p, sau 0,5N în funcție de numerotarea probelor de spectru cu un pas de-a lungul spectrului Df = 1/T sau Dw = 2p/T). Întinderea necesită 2 pași.

Primul pas este interpolarea zero, care mărește lungimea semnalului de m ori. (Fig. 17.2.5). Este necesar să se înmulțească toate eșantioanele semnalului original cu m și apoi, după fiecare eșantion de semnal, să se introducă m-1 valoarea zero. Pe intervalul 0-T, a cărui valoare rămâne neschimbată, există acum de m ori mai multe intervale de eșantionare (mN), iar noua etapă de eșantionare va fi egală cu Dx=Dt/m. În consecință, noua frecvență Nyquist pentru acest semnal este mp/Dt = mp. Dar valoarea fizică a pasului spectrului în unități de frecvență este opusă valorii fizice a intervalului de setare a semnalului (Df=1/T) și, prin urmare, FFT pe mN puncte de semnal va calcula mN puncte ale spectrului în intervalul FFT principal de 0-2pm cu pasul de spectru al semnalului original, în care vor fi prezente m-perioade ale spectrului semnalului original (o parte principală și m-1).

Al doilea pas este filtrarea benzilor laterale ale spectrului folosind un filtru trece-jos, fie în domeniul timpului, fie în domeniul spectral. Pe fig. 17.2.6, spectrul a fost curățat și s-a efectuat transformarea Fourier inversă, în urma căreia s-a obținut un semnal de m ori mai lung decât semnalul original cu păstrarea completă a tuturor informațiilor de frecvență.

Conform unui principiu similar, se poate construi un algoritm pentru comprimarea (decimarea) unui semnal de n ori, în timp ce ordinea pașilor este inversată. La comprimarea semnalului, pasul de eșantionare a semnalului este crescut și, în consecință, frecvența Nyquist este redusă, în timp ce frecvențele înalte tăiate (zgomot și părți nesemnificative de înaltă frecvență ale spectrului de semnal) vor fi reflectate de la granița gamei principale. și adăugat la informațiile principale, creând distorsiuni. Pentru a elimina acest fenomen, semnalul este mai întâi filtrat trece-jos cu o frecvență de tăiere egală cu noua frecvență Nyquist (anti-aliasing) și abia apoi semnalul este decimat prin subțiere.

Când reeșantionarea este efectuată numai în domeniul timpului, algoritmii de întindere și compresie sunt de obicei combinați într-un singur proces secvenţial cu setarea schimbării etapei de eșantionare sub forma raportului m/n, care vă permite să setați valori întregi ale m și n pentru valorile fracționale ale schimbării etapei de eșantionare. Acest lucru simplifică foarte mult algoritmii și îmbunătățește eficiența și calitatea muncii lor. De exemplu, atunci când semnalul este întins de 1,5 ori la m/n = 3/2, semnalul este mai întâi întins de 3 ori (o adăugare simplă și uniformă de zerouri la toate probele, apoi se efectuează filtrarea trece-jos, după care semnalul este decimat cu un factor de doi. Filtrul anti-aliasing nu este necesar, deoarece frecvența sa de tăiere se suprapune cu frecvența primului filtru trece-jos.În operația de compresie inversă (de exemplu, m/n = 2/3 ), în mod similar, se folosește numai filtrul anti-aliasing.

17.3. filtrarea imaginilor

Filtrarea imaginilor este o operație care are ca rezultat o imagine de aceeași dimensiune, obținută din cea originală după niște reguli. În mod obișnuit, intensitatea (culoarea) fiecărui pixel din imaginea rezultată este determinată de intensitățile (culorile) pixelilor aflați în o parte din vecinătatea acestuia din imaginea originală.

Regulile de filtrare pot fi foarte diverse. Filtrarea imaginilor este una dintre cele mai fundamentale operațiuni ale vederii computerizate, recunoașterii modelelor și procesării imaginilor. Marea majoritate a metodelor de procesare a imaginilor încep cu una sau alta filtrare a imaginilor originale.

Filtre de linie au o descriere matematică foarte simplă. Vom presupune că imaginea inițială în semitonuri A este dată și notăm intensitățile pixelilor săi cu A(x, y). Un filtru liniar este definit de o funcție cu valoare reală h (nucleul de filtru) definită pe un raster. Filtrarea în sine este efectuată utilizând operația de convoluție discretă (sumare ponderată):

B(x, y) = h(i, j) ③③A(x, y) = h(i, j) A(x-i, y-j). (17.3.1)

Rezultatul este imaginea B. De obicei, nucleul de filtru este diferit de zero numai în vecinătatea N a punctului (0, 0). În afara acestei vecinătăți, h(i, j) este egal cu zero sau foarte aproape de acesta și poate fi neglijat. Însumarea se realizează peste (i, j) н N, iar valoarea fiecărui pixel B(x, y) este determinată de pixelii imaginii A care se află în fereastra N centrată în punctul (x, y) ( se notează mulţimea N(x, y)). Un nucleu de filtru definit pe o vecinătate dreptunghiulară N poate fi considerat ca o matrice m cu n unde lungimile laturilor sunt numere impare. Când specificați nucleul ca matrice, acesta ar trebui să fie centrat. Dacă un pixel (x, y) este situat în vecinătatea marginilor imaginii, atunci coordonatele A(x-i, y-j) pentru anumite (i, j) pot corespunde pixelilor A inexistenți în afara imaginii. Această problemă poate fi rezolvată în mai multe moduri.

Nu filtrați astfel de pixeli decupând imaginea B la margini sau aplicând valorile originale ale imaginii A pentru valorile acestora.

Nu includeți pixelul lipsă în însumare distribuind greutatea sa h(i, j) uniform între alți pixeli din vecinătatea N(x, y).

Redefiniți valorile pixelilor în afara limitelor imaginii folosind extrapolarea.

Redefiniți valorile pixelilor în afara limitelor imaginii, folosind extensia oglindă a imaginii.

Alegerea metodei se face ținând cont de caracteristicile specifice ale filtrului și ale imaginii.

Filtre de netezire. Cel mai simplu filtru de netezire dreptunghiular cu raza r este dat de o matrice (2r+1) × (2r+1), toate valorile cărora sunt 1/(2r+1)2, iar suma valorilor este unu. Acesta este analogul 2D al filtrului de medie în mișcare 1D trece-jos în formă de U. Când se filtrează cu un astfel de nucleu, valoarea pixelului este înlocuită cu valoarea medie a pixelului într-un pătrat 2r+1 în jurul acestuia. Exemplu de mască cu filtru 3×3:

.

Una dintre aplicațiile filtrelor este reducerea zgomotului. Zgomotul variază independent de la pixel la pixel și, cu condiția ca așteptarea matematică a valorii zgomotului să fie zero, zgomotul pixelilor vecini se va anula reciproc atunci când este însumat. Cu cât fereastra de filtrare este mai mare, cu atât intensitatea medie a zgomotului este mai mică, cu toate acestea, va apărea și estomparea corespunzătoare a detaliilor semnificative ale imaginii. Imaginea unui punct alb pe un fundal negru în timpul filtrării (reacție la un singur impuls) va fi un pătrat uniform gri.

Reducerea zgomotului folosind un filtru dreptunghiular are un dezavantaj semnificativ: toți pixelii din masca de filtru la orice distanță de cel procesat au același efect asupra rezultatului. Un rezultat ceva mai bun se obține prin modificarea filtrului cu o creștere a greutății punctului central:

.

Se poate obține o reducere mai eficientă a zgomotului dacă influența pixelilor asupra rezultatului scade odată cu creșterea distanței față de cel procesat. Această proprietate este deținută de un filtru gaussian cu un nucleu: h(i, j) = (1/2ps2) exp(-(i2+j2)/2s2). Filtrul gaussian are un nucleu diferit de zero de dimensiune infinită. Cu toate acestea, valoarea nucleului de filtru scade foarte repede la n) și, prin urmare, în practică, se poate limita la convoluția cu o fereastră mică în jurul (0, 0), de exemplu, luând raza ferestrei egală cu 3σ.

Filtrarea gaussiană este, de asemenea, netezită. Totuși, spre deosebire de filtrul dreptunghiular, imaginea unui punct cu filtrare gaussiană va fi o pată neclară simetrică, cu o scădere a luminozității de la mijloc la margini. Gradul de estompare a imaginii este determinat de parametrul σ.

Filtre de contrast . Dacă filtrele de netezire reduc contrastul local al imaginii, estompându-l, atunci filtrele de îmbunătățire a contrastului produc efectul opus și, în esență, sunt filtre cu frecvențe spațiale înalte. Nucleul filtrului boost la (0, 0) are o valoare mai mare decât 1, cu o sumă totală de valori egală cu 1. De exemplu, filtrele boost sunt filtre cu un nucleu dat de matrice:

. .

Un exemplu de aplicare a filtrului este prezentat în fig. 17.3.1. Efectul de creștere a contrastului se realizează datorită faptului că filtrul subliniază diferența dintre intensitățile pixelilor vecini, eliminând aceste intensități unul de celălalt. Acest efect va fi mai puternic, cu cât valoarea termenului central al nucleului va fi mai mare. Un artefact caracteristic al filtrării de îmbunătățire a contrastului liniar este lumina vizibilă și halourile întunecate mai puțin vizibile în jurul marginilor.

Filtre de diferență sunt filtre liniare definite prin aproximări discrete ale operatorilor diferenţiali (prin metoda diferenţelor finite). Aceste filtre joacă un rol important în multe aplicații, de exemplu, pentru căutarea marginilor într-o imagine.

Cel mai simplu operator diferenţial este derivata x d/dx, care este definită pentru funcţiile continue. Variante obișnuite ale operatorilor similari pentru imaginile discrete sunt filtrele Prewitt și Sobel:

. .

Filtrele care aproximează operatorul derivat în raport cu coordonata y d/dy sunt obținute prin transpunerea matricelor.

Cel mai simplu algoritm pentru calcularea normei gradientului pe trei puncte adiacente:

G(x, y) = .

Se folosește și o formulă de calcul simplificată:

Calcularea normei unui gradient pe patru puncte adiacente (operatorul Roberts):

Algoritmul Sobel folosește opt mostre de luminozitate în vecinătatea punctului central:

G(x, y) = , G(x, y) @ ,

Gxx, y = - ,

Gyx, y = - .

Alături de o definiție mai precisă a normei de gradient, algoritmul Sobel vă permite, de asemenea, să determinați direcția vectorului de gradient în planul de analiză a imaginii sub forma unui unghi j între vectorul de gradient și direcția rândurilor matricei:

j(x, y) = argtg(Gyx, y /Gxx, y).

Spre deosebire de filtrele de netezire și de îmbunătățire a contrastului care nu modifică intensitatea medie a imaginii, ca urmare a aplicării operatorilor de diferență, de regulă, se obține o imagine cu o valoare medie a pixelilor apropiată de zero. Picăturile verticale (bordurile) ale imaginii originale corespund pixelilor cu valori modulo mari din imaginea rezultată. Prin urmare, filtrele de diferență sunt numite și filtre de detectare a graniței obiectelor.

Similar cu filtrele de mai sus, metoda diferențelor finite poate fi utilizată pentru a compune filtre pentru alți operatori diferențiali. În special, operatorul diferențial Laplace (Laplacian) D= 2/x2 + 2/y2, care este important pentru multe aplicații, poate fi aproximat pentru imagini discrete printr-un filtru cu o matrice (una dintre opțiuni):

.

După cum se vede în fig. 17.3.2, ca urmare a aplicării Laplacianului discret, valorile mari în valoare absolută corespund atât diferențelor de luminozitate verticale, cât și orizontale. Un filtru este astfel un filtru care găsește limite de orice orientare. Găsirea marginilor într-o imagine se poate face prin aplicarea acestui filtru și luând toți pixelii a căror valoare absolută depășește un anumit prag.

Cu toate acestea, acest algoritm are dezavantaje semnificative. Principala este incertitudinea în alegerea valorii de prag. Pentru diferite părți ale imaginii, un rezultat acceptabil este de obicei obținut la praguri semnificativ diferite. În plus, filtrele diferențiale sunt foarte sensibile la zgomotul imaginii.

Convoluție ciclică bidimensională. Ca și în cazul semnalelor 1D, convoluția 2D poate fi efectuată în domeniul frecvenței spațiale folosind algoritmi FFT și înmulțirea spectrelor de imagine 2D și a nucleului de filtru. Este, de asemenea, ciclic, și se realizează de obicei într-o versiune glisantă. Ținând cont de ciclicitate, pentru a calcula modelul constant al spectrului nucleului, dimensiunile măștii filtrului nucleului sunt dublate de-a lungul axelor și se adaugă cu zerouri, iar aceleași dimensiuni ale măștii sunt folosite pentru a evidenția fereastra care alunecă peste imagine, în cadrul căreia se efectuează FFT. Implementarea unui filtru FIR cu un FFT este deosebit de eficientă dacă filtrul are o zonă de referință mare.

Filtre neliniare . În procesarea digitală a imaginilor, algoritmii neliniari bazați pe statistici de rang sunt folosiți pe scară largă pentru a restaura imaginile deteriorate de diferite modele de zgomot. Acestea vă permit să evitați distorsiunea suplimentară a imaginii atunci când eliminați zgomotul, precum și să îmbunătățiți semnificativ rezultatele filtrelor pe imaginile cu un grad ridicat de zgomot.

Să introducem conceptul de M-vecinătate al unui element de imagine A(x, y), care este central pentru această vecinătate. În cel mai simplu caz, cartierul M conține N-pixeli - puncte care cad în masca de filtru, inclusiv (sau neincluzând) pe cea centrală. Valorile acestor N-elemente pot fi plasate într-o serie variațională V(r), clasate în ordine crescătoare (sau descrescătoare), iar anumite momente ale acestei serii pot fi calculate, de exemplu, valoarea medie a luminozității mN iar dispersia dN. Calculul valorii de ieșire a filtrului, care înlocuiește proba centrală, se realizează prin formula:

B(x, y) = aА(x, y) + (1-a)mN. (17.3.2)

Valoarea coeficientului a = este asociată cu o anumită dependență de statisticile eșantioanelor din fereastra de filtrare, de exemplu:

a = dN /(dN + k dS), (17.3.3)

unde dS este varianța zgomotului asupra imaginii în ansamblu sau peste vecinătatea S pentru S > M și MнS, k este constanta de încredere a varianței vecinătății S. Din această formulă, pentru k=1 și dN » dS are loc a » 0,5, iar valoarea lui B(x, y) = (A(x, y) + mN)/2, adică se adună în mod egal pe valorile eșantionului central și pe valoarea medie a pixelilor din vecinătatea sa M. Cu o creștere a valorilor dN, contribuția valorii referinței centrale la rezultat crește; cu o scădere, valoarea mN. Ponderea contribuției valorilor medii asupra cartierului M poate fi modificată cu valoarea coeficientului k.

Alegerea unei funcții statistice și natura dependenței coeficientului a de aceasta pot fi destul de diverse (de exemplu, în funcție de variațiile diferențelor de citire din cartierul M cu o citire centrală) și depinde atât de dimensiunea diafragmei filtrului și a naturii imaginilor și a zgomotului. În esență, valoarea coeficientului a trebuie să precizeze gradul de deteriorare a eșantionului central și, în consecință, funcția de împrumut pentru corectarea acestuia a probelor din cartierul M.

Cele mai simple și mai comune tipuri de filtre neliniare pentru procesarea imaginilor sunt filtrele de prag și filtrele mediane.

Filtrarea pragului este dat, de exemplu, după cum urmează:

B(x, y) =

Valoare p este pragul filtrului. Dacă valoarea punctului central al filtrului depășește valoarea medie a probelor mN în vecinătatea sa M cu valoarea de prag, atunci aceasta este înlocuită cu valoarea medie. Valoarea pragului poate fi fie constantă, fie dependentă funcțional de valoarea punctului central.

Filtrarea mediană este definită după cum urmează:

B(x, y) = med (M(x, y)),

adică, rezultatul filtrării este valoarea mediană a pixelilor de vecinătate, a căror formă este determinată de masca de filtru. Filtrarea mediană poate elimina eficient zgomotul dintr-o imagine care afectează în mod independent pixelii individuali. De exemplu, astfel de interferențe sunt pixeli „spărți” în timpul fotografierii digitale, zgomotul de „zăpadă”, când unii pixeli sunt înlocuiți cu pixeli cu intensitate maximă etc. Avantajul filtrarii mediane este că un pixel „fierbinte” pe un fundal întunecat va fi înlocuit întuneric, și nu „untat” în jurul cartierului.

Filtrarea mediană are o selectivitate pronunțată în ceea ce privește elementele matricei, care sunt o componentă nemonotonă a unei secvențe de numere în interiorul deschiderii filtrului. În același timp, filtrul median lasă componenta monotonă a secvenței neschimbată. Datorită acestei caracteristici, filtrele mediane, cu o deschidere selectată optim, păstrează marginile ascuțite ale obiectului fără distorsiuni, suprimând zgomotul necorelat sau slab corelat și detaliile de dimensiuni mici.

Filtre extreme determinat de reguli:

Bmin(x, y) = min(M(x, y)),

Bmax(x, y) = max (M(x, y)),

adică rezultatul filtrării este valorile minime și maxime ale pixelilor din masca de filtru. Astfel de filtre sunt aplicate, de regulă, pentru imaginile binare.

17.4. COMPRESIA IMAGINII

O imagine tipică cu o rezoluție de aproximativ 3000×2000 la 24 de biți per pixel pentru transmisia de culoare are o dimensiune de 17 megaocteți. Pentru dispozitivele profesionale, dimensiunea rasterului de imagine rezultat poate fi mult mai mare, adâncimea culorii este de până la 48 de biți per pixel, iar dimensiunea unei imagini poate fi mai mare de 200 de megaocteți. Prin urmare, algoritmii de compresie a imaginii sunt foarte relevanți pentru a reduce cantitatea de date care reprezintă o imagine.

Există două clase principale de algoritmi:

1. Compresie fără pierderi A (compresie fără pierderi), dacă există un astfel de algoritm invers A-1 încât pentru orice h - imagine A[h] = h1 avem A-1 = h. Compresia fără pierderi este utilizată în astfel de formate de imagini grafice precum: GIF, PCX, PNG, TGA, TIFF și este utilizată atunci când se prelucrează informații primare deosebit de valoroase (imagini medicale, imagini aeriene și spațiale etc.), când chiar și cea mai mică distorsiune este nedorită.

2. Compresie cu pierderi, dacă nu oferă capacitatea de a restaura cu acuratețe imaginea originală. Algoritmul aproximativ de recuperare a imaginii asociat cu A va fi notat cu A*. Perechea (A, A*) este aleasă pentru a oferi rapoarte de compresie ridicate, păstrând în același timp calitatea vizuală. Compresia cu pierderi se aplică în formate grafice: JPEG, JPEG2000 etc.

Toți algoritmii și instrucțiunile se aplică atât imaginilor, cât și secvențelor arbitrare, ale căror elemente pot lua un număr finit de valori. În același timp, trebuie luat în considerare faptul că nu există algoritmi ideali care să poată comprima orice set de date fără pierderi.

Algoritmi Repeat Length Encoding (RLE). se bazează pe un principiu simplu: înlocuirea grupurilor repetate de elemente ale succesiunii originale cu o pereche (cantitate, element), sau numai cu o cantitate.

nivel de biți. Vom considera datele originale la nivelul unei secvențe de biți, de exemplu, reprezentând o imagine alb-negru. De obicei, există mai multe 0 sau 1 la rând, iar numărul de cifre identice consecutive poate fi codificat. Dar și numărul de repetări trebuie să fie codificat în biți. Se poate considera că fiecare număr de repetări se modifică de la 0 la 7 (cod de 3 biți), alternând succesiunea codurilor de unu și zero. De exemplu, secvențele pot fi comparate cu numerele 7 0 4, adică 7 uni, 0 zerouri, 4 uni, în timp ce avem un an nou - Cu cât secvențele de biți identici sunt mai lungi, cu atât efectul este mai mare. Deci, o secvență de 21 de unități, 21 de zerouri, 3 uni și 7 zerouri este codificată după cum urmează: , adică din secvența originală de 51 de biți, avem o secvență de 36 de biți.

Nivel de octet. Să presupunem că intrarea este o imagine în tonuri de gri, unde 1 octet este atribuit valorii intensității pixelului, în timp ce așteptarea unui lanț lung de biți identici este redusă semnificativ.

Vom împărți fluxul de intrare în octeți (cod de la 0 la 255) și vom codifica octeți repeți ca o pereche (număr, literă). Un singur octet nu poate fi modificat. Deci, octeții AABBBCDAA codifică (2A) (3B) (C) (D) (2A).

Cu toate acestea, modificările acestui algoritm sunt rareori utilizate pe cont propriu (de exemplu, în format PCX), deoarece subclasa de secvențe pe care algoritmul este eficient este relativ îngustă. Mai des sunt folosite ca una dintre etapele conductei de compresie.

Dicţionar Algorithms în loc de a codifica doar un element din secvența de intrare, se realizează codificarea unui lanț de elemente. Aceasta folosește un dicționar de șiruri de caractere (creat din secvența de intrare) pentru a codifica altele noi.

Algoritmul LZ77 a fost unul dintre primii care a folosit un dicționar. Ultimele N elemente deja codificate ale secvenței sunt folosite ca dicționar. În timpul compresiei, subsecvența dicționar „alunecă” peste secvența de intrare. Lanțul de elemente la ieșire este codificat astfel: poziția părții potrivite a lanțului de elemente procesate în dicționar - offset (față de poziția curentă), lungime, primul element care urmează părții potrivite a lanțului. Lungimea lanțului de potrivire este limitată de sus de numărul n. În consecință, sarcina este de a găsi cel mai mare șir din dicționar care se potrivește cu secvența procesată. Dacă nu există potriviri, atunci sunt scrise offset zero, lungimea unu și primul element al secvenței necodificate.

Schema de codificare descrisă mai sus duce la conceptul de fereastră glisantă, care constă din două părți:

O secvență de elemente deja codificate de lungime N-dicționar - tampon de căutare;

Secvența lungimii n din lanțul de elemente pentru care se va încerca găsirea unei potriviri este tamponul de anticipare.

Decodificarea unei secvențe comprimate este decodificarea codurilor înregistrate: fiecare intrare este asociată cu un lanț dintr-un dicționar și un element scris în mod explicit, după care dicționarul este mutat. Dicționarul este recreat pe măsură ce algoritmul de decodare rulează.

Acest algoritm este strămoșul unei întregi familii de algoritmi. Avantajele sale includ un grad decent de compresie pe secvențe suficient de mari și decompresie rapidă. Dezavantajele includ viteza redusă de compresie și raportul de compresie mai mic decât algoritmii alternativi.

algoritmul LZW. Dicționarul din acest algoritm este un tabel care este umplut cu lanțuri de elemente pe măsură ce algoritmul rulează. Procesul de compresie caută cel mai lung șir deja scris în dicționar. De fiecare dată când un șir nou de elemente nu este găsit în dicționar, acesta este adăugat în dicționar și codul pentru șir este înregistrat. În teorie, nu există o limită pentru dimensiunea mesei, dar limita de dimensiune îmbunătățește raportul de compresie, deoarece se acumulează lanțuri inutile (ne-apar). Cu cât un tabel are mai multe intrări, cu atât mai multe informații trebuie alocate codurilor de stocare.

Decodarea constă în decodarea directă a codurilor, adică în construirea unui dicționar și în ieșirea lanțurilor corespunzătoare. Dicționarul este inițializat în același mod ca și în codificator. Avantajele algoritmului includ un grad ridicat de compresie și o viteză destul de mare, atât compresie, cât și decodare.

Algoritmi de codare a entropiei atribuiți fiecărui element al secvenței un cod astfel încât lungimea acestuia să corespundă probabilității de apariție a elementului. Comprimarea are loc prin înlocuirea elementelor secvenței inițiale care au aceeași lungime (fiecare element ocupă același număr de biți) cu elemente de lungimi diferite, proporțional cu logaritmul negativ al probabilității, adică elementele care apar mai des decât altele au cod. de lungime mai mica.

Algoritmul Huffman folosește un cod de prefix de lungime variabilă care are o proprietate specială: codurile mai scurte nu se potrivesc cu prefixul (partea inițială) a celor mai lungi. Un astfel de cod permite codificarea unu-la-unu. Procesul de compresie constă în înlocuirea fiecărui element al secvenței de intrare cu codul său. Construcția unui set de coduri se realizează de obicei folosind așa-numitele arbori de coduri.

Algoritmul Huffman este în două treceri. Prima trecere prin imagine creează un tabel cu greutățile elementelor, iar în timpul celei de-a doua treceri are loc codificarea. Există implementări ale algoritmului tabelului fix. Se întâmplă adesea ca distribuția de probabilitate a priori a elementelor alfabetului să fie necunoscută, deoarece întreaga secvență nu este disponibilă deodată, în timp ce se folosesc modificări adaptive ale algoritmului Huffman.

Compresie cu pierderi de imagine. Cantitatea de informații necesare pentru stocarea imaginilor este de obicei mare. Algoritmii clasici, fiind algoritmi de uz general, nu țin cont de faptul că informația care se comprimă este o imagine - un obiect bidimensional și nu oferă un grad suficient de compresie.

Compresia cu pierderi se bazează pe caracteristicile percepției umane asupra imaginii: cea mai mare sensibilitate într-o anumită gamă de lungimi de undă de culoare, capacitatea de a percepe imaginea ca un întreg, fără a observa mici distorsiuni. Principala clasă de imagini pe care se concentrează algoritmii de compresie cu pierderi sunt fotografiile, imaginile cu tranziții netede de culoare.

Estimarea pierderii imaginii. Există multe măsuri pentru estimarea pierderilor în imagini după restaurarea (decodificarea) acestora din cele comprimate, totuși, pentru toate acestea, pot fi selectate două imagini astfel încât măsura lor de diferență să fie suficient de mare, dar diferențele vor fi aproape imperceptibile pentru ochiul. Și invers - puteți obține imagini care diferă foarte mult după ochi, dar au o mică măsură de diferență.

Măsura numerică standard a pierderii este de obicei abaterea standard (RMS) a valorilor pixelilor imaginii reconstruite de la original. Cu toate acestea, cea mai importantă „măsură” de evaluare a pierderilor este opinia observatorului. Cu cât un observator detectează mai puține diferențe (sau mai bine, absența lor), cu atât este mai mare calitatea algoritmului de compresie. Algoritmii de compresie cu pierderi permit adesea utilizatorului să aleagă cantitatea de date „pierdute”, adică dreptul de a alege între calitatea și dimensiunea imaginii comprimate. Desigur, cu cât calitatea vizuală este mai bună la un raport de compresie mai mare, cu atât algoritmul este mai bun.

transformata Fourier. În cazul general, imaginea poate fi considerată în funcție de două variabile, definite în punctele rasterului final. Mulțimea unor astfel de funcții pe punctele unui raster finit fix formează un spațiu euclidian finit-dimensional, iar transformata Fourier discretă, adică reprezentarea spectrală a imaginii, le poate fi aplicată. Oferă:

Necorelare și independență a coeficienților spectrului, adică acuratețea reprezentării unui coeficient nu depinde de niciunul.

- Compactarea energiei. Transformarea stochează informația de bază într-un număr mic de coeficienți. Această proprietate este cel mai pronunțată în imaginile fotorealiste.

Coeficienții de reprezentare spectrală sunt amplitudinile frecvențelor spațiale ale imaginii. În cazul imaginilor cu tranziții netede, cea mai mare parte a informațiilor este conținută în spectrul de joasă frecvență.

Algoritmul de compresie utilizat în formatul JPEG se bazează pe transformata Fourier discretă cosinus. Schema de compresie din algoritm este o conductă, în care această transformare este doar una dintre etape, dar una dintre cele principale. Algoritmul conține următoarele operații principale:

1. Transferați în spațiul de culoare YCbCr. Aici Y este componenta luma, Cb și Cr sunt componentele de crominanță. Ochiul uman este mai sensibil la luminozitate decât la culoare. Prin urmare, este mai important să se mențină o precizie mai mare la transmiterea Y decât la transmiterea Cb și Cr.

2. Transformată cosinus discretă (DCT). Imaginea este împărțită în blocuri de 8 × 8. O transformare cosinus discretă este aplicată fiecărui bloc (separat pentru componentele Y, Cb și Cr).

3. Reducerea componentelor de înaltă frecvență în matricele DCT. Ochiul uman cu greu observă modificări ale componentelor de înaltă frecvență, prin urmare, coeficienții responsabili pentru frecvențele înalte pot fi stocați cu mai puțină acuratețe.

4. Ordonarea în zig-zag a matricelor. Aceasta este o trecere de matrice specială pentru obținerea unei secvențe unidimensionale. Mai întâi vine elementul T00, apoi T01, T10, T1 Mai mult, pentru imagini fotorealiste tipice, mai întâi vor fi coeficienți non-zero corespunzători componentelor de joasă frecvență, iar apoi o mulțime de zerouri (componente de înaltă frecvență).

5. Compresie mai întâi prin metoda RLE, apoi prin metoda Huffman.

Algoritmul de recuperare a imaginii funcționează în ordine inversă. Raportul de compresie este de la 5 la 100 sau de mai multe ori. În același timp, calitatea vizuală pentru majoritatea imaginilor fotorealiste rămâne la un nivel bun atunci când este comprimată de până la 15 ori. Algoritmul și formatul sunt cele mai comune pentru transferul și stocarea imaginilor color.

Transformarea wavelet semnale este o generalizare a transformatei Fourier clasice. Termenul „wavelet” (wavelet) în traducere din engleză înseamnă „undă mică (scurtă)”. Waveletele sunt un nume generalizat pentru familiile de funcții matematice de o anumită formă care sunt locale în timp și frecvență și în care toate funcțiile sunt obținute dintr-o funcție de bază prin deplasarea și extinderea acesteia de-a lungul axei timpului.

În algoritmii de compresie cu pierderi, de regulă, toate operațiunile conductei de compresie sunt păstrate prin înlocuirea transformării Fourier discrete cu o transformată wavelet discretă. Transformările wavelet au o localizare spațială de frecvență foarte bună și depășesc transformările Fourier tradiționale în acest indicator. În acest caz, devine posibilă aplicarea unei cuantizări mai puternice, îmbunătățind proprietățile secvenței pentru compresia ulterioară. Algoritmii de compresie a imaginii bazați pe această transformare, cu același raport de compresie, arată rezultate mai bune în păstrarea calității imaginii.

literatură

46. ​​​​et al. Algoritmi rapizi în procesarea digitală a imaginilor. - M.: Radio și comunicare, 1984. - 224 p.

47. Procesarea imaginii Soyfer. Partea 2. Metode și algoritmi. - Jurnal Educaţional Soros Nr. 3, 1996.

48. Zgomotul cartilajului din imagini bazate pe algoritmi neliniari folosind statistici de rang. - Universitatea de Stat din Iaroslavl, 2007.

49. Andreev sisteme de supraveghere televizată. Partea a II-a. Aritmetică - baze logice și algoritmi. Tutorial. - Sankt Petersburg: Sankt Petersburg, GUITMO, 2005. - 88s.

51. Introducere în procesarea digitală a semnalului (fundamente matematice) - M.: Universitatea de Stat din Moscova, Laboratorul de Grafică pe Computer și Multimedia, 2002. - http://pv. *****/dsp/dspcourse. pdf, http://dsp-book. *****/dspcours. djvu, http://geogin. *****/archiv/dsp/dsp4.pdf.

1i. și alte baze algoritmice ale graficelor raster. – Universitatea de Tehnologii Informaționale pe Internet. – http://www. *****/goto/course/rastergraph/

2i. Lukin-Sisteme electronice: Note de curs. ITMO, 2004. - Sankt Petersburg, ITMO IFF, 2004. - http://iff. *****/kons/oes/KL. htm

Despre erorile observate și sugestii de completări: *****@***ru.

Drepturi de autor©2008DavydovA.V.

Laboratorul #1

Algoritmi de procesare a imaginilor

Operație de convoluție

Convoluția este un algoritm foarte larg care poate fi folosit atât pentru preprocesarea imaginii, cât și pentru recunoașterea și identificarea obiectelor. Fie ca imaginea să fie dată de o matrice de luminozitate bidimensională F" , și matricea răspunsului la impuls H. Convoluția matematică a unei matrice F cu miez H poate fi definită prin următoarea formulă:

Unde M2xN2 - dimensiunea matricei nucleului de convoluție. Dimensiunea matricei F este egal cu (M1+M2-1)x(N1+N2-1), unde M1xN1 - dimensiunea matricei originale F" . Matrice F se obtine din original prin adaugarea elementelor la marginile matricei dupa o anumita regula pentru a o aduce la dimensiunea ceruta. De obicei, matricea originală este umplută cu zerouri la margini pentru jumătate din lățimea matricei. H stânga și dreapta și, respectiv, jumătate din înălțime în sus și la fel în jos. Apoi dimensiunea matricei rezultate R va fi aceeași cu matricea F" .

Convoluția poate fi calculată direct prin „rularea” unei matrice peste alta, așa cum se arată deja mai sus. Pe fig. 1 arată schema de calcul a convoluției (dimensiunea matricei măștii este luată egală cu 3x3). Operatorul de convoluție poate fi privit ca o matrice de coeficienți (măști) care sunt multiplicate element cu element cu fragmentul de imagine selectat, urmată de însumare pentru a obține o nouă valoare a elementului de imagine filtrat. Această matrice poate fi de dimensiune arbitrară, nu neapărat pătrată.

Orez. 1. Implementarea operației de convoluție.

Exercițiu

    Implementați un algoritm care realizează operația de convoluție a imaginii originale cu o mască-matrice.

    Mărimea și tipul măștii-matrice sunt stabilite de utilizator.

    Utilizați următoarele matrice de măști pentru a implementa diverși algoritmi de procesare a imaginii:

    • pentru a netezi și a suprima zgomotul din imagine, se folosește o mască-matrice 3x3 de următoarea formă:

    pentru a sublinia contururile, se folosesc măști-matrice de următoarea formă:

1/9*

    Masca cu următoarea formă este utilizată pentru a selecta contururile:

4. Implementați un filtru median, care este folosit pentru a suprima zgomotul punctual și de impuls. Pixelul imaginii și vecinii săi din zona luată în considerare sunt aliniați într-o serie variațională (în valori de pixeli crescătoare sau descrescătoare) și valoarea centrală a acestei serii variaționale este selectată ca o nouă valoare a pixelului. Rezultatul filtrării medii este că orice zgomot aleatoriu conținut în imagine va fi eliminat efectiv. Acest lucru se datorează faptului că orice schimbare bruscă aleatorie a intensității pixelilor în regiunea luată în considerare va fi sortată, de exemplu. va fi plasat fie în partea de sus, fie în partea de jos a valorilor sortate în acea regiune și nu va fi numărat deoarece valoarea centrală este întotdeauna selectată pentru noua valoare a elementului.

5. Implementați algoritmul de reliefare. embosarea se face într-un mod similar cu algoritmii de mediere sau de îmbunătățire a marginilor. Fiecare pixel din imagine este procesat de un nucleu de relief 3x3 (matrix-mask). De exemplu, ca miez de relief, puteți lua următoarea matrice de mască:

După ce valoarea pixelilor este procesată de motorul de gofrare, i se adaugă 128. Astfel, valoarea pixelilor de fundal va deveni culoarea gri medie (roșu = 128, verde = 128, albastru = 128). Sumele mai mari de 255 pot fi rotunjite la 255.

În versiunea în relief a imaginii, contururile par a fi extrudate deasupra suprafeței. Direcția de evidențiere a imaginii poate fi schimbată prin schimbarea pozițiilor 1 și -1 din nucleu. Dacă, de exemplu, valorile 1 și -1 sunt schimbate, atunci direcția luminii de fundal este inversată.

6. Acuarelare imagini. Filtrul de acuarelă transformă imaginea, iar după procesare pare că a fost scrisă în acuarelă:

    Primul pas în aplicarea unui filtru de acuarelă este netezirea culorilor din imagine. O modalitate de a netezi este aplicarea mediei culorii în fiecare punct. Valoarea culorii fiecărui pixel și a celor 24 de vecini ai săi (dimensiunea măștii-matrice este de 5x5) sunt aranjate într-o serie variațională în ordine descrescătoare sau crescătoare. Valoarea medie a culorii (a treisprezecea) din seria de variații este atribuită pixelului central.

    după netezirea culorilor, trebuie să aplicați un filtru de îmbunătățire a marginilor pentru a evidenția marginile tranzițiilor de culoare.

Reprezentarea imaginii

Există două tipuri principale de reprezentări de imagini - vector și raster.

În reprezentarea vectorială, imaginea este descrisă de un set de linii (vectori), care conțin coordonatele punctelor de început și de sfârșit, curbura liniilor și alte caracteristici geometrice; regulile pentru construirea diferitelor regiuni și caracteristici de culoare sunt descrise de asemenea. Cu alte cuvinte, o reprezentare raster necesită formarea unui model matematic. Prin urmare, reprezentarea vectorială este utilizată în principal în rezolvarea problemelor de sinteză a imaginilor. Deși unii algoritmi de recunoaștere a imaginii necesită o reprezentare vectorială pentru munca lor, care trebuie obținută din imaginea originală.

O imagine raster este una sau mai multe matrice care descriu distribuția spațială a caracteristicilor imaginii pe o anumită grilă de coordonate carteziene. În acest caz, imaginea este construită dintr-un set de puncte și are o structură raster. Elementul principal al unei reprezentări raster a unei imagini este un pixel (prescurtarea expresiei „elementele imaginii”), care are coordonate într-un sistem de coordonate raster și unele atribute (culoare, luminozitate, transparență etc.). Numărul de pixeli de-a lungul coordonatelor X și Y (orizontal și vertical) stabilește rezoluția (dimensiunea) reprezentării imaginii. Culoarea unui pixel este dată de adâncimea acestuia, care este numărul de biți necesari pentru a specifica orice culoare.

Imaginile raster, în funcție de metodele de setare a culorii unui pixel și de proprietățile imaginii originale, sunt împărțite în:

Binar

Semitonuri

Paletă

culoare plina

În reprezentarea binară, culoarea unui pixel poate fi fie albă, fie neagră și este codificată într-un bit. Imaginea este o matrice. Fiecare element I (i , j ) din această matrice are o valoare fie 0, fie 1, unde i este numărul rândului și este numărul coloanei j al elementului corespunzător pixelului dat (Fig. 1).

În imaginile în tonuri de gri, pixelii reprezintă valori de luminozitate corespunzătoare nuanțelor de gri. Indicii de matrice care descriu imaginea în semitonuri definesc poziția pixelului pe raster și valoarea elementului de matrice

- își setează luminozitatea I (i, j) (Fig. 2).

Imaginile din paletă sunt descrise de două matrice (Fig. 3). Se stochează valorile indicilor, care specifică accesul la rândul matricei paletei. Matricea paletei este o hartă de culori. Conține 3 grupuri de coloane - corespunzătoare culorilor roșu „R”, verde „G” și albastru „B”. Ei stabilesc culoarea pixelului corespunzător.

O paletă este o matrice Nc 3, unde Nc este numărul de culori.

Algoritmi de preprocesare a imaginii

Imaginile pline de culoare sunt construite în format RGB și reprezintă trei matrice R (i , j ), G (i , j ), B (i , j ) . Elementele corespunzătoare fiecărei matrice conțin valorile intensității culorilor roșu, verde și albastru pentru pixelul specificat de indicii matricei. Astfel, o imagine full-color nu are o hartă de culori și culoarea fiecărui pixel este reprezentată de trei numere luate din matricele corespunzătoare (Fig. 4).

Formatul numerelor din matrice poate fi fie întreg, fie virgulă mobilă. Primul caz se referă la așa-numitele imagini digitizate obținute cu ajutorul diverselor dispozitive – scanere, camere digitale, camere de televiziune etc. În acest format, informațiile despre imagini sunt stocate în fișiere grafice standard.

A doua opțiune este utilizată pentru reprezentarea internă a imaginilor în timpul procesării acestora. În acest caz, este convenabil să normalizați datele de intensitate la un interval, de exemplu, la intervalul , și să efectuați diferite calcule cu numere plutitoare, apoi să convertiți rezultatul în forma întreagă originală. Această metodă permite reducerea erorilor de calcul și îmbunătățirea preciziei rezultatului procesării.

Pentru imagini full color, una dintre opțiuni este numărul maxim de culori care pot fi reprezentate în acel format. Imaginile cele mai frecvent utilizate au 16, 256, 65536 (Culoare înaltă) și 10,7 milioane (Culoare adevărată).

Algoritmi de preprocesare a imaginii

0 0 0 0 1 1 1 0 0

120 122 125 128 115 117 118

1 0 0 0 1 1 1 1 0

119 121 124 125 128 130 133

1 1 0 0 1 1 0 0 1

122 122 124 123 127 126 128

120 121 123 125 127 125 126

1 1 1 0 1 1 0 0 0

118 110 109 108 108 109 110

0 0 1 0 0 1 0 0 1

Algoritmi de preprocesare a imaginii

Matricea indexului

31 15 03 09

matricea paletei

Algoritmi de preprocesare a imaginii

O imagine colorată poate fi reprezentată nu numai în format RGB, ci și folosind alte sisteme de culoare.

În sistemul HSB, culoarea este reprezentată de următoarele caracteristici de culoare: Nuanță - ton de culoare;

Saturație - saturație; Luminozitate - luminozitate.

Se crede că acest sistem de culori corespunde particularităților percepției umane asupra culorii.

În sistemul LAB, culoarea este considerată ca o combinație de luminozitate (luminozitate) și două valori independente de crominanță, care determină culoarea adevărată a unui pixel. Cromaticitatea A - componenta de culoare este selectată în intervalul de la magenta la verde. Cromaticitatea B - a doua componentă de culoare este selectată din intervalul de la galben la albastru.

Există și alte sisteme de reprezentare a culorilor. Desigur, toate sunt conectate și dintr-o reprezentare se poate obține alta. Varietatea sistemelor de culoare se datorează sarcinilor rezolvate cu ajutorul acestora. De exemplu, este mai convenabil să efectuați corecția culorii în sistemul LAB, să reproduceți imaginea pe ecranul monitorului în sistemul RGB, este mai bine să imprimați,

Algoritmi de preprocesare a imaginii

folosind reprezentarea CMYK. Cu toate acestea, în orice caz, atunci când procesează imagini și le recunoaște, acestea funcționează cu o reprezentare raster a imaginilor care conțin una sau mai multe matrice.

Clasificarea algoritmilor de preprocesare

Algoritmii de preprocesare a imaginilor sunt împărțiți în diferite grupuri, în funcție de caracteristica de clasificare. Toți algoritmii de preprocesare trebuie fie să îmbunătățească calitatea imaginilor într-un fel, fie să le convertească într-o formă care este cea mai convenabilă pentru procesarea ulterioară.

Algoritmii care vizează îmbunătățirea reproducerii culorii unei imagini se numesc algoritmi de corecție a culorii. Acest grup include, de asemenea, algoritmi care funcționează cu imagini în tonuri de gri care le modifică caracteristicile de luminozitate și contrast.

Algoritmii care vizează procesarea caracteristicilor spațiale ale imaginilor se numesc algoritmi filtrare spațială. Acest grup include algoritmi de suprimare a zgomotului, algoritmi de netezire spațială și algoritmi de amplificare spațială, algoritmi de suprimare și amplificare a frecvențelor spațiale.

Se numesc algoritmi care efectuează operații geometrice pe o imagine algoritmi de procesare geometrică. Acestea includ:

Algoritmi de preprocesare a imaginii

Decuparea unei imagini - selectarea unei anumite părți a unei forme dreptunghiulare din imaginea originală;

Redimensionarea imaginii. Acești algoritmi folosesc diverse metode de interpolare fie pentru a completa corect pixelii lipsă în imaginea mărită, fie pentru a recalcula valorile pixelilor atunci când imaginea este redusă.

Rotirea imaginii. Acești algoritmi rotesc imaginea originală cu un unghi dat, recalculând corect valorile pixelilor utilizând diverse metode de interpolare.

Se numesc algoritmi care efectuează transformări de la un sistem de culori la altul algoritmi de conversie a culorilor. Acestea includ, de asemenea, algoritmi pentru conversia imaginilor color în tonuri de gri și algoritmi de binarizare care convertesc imaginea originală într-una binară.

Algoritmii care selectează unele zone din imaginea originală în funcție de condiții diverse, adesea informale, sunt numiți algoritmi de segmentare. Un exemplu de astfel de algoritm poate fi, de exemplu, un algoritm care ar trebui să evidențieze zone de text și informații grafice pe o imagine de document sau un algoritm care selectează zone dintr-o imagine text care aparțin cuvintelor individuale.

Algoritmi de preprocesare a imaginii

Algoritmi de filtrare spațială

Filtrarea spațială a unei imagini în formă matematică este o convoluție discretă a unei imagini discrete cu un răspuns la impuls al unui filtru spațial

Dacă (i, j)

Im(i m , j n )h (m , n ), unde:

m N11 n N21

Im, dacă matrice ale imaginilor originale și filtrate, h este matricea răspunsului la impuls al filtrului,

N 11 , N 21 limitele inferioare și superioare ale coloanelor de răspuns la impuls, N 12 , N 22 limitele stânga și dreapta ale rândurilor de răspuns la impuls.

Matricea răspunsului la impuls poate fi obținută prin calcularea filtrului spațial pe baza parametrilor dați. O mare cantitate de literatură despre filtrarea digitală este dedicată metodelor de calcul a filtrelor spațiale, de exemplu. Pentru calcule practice, puteți utiliza pachete matematice standard, de exemplu, sistemul „MATLAB” include sistemul de calcul al filtrului „Image Filter Design”.

Rețineți că filtrarea poate fi efectuată și în domeniul frecvenței. In aceea

Algoritmi de preprocesare a imaginii

În acest caz, ordinea de filtrare este următoarea:

Convertiți imaginea din domeniul spațial în domeniul frecvenței utilizând transformarea Fourier discretă 2D

Efectuați înmulțirea pe elemente a matricei de frecvență a imaginii cu matricea de frecvență a filtrului

Rezultatul obținut este convertit într-un domeniu spațial folosind transformarea Fourier discretă bidimensională inversă.

Im(x, y)

Im(f x , f y )

Dacă (f x , f y ) Im(f x , f y ) H (f x , f y )

Dacă (fx, f y)

Dacă (x, y).

Filtrarea imaginilor în domeniul frecvenței este rar utilizată din cauza numărului mare de calcule. Cu toate acestea, această metodă de filtrare este utilizată pe scară largă în calculele teoretice în analiza opțiunilor de procesare a imaginii. Vă permite să vizualizați destul de clar ce fel de filtrare este necesar. De exemplu, dacă trebuie să evidențiați schimbări bruște ale luminozității în imagine, atunci este evident că trebuie să utilizați filtre de trecere înaltă. Dimpotrivă, dacă trebuie să scăpați de zgomotul de joasă frecvență - circuite tremurătoare, vârfuri individuale etc., atunci trebuie să utilizați filtre low-pass. Parametrii specifici de filtru sunt selectați pe baza analizei frecvenței interferenței și a proprietăților imaginii originale.