Kako podesiti pametne telefone i računare. Informativni portal

Filtracija. Algoritam izoštravanja

Ovaj članak ne govori samo o najčešćim filterima za obradu slike, već i na razumljiv način opisuje algoritme za njihov rad. Članak je prvenstveno namijenjen programerima koji se bave obradom slika.

Konvoluciona matrica

Postoji mnogo filtera koji koriste konvolucionu matricu, a glavni će biti opisani u nastavku.

Matrica konvolucije je matrica koeficijenata koja se "množi" sa vrijednošću piksela slike kako bi se dobio željeni rezultat.
Ispod je primjena matrice konvolucije:

Div je faktor normalizacije tako da prosječni intenzitet ostaje isti.

U primjeru, matrica ima veličinu 3x3, iako veličina može biti veća.

filter za zamućenje

Najčešće korišteni filter koji se temelji na matrici konvolucije je filter zamućenja.

Obično se matrica popunjava prema normalnom (Gaussovom) zakonu. Ispod je 5x5 matrica zamućenja ispunjena prema zakonu Gaussove distribucije.

Koeficijenti su već normalizovani, tako da je div za ovu matricu jedan.

Jačina zamućenja ovisi o veličini matrice.

Vrijedi spomenuti granične uslove (ovaj problem je relevantan za sve matrične filtere). Gornji lijevi piksel nema "susjeda" desno od njega, stoga nemamo čime pomnožiti koeficijent matrice.

Postoje 2 rješenja za ovaj problem:

1. Primjena filtera, samo na "prozor" slike, koji ima koordinate lijevo gornji ugao, i za donji desni . kernelSize - veličina matrice; širina, visina - veličina slike.

Nije Najbolji način, budući da se filter ne primjenjuje na cijelu sliku. Kvaliteta dosta pati ako je veličina filtera velika.

2. Druga metoda (adicija) zahtijeva kreiranje srednje slike. Ideja je da se napravi privremena slika sa dimenzijama (širina + 2 * kernelSize / 2, visina + 2 * kernelSize / 2). Ulazna slika se kopira u centar slike, a rubovi su ispunjeni krajnjim pikselima slike. Zamućenje se primjenjuje na srednji bafer, a zatim se iz njega izdvaja rezultat.

Ova metoda nema nedostataka u kvaliteti, ali je potrebno izvršiti dodatne proračune.

Gaussov filter zamućenja ima O(hi * wi * n *n) složenost, gdje su hi, wi dimenzije slike, n je veličina matrice (kernel filtera). Ovaj algoritam se može optimizirati uz prihvatljiv kvalitet.

Kvadratno jezgro (matrica) može se zamijeniti s dva jednodimenzionalna: horizontalna i vertikalna. Za veličinu kernela od 5, oni će izgledati ovako:

Filter se primjenjuje u 2 prolaza: prvo horizontalno, a zatim okomito na rezultat (ili obrnuto).

Složenost ovaj algoritam bit će O(hi * wi * n) + O(hi * wi * n) = 2 * O(hi * wi * n), što je za veličinu kernela veću od dva, brže od tradicionalne metode kvadratne matrice.

Filter za poboljšanje jasnoće

Za poboljšanje jasnoće treba koristiti sljedeću matricu:

Ova matrica povećava razliku u vrijednostima na granicama. Div za ovu matricu je 1.

AT GIMP postoji filter "Convolution Matrix", koji pojednostavljuje pretragu za transformacijom matrice koja vam je potrebna.

Više detaljne informacije o filterima zasnovanim na matrici konvolucije možete pronaći u članku.

srednji filter

Srednji filter se obično koristi da smanji šum ili "ugladi" sliku.

Filter radi s matricama različitih veličina, ali za razliku od matrice konvolucije, veličina matrice utječe samo na broj piksela koji se razmatraju.

Algoritam srednji filter sljedeći:

Za trenutni piksel, pikseli koji "padaju" u matricu se sortiraju, a prosječna vrijednost se uzima iz sortiranog niza. Ova vrijednost je izlaz za trenutni piksel.

Ispod je rad srednjeg filtera za veličinu kernela od tri.

Nagomilani i erozijski filteri služe za postizanje morfološke ekspanzije ili kontrakcije. Jednostavno rečeno, za slike to znači odabir piksela maksimalnog ili minimalnog intenziteta iz susjedstva.

Kao rezultat nakupljanja, svijetli objekti se povećavaju, a erozija rezultira povećanjem tamnih objekata.

Filter koristi ulaznu sliku i binarnu matricu. Binarna matrica određuje oblik susjedstva. Naselje je obično okruglog oblika.

Filter Buildup se može koristiti za povećanje svjetla, svijetlih refleksija.

Zaključak

U članku su opisani neki od filtera za obradu slike, njihovi algoritmi i značajke aplikacije.

Slike formirane raznim optoelektronskim sistemima i snimljene različitim prijemnicima su izobličene djelovanjem smetnji različite prirode. Distorzije slike unose sve komponente uređaja za snimanje, počevši od sistema osvetljenja (na primer, neravnomerno osvetljenje objekta). Distorzije koje optički sistem, poznati su u fazi njegovog dizajna i nazivaju se aberacije. Distorzije koje unose elektronski prijemnici zračenja, kao što su CCD-ovi, nazivaju se elektronskim šumom. Interferencija to otežava vizuelna analiza slike i njihova automatska obrada.

Smanjenje efekta smetnje postiže se filtriranjem. Prilikom filtriranja, svjetlina (signal) svake tačke originalne slike, izobličena šumom, zamjenjuje se nekom drugom vrijednošću svjetline, koja se prepoznaje kao najmanje izobličena šumom. Za izvođenje filtriranja potrebno je razviti principe takvih transformacija, koji se zasnivaju na činjenici da se intenzitet slike u prostornim koordinatama mijenja sporije od funkcije šuma. U drugim slučajevima, naprotiv, oštre promjene svjetline su znak korisnog signala.

U evaluacijskim metodama filtriranja pravi signal u nekoj tački kadra neki skup se uzima u obzir ( susjedstvo) susjednih tačaka, koristeći određenu sličnost signala u tim tačkama. Koncept susjedstva je prilično uvjetovan. Susjedstvo mogu formirati samo najbliži susjedi u okviru, ali mogu postojati susjedstva koja sadrže dosta i dovoljno jaka udaljene tačke okvir. U ovom slučaju će stepen uticaja (težine) dalekih i bliskih tačaka na odluke koje donosi filter u datoj tački kadra biti potpuno drugačiji. Dakle, ideologija filtriranja zasnovana je na racionalnoj upotrebi podataka kako sa operativne tačke tako i iz njene blizine.

Prilikom rješavanja problema filtriranja koriste se probabilistički modeli slike i šuma, a primjenjuju se statistički kriteriji optimalnosti. To je zbog nasumične prirode smetnji i želje da se dobije minimalna prosječna razlika između rezultata obrade i idealnog signala. Raznolikost metoda i algoritama filtriranja povezana je sa širokim spektrom matematički modeli signali i smetnje, kao i različiti kriterijumi optimalnosti.

Neka je vrijednost svjetline slike - korisni signal na raskrsnici i-ti red i j-ti stupac, a slika uočena na ulazu filtera je opisana modelom:

Ovdje je vrijednost šuma u tački sa koordinatama (i,j), f() je funkcija koja opisuje interakciju signala i smetnji, i I i J– broj redova i kolona u okviru, respektivno.

Slika 1 prikazuje primjere susjedstava razne vrste, prikazano kao skupovi tačaka. Centar susjedstva, radna tačka u kojoj se vrši obrada, je tačka sa koordinatama (i,j).

Rice. 1 Primjeri naselja raznih tipova

U zavisnosti od tipa susjedstva, postoji kauzalno (a), ne-uzročno (b) i polu-uzročno (c) filtriranje slike. Koncept kauzalnosti (uzročne zavisnosti) povezan je sa omjerom koordinata trenutne tačke i tačaka uključenih u susjedstvo. Ako obje koordinate (broj reda i broj kolone) svih točaka u susjedstvu ne prelaze odgovarajuće koordinate trenutne točke, tada se susjedstvo i obrada koja ga koristi nazivaju uzročno. Ako tačke susjedstva zadovoljavaju princip kauzalnosti, filtriranje zasnovano na korištenju takvog susjedstva naziva se neuzročno. Ako među tačkama susjedstva postoje tačke čije koordinate ne prelaze radnu tačku u jednom smjeru, ali je premašuju u drugom, tada je filtriranje polu-kauzalni filtracija.

Kod linearnog filtriranja, izlazni efekat se određuje pomoću linearna kombinacija ulazni podaci:

U ovom izrazu je rezultat filtriranja korisnog signala u tački okvira s koordinatama (i,j), S- skup tačaka koje formiraju okolinu su težinski koeficijenti, čija je ukupnost dvodimenzionalni impulsni odziv (IR). Ako područje S je konačan, tada impulsni odziv ima konačnu dužinu i filter se naziva FIR filter. Inače, impulsni odziv ima beskonačnu dužinu i filter se naziva IIR filter. Impulsni odziv ne zavisi od koordinata tačke u kojoj je određen izlazni efekat. Pozivaju se procedure obrade slike koje imaju svojstvo da su nezavisne od koordinata homogena (izoplanatična).

Najčešći kriterijum optimalnosti koji se koristi za procenu kvaliteta obrade je kriterijum minimalne srednje kvadratne greške. U odnosu na filtriranje, zapisujemo njegov izraz u obliku:

što je dodatni uslov za impulsni odziv filtera.

Potencijalno najbolji rezultati filtriranja se postižu korištenjem ne-kauzalnog principa, budući da se ovaj princip zasniva na korištenju apsolutno svih početnih podataka prilikom obrade svake tačke okvira.

Rezultat linearnog filtriranja za dati prozor (za dati centralni piksel) opisuje se sljedećom jednostavnom formulom:

$$ \begin(gather) \tag(1) \mbox(Im)" = \sum\limits_(i= -\textrm(hWinX))^(\textrm(hWinX))~\sum\limits_(j= - \textrm(hWinY))^(\textrm(hWinY)) (\mbox(Im)\cdot \mbox(Mask)), \end(gather) $$

gdje su $\mbox(hWinX) = [\mbox(WinX)/2]$, $\mbox(hWinY) = [\mbox(WinY)/2]$ pola širine i pola visine prozora za filtriranje, (u slučaju prozora $3\put 3$ obje veličine su jednake 1).

Rezultat primjene operacije (1) na sve piksele slike Im$$ naziva se $\it(convolution)$ slike Im sa maskom maske.

Pokretni prosek u prozoru.

Najjednostavnija vrsta linearnog filtriranja prozora u prostornoj domeni je \it(pokretni prosjek) na prozoru. Rezultat takvog filtriranja je vrijednost matematičkog očekivanja izračunata za sve piksele prozora. Matematički, ovo je ekvivalentno maskiranoj konvoluciji, čiji su svi elementi jednaki $1/n$, gdje je $n$ broj elemenata maske. Na primjer, maska ​​pokretnog prosjeka $3\put 3$ je

$$ \frac(1)(9)\times \begin(vmatrix) 1&1&1\cr 1&1&1\cr 1&1&1 \end(vmatrix). $$

Razmotrimo primjer filtriranja šumne slike u sivim tonovima pomoću filtera "pokretnog prosjeka". Slike su šumne sa Gausovim aditivnim šumom (sl. 2 - 8).

Na sl. Slike 1 - 6 prikazuju primjere filtriranja slike u sivim tonovima s različitim stupnjevima šuma pomoću prosječnog filtera s veličinom prozora od $3\puta 3$. Kao što se može vidjeti iz primjera, filter "pokretnog prosjeka" ima manju sposobnost da potisne komponentu šuma u poređenju sa prethodno razmatranim srednjim filterom $3\puta 3$.

Zamislite pokretni prosek sa velikim prozorom filtera. Na sl. 23 - 28 je primjer srednje filtriranje sa različite veličine otvore blende.

Kao što se može vidjeti sa sl. - 12, kako se veličina prozora povećava, povećava se sposobnost srednjeg filtera da potisne komponentu buke. Međutim, istovremeno se povećava i efekat prividnog "defokusiranja" slike (sl. 11, 12) zbog zamućenja ivica vidljivih objekata. Takođe nismo uočili ovaj efekat razmazivanja, koji je specifičan za linearne filtere, u slučaju filtriranja nelinearnog ranga.

Gausovo filtriranje.

U prethodnom odeljku razmatrali smo "degenerisani" slučaj linearnog filtriranja sa homogenom maskom. U međuvremenu, sama ideja konvolucije slike sa težinskom matricom je slična prethodno razmatranoj ideji uvođenja matrice težine u ponderisane percentilne filtere. Moguće je povećati stabilnost rezultata filtriranja na rubovima regiona dajući bližim tačkama susjedstva veći utjecaj na konačni rezultat od udaljenih. Primjer implementacije ove ideje za prozor veličine $3\puta 3$ je maska

$$ \frac(1)(16)\times \begin(vmatrix) 1&2&1\cr 2&4&2\cr 1&2&1 \end(vmatrix). $$

Takva maska ​​se zove Gausova; respektivno, a linearni filter koji ga koristi naziva se i $\it(Gaussian)$. Koristeći diskretne aproksimacije dvodimenzionalne Gaussove funkcije, mogu se dobiti druga Gaussova jezgra veća veličina. Imajte na umu da $\it(smoothing)$ ili $\it(filtering)$ maske linearnih filtera moraju imati zbir svih elemenata jednak $1$. Ovaj $\it(uslov normalizacije)$ garantuje adekvatan odgovor filtera na konstantan signal (konstantna slika Im$ = \const$).

Na sl. 13 - 15 prikazuje primjer Gaussovog linearnog filtriranja slike s bukom.

Digitalni filteri vam omogućavaju da se superponirate na sliku razni efekti, na primjer: zamućenje, izoštravanje, iskrivljenje, šum, itd.

digitalni filter je algoritam za obradu slike. velika grupa digitalni filteri imaju isti algoritam, ali efekat koji filter nameće na sliku zavisi od koeficijenata koji se koriste u algoritmu.

Filtriranje slika jedna je od najosnovnijih operacija kompjuterski vid, prepoznavanje uzoraka i obrada slika. Zapravo, rad velike većine metoda počinje jednim ili drugim filtriranjem originalnih slika.

Linijski filteri

Linearni filteri su porodica filtara koji imaju vrlo jednostavan matematički opis. Međutim, oni vam omogućavaju da postignete širok spektar efekata. Pretpostavljamo da je data originalna polutonska slika A, i označavaju intenzitete njegovih piksela A(x, y). Linijski filter je definirana funkcijom realne vrijednosti F navedeno na rasteru. Ova funkcija naziva se jezgro filtera, a samo filtriranje se izvodi pomoću operacije diskretne konvolucije (ponderirano zbrajanje):

Rezultat je slika B. Granice sumiranja nisu definirane u gornjoj formuli. Obično se jezgro filtera razlikuje od nule samo u nekom susjedstvu N bodova (0, 0). Izvan ovog naselja F(i, j) je ili tačno nula, ili vrlo blizu njoj, tako da se može zanemariti. Stoga se zbrajanje vrši preko ( i, j) Є N, i vrijednost svakog piksela B(x, y) definiran je pikselima slike A koji leže na prozoru N, centriran u tački ( x, y) (označavamo ovaj skup N(x, y)). Kernel filtera definiran na pravokutnom susjedstvu N, može se smatrati matricom m× n, gdje su dužine stranica neparni brojevi. Prilikom specificiranja kernela pomoću matrice Mkl, treba biti centriran:

Situacija kada piksel ( x, y) se nalazi blizu ivica slike. U ovom slučaju A(x+i, y+j) može odgovarati pikselu A, koji se nalazi izvan granica slike A. Ovaj problem može se riješiti na nekoliko načina:



§ nemojte filtrirati takve piksele izrezivanjem slike B duž rubova ili bojenjem, na primjer, crnom bojom;

§ ne uključiti odgovarajući piksel u sumiranje raspodjelom njegove težine F(i, j) ravnomjerno među ostalim pikselima susjedstva N(x, y);

§ određivanje vrijednosti piksela izvan granica slike pomoću ekstrapolacije;

§ redefinirajte vrijednosti piksela izvan granica slike koristeći zrcaljenje.

Izbor specifičan način moraju biti proizvedeni uzimajući u obzir specifične filtere i karakteristike specifičnu primjenu. Nakon demontiranja opšta definicija linearni filteri, idemo na primjere.

Filteri za izglađivanje

Rezultat primjene filtera za izglađivanje je zamućenje slike, eliminiranje oštrih prijelaza boja. Najjednostavniji pravougaoni filter radijusa za izravnavanje r je specificirano pomoću matrice veličine (2 r+ 1) × (2 r+ 1), čije su sve vrijednosti jednake:

,

a zbir svih elemenata matrice je dakle jednak jedan. Prilikom filtriranja s ovim kernelom, vrijednost piksela se zamjenjuje prosječnom vrijednošću piksela u kvadratu sa stranicom 2 r+1 oko njega. Primjer filtriranja pomoću pravokutnog filtera prikazan je na sl. 4.19.

a)
b)

Rice. 4.19. Primjer korištenja filtera za izravnavanje

U ovom slučaju, pravougaoni filter od 3 x 3 piksela se primenjuje na originalnu sliku (slika 4.19, a). Kernel filtera u ovom slučaju izgleda ovako:


.

Rezultat filtriranja je prikazan na slici desno (slika 4.19, b). Imajte na umu da zbir svih elemenata kernela filtera rezultira u jedinici. Stoga možemo reći da se pri korištenju takvog filtera u cjelini svjetlina cijele slike ne mijenja. Međutim, kao rezultat usrednjavanja vrijednosti boje piksela, kontrast slike se smanjuje, kao što se može vidjeti na Sl. 4.19.

Kao što možete vidjeti iz gornjeg primjera, filteri za izravnavanje mogu se koristiti za uklanjanje efekta stepenica, kao i za smanjenje buke.

Buka- defekt na slici, koji je unesen fotosenzorima i elektronikom uređaja, ili nastaje prilikom upotrebe analogni uređaji. Šum na slici se pojavljuje kao nasumično locirani elementi rastera (tačke), koji imaju dimenzije bliske veličini piksela. Šum se razlikuje od slike po tome što je lakši ili tamna nijansa siva i boja i/ili boja. Razlog za pojavu šuma na slici je: zrnastost filma, prljavština, prašina, ogrebotine, odvajanje fotografske emulzije. Ako uzmemo u obzir digitalnih uređaja onda je uzrok digitalnog šuma: termalni šum matrice, šum prijenosa naboja, šum kvantizacije ADC-a, pojačanje signala u digitalna kamera, prljavština, prašina na senzoru.

Primjena linearnog filtriranja s pravokutnim kernelom ima značajan nedostatak: piksela u udaljenosti r od obrađenih imaju isti učinak na rezultat kao i susjedni. Efikasnije smanjenje šuma može se postići ako se uticaj piksela jedan na drugog smanjuje sa rastojanjem. Ova nekretnina ima Gaussian filter sa kernelom:


Gaussov filter ima nenultu jezgru beskonačne veličine. Međutim, jezgro filtera se vrlo brzo smanjuje na nulu kako se udaljavamo od tačke (0, 0), pa se stoga, u praksi, možemo ograničiti na konvoluciju s prozorom mala velicina oko (0, 0) (na primjer, uzimajući radijus prozora jednak 3 σ ).

Gausovo filtriranje je također uglađivanje. Međutim, za razliku od pravokutnog filtera, slika točke s Gaussovim filtriranjem bit će simetrična zamućena tačka, sa smanjenjem svjetline od sredine prema rubovima, što je mnogo bliže stvarnom zamućenju od defokusiranih sočiva.

Kao što znate, postoji mnogo načina za modificiranje i uređivanje slika pomoću digitalne metode. Rezultat obrade slike u ovom slučaju zavisi od toga koje operacije možete izvršiti sa slikom nakon što je stigla na vaš računar: možete uređivati RGB-komponente boja u cilju dobijanja najboljeg balans boja. Možete povećati ili smanjiti svjetlinu slike, urediti njenu oštrinu ili zamućenje pojedinačni elementi koristeći različite grafičke filtere. Pogledat ćemo izuzetno popularne efekte koji se obično koriste u kompjuterskoj grafici:

  • Inverzija boja.
  • Zamućenje.
  • Oštrenje.
  • Embossing.
  • efekat akvarela.

Matrix - Convolution Kernel

Ako razmotrimo ove efekte sa algoritamske tačke gledišta, nećemo vidjeti ništa komplicirano: ovi efekti se stvaraju pomoću matrice brojeva. Ova matrica se zove konvoluciono jezgro.

Ova matrica ( 3x3) sadrži tri reda od tri broja. Za transformaciju piksela slike, on se množi sa vrijednošću u centru kernela, a vrijednosti piksela oko datog se množe sa odgovarajućim koeficijentima kernela, nakon čega se sve vrijednosti zbrajaju, i dobijamo novu vrijednost za piksel koji se mijenja. Ovaj proces mora se izvoditi uzastopno sa svakim pikselom uređene slike.

Koeficijenti kernela određuju kako će se uređena slika promijeniti. Da biste postigli neke efekte, potrebno je sukcesivno primijeniti ne jednu, već nekoliko matrica na sliku.

Inverzija boja

Ovo je najlakši način za uređivanje slike: ne treba nam čak ni matrica. Samo trebamo promijeniti boje komponenti u suprotne (za više detalja, kada implementiramo filter u sljedećem dijelu poglavlja).

Algoritam zamućenja

Da bismo zamaglili sliku, moramo učitati u memoriju vrijednosti RGB-komponente boje svakog piksela. Nakon toga, jezgro zamućenja će se primijeniti na sve komponente boje svih piksela uređene slike:
Slika 1. Matrica za filter "Blur".

Da bi se odredila boja piksela koji se nalazi ispod centra kernela, potrebno je pomnožiti težinske koeficijente kernela s odgovarajućim vrijednostima boja uređene slike. Nakon toga, rezultati se sumiraju.

Rezultirajuća slika je "zamućena" u odnosu na original, jer se boja svakog obrađenog piksela "proširila" među susjednim pikselima.

Da povećate jezgru zamućenja, možete:

  • koristite veće jezgro (tako da će boja biti raspoređena među više susjedni pikseli)
  • mijenjati koeficijente na način da se smanji uticaj centralnog koeficijenta;
  • izvršiti filtriranje slike više puta;

Algoritam izoštravanja

Prilikom kreiranja efekta izoštravanja i dalje slijedimo isti algoritam, ali koristimo drugačiji kernel, jer nam je sada cilj da izoštrimo sliku. Core G za povećanje oštrine:
Slika 2. Matrica za filter "Sharpen".
Kao iu prethodnom slučaju, obrađujemo odvojeno RGB-komponente, nakon čega formiramo vrijednosti boja obrađenog piksela. Negativne težine se koriste za povećanje kontrasta između centralnog piksela i njegovih susjeda.

Dakle, rezultirajuća slika je oštrija od originala. Zapravo dodatni detalji nastao iz ničega - to je samo povećan kontrast između boja piksela.

Algoritam za utiskivanje

Utiskivanje se radi na isti način, ali ovaj slučaj ne koristimo jednu matricu, već nekoliko.
Slika 3.1 Matrica za "Emboss" filter: prvi korak.
Dok su jezgra zamućenja i izoštravanja imala zbir koeficijenata jednako jedan, u ovom slučaju je zbir težina u jezgri za utiskivanje jednak 0 . Ako zbir koeficijenata nije jednak 0 , dobićemo odstupanje neke određene boje.

Rezultirajuća vrijednost boje će se dalje obraditi (prosječiti) i svesti na raspon 0-255 (više detalja možete vidjeti prilikom implementacije ovaj filter). Promjena vrijednosti položaja 1 i -1 , možemo promijeniti smjer isticanja.
Slika 3.2. Matrica za "Emboss" filter: drugi korak.

Algoritam akvarela

Naziv filtera za akvarel govori sam za sebe: rezultirajuća slika će izgledati kao da je naslikana akvarelom. U prvoj fazi primjene ovog filtera izgladit ćemo boje uređene slike.
Slika 4.1. Matrica za filter "Efekat akvarela": prvi korak.
U sljedećem koraku izoštrit ćemo prijelaze kako bismo upotpunili efekat akvarela.
Slika 4.2. Matrica za filter "Efekat akvarela": drugi korak.
To je sve. Laganim podešavanjem parametara matrice možemo dobiti i oštriji i glatkiji efekat akvarela. br />

Top Related Articles