Kako postaviti pametne telefone i računala. Informativni portal

Filtriranje. Algoritam izoštravanja

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

Matrica konvolucije

Postoji mnogo filtara koji koriste matricu konvolucije, a glavni će biti opisani u nastavku.

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

Div je koeficijent racionalizacije tako da prosječni intenzitet ostaje nepromijenjen.

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

Filter za zamućenje

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

Tipično, matrica se popunjava u skladu s normalnim (Gaussovim) zakonom. Ispod je matrica zamućenja 5x5 ispunjena Gaussovom distribucijom.

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

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

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

Postoje 2 rješenja za ovaj problem:

1. Nanesite filter samo na "prozor" slike koji ima koordinate gornjeg lijevog kuta, a za donji desni. kernelSize - veličina matrice; širina, visina - veličina slike.

Ovo nije najbolji način, jer se filtar ne primjenjuje na cijelu sliku. U ovom slučaju, kvaliteta pati mnogo ako je veličina filtera velika.

2. Druga metoda (dodavanje) zahtijeva stvaranje međuslike. Ideja je stvoriti privremenu sliku s dimenzijama (širina + 2 * kernelSize / 2, visina + 2 * kernelSize / 2). Ulazna slika se kopira u središte slike, a rubovi su ispunjeni vanjskim pikselima slike. Zamućenje se primjenjuje na međuspremnik, a zatim se iz njega dohvaća rezultat.

Ova metoda nema nedostataka u kvaliteti, ali je potrebno napraviti nepotrebne izračune.

Gaussov filtar zamućenja ima složenost O (hi * wi * n * n), gdje su hi, wi veličine slike, n veličina matrice (jezgra filtra). Ovaj se algoritam može optimizirati s prihvatljivom kvalitetom.

Kvadratno jezgro (matrica) može se zamijeniti s dvije jednodimenzionalne: vodoravno i okomito. Za veličinu kernela od 5, izgledat će ovako:

Filtar se primjenjuje u 2 prolaza: prvo vodoravno, a zatim okomito na rezultat (ili jedan okret).

Složenost ovog algoritma 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 tradicionalnog metoda s kvadratnom matricom.

Filter za oštrenje

Da biste poboljšali jasnoću, trebate koristiti sljedeću matricu:

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

GIMP ima filtar Convolution Matrix koji olakšava pronalaženje transformacije matrice koja vam je potrebna.

Više informacija o filterima temeljenim na matrici konvolucije možete pronaći u članku.

Medijan filter

Srednji filtar se obično koristi za smanjenje šuma ili "glatke" slike.

Filtar radi s matricama različitih veličina, ali za razliku od matrice konvolucije, veličina matrice utječe samo na broj dotičnih piksela.

Algoritam srednjeg filtra je sljedeći:

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

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

Filtri za nakupljanje i eroziju koriste se za postizanje morfološkog širenja ili kontrakcije. Jednostavnije rečeno, za slike to znači odabir piksela maksimalnog ili minimalnog intenziteta iz susjedstva.

Kao rezultat nakupljanja, dolazi do povećanja svijetlih objekata, a erozije - povećanja tamnih objekata.

Filtar koristi ulaznu sliku i binarnu matricu. Binarna matrica određuje oblik susjedstva. Obično je okolica okrugla.

Nagomilani filtar se može koristiti za povećanje odsjaja, svijetle refleksije.

Zaključak

Članak opisuje neke od filtara za obradu slike, opisuje njihove algoritme i značajke aplikacije.

Slike formirane raznim optoelektroničkim sustavima i snimljene uz pomoć različitih prijamnika izobličavaju se djelovanjem smetnji različite prirode. Izobličenja slike unose sve komponente slikovnog uređaja, počevši od sustava rasvjete (primjerice, neravnomjerno osvjetljenje objekta). Izobličenja koja unosi optički sustav poznata su u fazi projektiranja i nazivaju se aberacijama. Distorzije koje unose elektronički detektori zračenja, kao što su CCD-ovi, nazivaju se elektroničkim šumom. Interferencija ometa vizualnu analizu slike i njezinu automatsku obradu.

Slabljenje učinka smetnji postiže se filtriranjem. Prilikom filtriranja svjetlina (signal) svake točke izvorne 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 temelje na činjenici da se intenzitet slike u prostornim koordinatama mijenja sporije od funkcije šuma. U drugim slučajevima, naprotiv, znak korisnog signala su oštre promjene svjetline.

U metodama filtriranja, kada se procjenjuje stvarni signal u određenoj točki okvira, određeni skup ( susjedstvo) susjedne točke, koristeći prednost određene sličnosti signala u tim točkama. Koncept susjedstva prilično je proizvoljan. Susjedstvo mogu formirati samo najbliži susjedi u okviru, ali mogu postojati susjedstva koja sadrže dosta i prilično udaljenih točaka okvira. U tom će slučaju stupanj utjecaja (težine) udaljenih i bliskih točaka na odluke koje filtar donosi u danoj točki kadra biti potpuno drugačiji. Dakle, ideologija filtriranja temelji se na racionalnom korištenju podataka kako s operativne točke tako i iz njezine blizine.

Pri rješavanju problema filtriranja koriste se vjerojatnosni modeli slike i šuma te se primjenjuju statistički kriteriji optimalnosti. To je zbog slučajne prirode smetnji i želje da se dobije minimalna, u prosjeku, razlika između rezultata obrade i idealnog signala. Raznolikost metoda i algoritama za filtriranje povezana je s širokim spektrom matematičkih modela signala i šuma, kao i različitim kriterijima optimalnosti.

Neka je vrijednost svjetline slike - korisni signal na raskrižju i-ti red i j-ti stupac, a slika promatrana na ulazu filtra opisana je modelom:

Ovdje je vrijednost šuma u točki s koordinatama (i J), f () Je funkcija koja opisuje interakciju signala i smetnji, i ja i J- broj redaka i stupaca u okviru.

Slika 1 prikazuje primjere različitih tipova četvrti, prikazanih kao zbirke točaka. Središte susjedstva, radna točka u kojoj se vrši obrada, je točka s koordinatama (i J).

Riža. 1 Primjeri različitih tipova četvrti

Ovisno o vrsti susjedstva, postoji uzročno (a), neuzročno (b) i polu-uzročno (c) filtriranje slike. Pojam kauzalnosti (kauzalnosti) povezan je s omjerom koordinata trenutne točke i točaka u blizini. Ako obje koordinate (broj retka i broj stupca) svih točaka u susjedstvu ne prelaze odgovarajuće koordinate trenutne točke, tada se susjedstvo i obrada koja ga koristi nazivaju uzročne... Ako točke susjedstva zadovoljavaju princip kauzalnosti, filtracija koja se temelji na korištenju takvog susjedstva naziva se neuzročno... Ako među točkama susjedstva postoje točke čije koordinate ne prelaze radnu točku u jednom smjeru, ali je premašuju u drugom, tada je filtracija poluuzročne filtracija.

S linearnim filtriranjem, izlazni učinak određuje se linearnom kombinacijom ulaza:

U ovom izrazu - rezultat filtriranja korisnog signala u točki okvira s koordinatama (i J), S - skup točaka koje tvore susjedstvo su težinski koeficijenti, čija je ukupnost dvodimenzionalni impulsni odziv (IH). Ako područje S je konačan, impulsni odziv ima konačnu duljinu i filtar se naziva FIR filtar. Inače, impulsni odziv je beskonačne duljine i filtar se naziva IIR filter. Impulsni odziv je neovisan o koordinatama točke u kojoj je određen izlazni učinak. Pozivaju se postupci obrade slike koji su neovisni o koordinatama homogena (izoplanatična).

Najčešći kriterij optimalnosti koji se koristi za ocjenu kvalitete obrade je kriterij minimalnog srednjeg kvadrata pogreške. Što se tiče filtracije, zapisujemo njen izraz u obliku:

što je dodatni uvjet za impulsni odziv filtera.

Potencijalno najbolji rezultati filtriranja postižu se korištenjem ne-kauzalnog principa, budući da se ovaj princip temelji na korištenju apsolutno svih početnih podataka pri obradi svake točke u okviru.

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

$$ \ započeti (sakupiti) \ tag (1) \ mbox (Im) "= \ zbroj \ limits_ (i = - \ textrm (hWinX)) ^ (\ textrm (hWinX)) ~ \ zbroj \ limits_ (j = - \ textrm (hWinY)) ^ (\ textrm (hWinY)) (\ mbox (Im) \ cdot \ mbox (Maska)), \ end (sakupi) $$

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

Rezultat primjene operacije (1) na sve piksele Im $$ naziva se $ \ it (konvolucija) $ Im s maskom.

Pokretni prosjek u prozoru.

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

$$ \ frac (1) (9) \ puta \ početak (vmatrix) 1 & 1 & 1 \ cr 1 & 1 & 1 \ cr 1 & 1 & 1 \ end (vmatrix). $$

Razmotrimo primjer filtriranja slike u sivim tonovima s šumom s filtrom pomičnih prosjeka. Slike su bučne s Gaussovim aditivnim šumom (slika 2-8).

Na sl. 1 - 6 su primjeri filtriranja slike u sivim tonovima s različitim stupnjevima šuma pomoću prosječnog filtra s veličinom prozora 3 $ \ puta 3 $. Kao što možete vidjeti iz primjera, filtar "pokretnog prosjeka" ima manju sposobnost suzbijanja komponente šuma u usporedbi s prethodno razmatranim srednjim filtrom $ 3 \ puta 3 $.

Razmislite o pokretnom prosjeku s velikim prozorom filtra. Na sl. Slike 23-28 daju primjer srednjeg filtriranja s različitim veličinama otvora.

Kako se vidi iz sl. - 12, s povećanjem veličine prozora povećava se sposobnost srednjeg filtra da potisne komponentu buke. No, u ovom slučaju se također povećava učinak prividnog "defokusiranja" slike (sl. 11, 12) zbog zamućenja rubova vidljivih objekata. Također nismo primijetili ovaj efekt zamućenja, koji je specifičan za linearne filtre, u slučaju nelinearnog filtriranja ranga.

Gaussovo filtriranje.

U prethodnom odjeljku razmatrali smo "degenerirani" slučaj linearnog filtriranja s uniformnom maskom. U međuvremenu, sama ideja savijanja slike s težinskom matricom slična je prethodno razmatranoj ideji uvođenja matrice težine u ponderirane percentilne filtere. Moguće je povećati stabilnost rezultata filtriranja na rubovima regija ako bliže točke u susjedstvu imaju veći utjecaj na konačni rezultat od udaljenih. Primjer implementacije ove ideje za prozor $3 \ puta 3 $ je maska

$$ \ frac (1) (16) \ puta \ početak (vmatrix) 1 & 2 & 1 \ cr 2 & 4 & 2 \ cr 1 & 2 & 1 \ end (vmatrix). $$

Ova maska ​​se zove Gaussova; odnosno, a linearni filtar koji ga koristi također se naziva $ \ it (Gaussov) $. Koristeći diskretne aproksimacije dvodimenzionalne Gaussove funkcije, mogu se dobiti druge veće Gaussove jezgre. Imajte na umu da maske filtera reda $ \ it (zaglađivanje) $ ili $ \ it (filtriranje) $ moraju imati zbroj svih elemenata jednak $ 1 $. Ovaj $ \ it (uvjet normalizacije) $ jamči adekvatan odgovor filtra na konstantan signal (konstantna slika Im $ = \ const $).

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

Digitalni filtri omogućuju vam da primijenite različite efekte na sliku, na primjer: zamućenje, oštrina, deformacija, šum itd.

Digitalni filtar je algoritam za obradu slike. Velika skupina digitalnih filtara ima isti algoritam, ali učinak filtra na sliku ovisi o koeficijentima koji se koriste u algoritmu.

Filtriranje slike jedna je od najosnovnijih operacija računalnog vida, prepoznavanja uzoraka i obrade slike. Zapravo, rad velike većine metoda počinje jednim ili drugim filtriranjem izvornih slika.

Linijski filteri

Linearni filtri su obitelj filtara koji imaju vrlo jednostavan matematički opis. U isto vrijeme, oni vam omogućuju postizanje širokog spektra učinaka. Pretpostavit ćemo da je dana izvorna slika u sivim tonovima A, i označavaju intenzitete njegovih piksela A(x, y). Linijski filter definiran je realnovrijednom funkcijom F navedeno na rasteru. Ova funkcija se naziva jezgro filtera, a samo filtriranje se izvodi pomoću operacije diskretne konvolucije (ponderirano zbrajanje):

Rezultat je slika B... Granice zbrajanja nisu definirane u gornjoj formuli. Obično je jezgra filtera različita od nule samo u nekom susjedstvu N bodova (0, 0). Izvan ovog kvarta F(i, j) je ili točno nula, ili vrlo blizu njemu, pa ga možete zanemariti. Stoga se zbrajanje izvodi preko ( i, j) Є N i vrijednost svakog piksela B(x, y) određena je pikselima slike A koji leže na prozoru N centriran u točki ( x, y) (označavamo ovaj skup N(x, y)). Jezgra filtra definirana na pravokutnom susjedstvu N, može se promatrati kao matrica m× n gdje su duljine stranica neparni brojevi. Prilikom specificiranja kernela matricom M kl, trebao bi biti centriran:

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



§ nemojte filtrirati takve piksele izrezivanjem slike B oko rubova ili ih obojiti, na primjer, crnom bojom;

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

§ odrediti vrijednosti piksela izvan granica slike pomoću ekstrapolacije;

§ za redefiniranje vrijednosti piksela izvan granica slike, pomoću zrcalne refleksije.

Odabir određene metode mora se izvršiti uzimajući u obzir specifični filtar i karakteristike specifične primjene. Nakon što smo analizirali opću definiciju linearnih filtara, prijeđimo na primjere.

Filteri za izglađivanje

Rezultat primjene anti-aliasing filtera je zamućenje slike, uklanjanje oštrih prijelaza boja. Najjednostavniji filtar za izravnavanje pravokutnog radijusa r specificira se pomoću matrice veličine (2 r+ 1) × (2 r+ 1), čije su sve vrijednosti jednake:

,

a zbroj svih elemenata matrice je dakle jednak jedan. Prilikom filtriranja s ovom kernelom, vrijednost piksela zamjenjuje se prosječnom vrijednošću piksela u kvadratu sa stranom 2 r+1 oko njega. Primjer filtriranja pomoću pravokutnog filtra prikazan je na Sl. 4.19.

a)
b)

Riža. 4.19. Primjer korištenja anti-aliasing filtera

U ovom slučaju, pravokutni filtar veličine 3 puta 3 piksela se postavlja na originalnu sliku (slika 4.19, a). Jezgra filtera u ovom slučaju izgleda ovako:


.

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

Kao što možete vidjeti iz gornjeg primjera, anti-aliasing filteri se mogu koristiti za uklanjanje efekta stubišta, kao i za smanjenje buke.

Buka- nedostatak u slici uzrokovan fotosenzorima i elektronikom uređaja, ili koji proizlazi iz uporabe analognih uređaja. Šum na slici se pojavljuje u obliku nasumično lociranih rasterskih elemenata (točaka) s veličinama bliskim veličini piksela. Šum se od slike razlikuje po svjetlijoj ili tamnijoj nijansi sive i boji i/ili boji. Razlog za pojavu šuma na slici je: zrno filma, prljavština, prašina, ogrebotine, ljuštenje fotografske emulzije. Ako uzmemo u obzir digitalne uređaje, onda je uzrok digitalnog šuma: toplinski šum matrice, šum prijenosa naboja, šum kvantizacije ADC-a, pojačanje signala u digitalnom fotoaparatu, prljavština, prašina na senzoru.

Korištenje linearnog filtriranja s pravokutnom kernelom ima značajan nedostatak: pikseli na udaljenosti r od obrađenih imaju isti učinak na rezultat kao i susjedni. Učinkovitije smanjenje šuma može se postići ako se utjecaj piksela jedan na drugog smanjuje s udaljenosti. Ovu imovinu posjeduje gausovskim filtar s kernelom:


Gaussov filtar ima nenultu jezgru beskonačne veličine. Međutim, jezgra filtra se vrlo brzo smanjuje na nulu s udaljenosti od točke (0, 0), pa se stoga, u praksi, možemo ograničiti na konvoluciju s malim prozorom oko (0, 0) (na primjer, uzimajući prozor polumjer jednak 3 σ ).

Gaussovo filtriranje je također anti-aliasing. Međutim, za razliku od pravokutnog filtra, slika točke s Gaussovim filtriranjem bit će simetrična zamućena točka, sa smanjenjem svjetline od sredine prema rubovima, što je puno bliže stvarnom zamućenju od defokusiranih leća.

Kao što znate, postoji mnogo načina za modificiranje i uređivanje slika pomoću digitalnih tehnika. Rezultat obrade slike u ovom slučaju ovisi o tome koje operacije možete izvesti sa slikom nakon što je stigla na vaše računalo: možete uređivati RGB- komponente boje kako bi se postigla najbolja ravnoteža boja. Pomoću raznih grafičkih filtara možete povećati ili smanjiti svjetlinu slike, urediti njezinu oštrinu ili zamutiti pojedine elemente. Pogledat ćemo iznimno popularne efekte koji se obično koriste u računalnoj grafici:

  • Inverzija boja.
  • Zamućenje.
  • Oštrenje.
  • Utiskivanje.
  • Efekt akvarela.

Matrica - jezgra konvolucije

Ako razmotrimo ove efekte s algoritamske točke gledišta, nećemo vidjeti ništa komplicirano: ti se učinci stvaraju pomoću matrice brojeva. Ova matrica se naziva jezgrom konvolucije.

Ova matrica ( 3x3) sadrži tri retka od tri broja. Za transformaciju slikovnog piksela, on se množi s vrijednošću u središtu jezgre, a vrijednosti piksela oko zadanog se množe s odgovarajućim koeficijentima kernela, nakon čega se sve vrijednosti zbrajaju gore i dobivamo novu vrijednost za varijabilni piksel. Ovaj se postupak mora izvesti uzastopno sa svakim pikselom uređene slike.

Kako će se uređena slika promijeniti ovisi o koeficijentima kernela. 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 komponente boja u njihove suprotne (za više detalja, prilikom implementacije filtera u sljedećem dijelu poglavlja).

Algoritam zamućenja

Da bismo zamaglili sliku, moramo pročitati vrijednosti u memoriju RGB-komponente boje svakog piksela. Nakon toga će se jezgra zamućenja 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 središta kernela, potrebno je pomnožiti težinske koeficijente kernela s odgovarajućim vrijednostima boje uređene slike. Nakon toga, rezultati se sumiraju.

Rezultirajuća slika je "mutna" u usporedbi s izvornom, jer se boja svakog obrađenog piksela "širi" među susjednim pikselima.

Da biste povećali jezgru zamućenja, možete:

  • koristiti veću jezgru (na taj način će boja biti raspoređena na veći broj susjednih piksela);
  • mijenjati koeficijente na način da se smanji utjecaj središnjeg koeficijenta;
  • filtrirajte sliku više puta;

Algoritam izoštravanja

Da bismo stvorili efekt izoštravanja, slijedimo isti algoritam, ali koristimo drugačiji kernel, budući da nam je sada cilj izoštriti sliku. Jezgra G izoštriti:
Slika 2. Matrica za filter "Sharpening".
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 središnjeg piksela i njegovih susjeda.

Dakle, rezultirajuća slika je oštrija od originala. U suštini, dodatni detalji dolaze iz ničega – to je samo povećan kontrast između boja piksela.

Algoritam za utiskivanje

Utiskivanje se izvodi na sličan način, ali u ovom slučaju ne koristimo jednu matricu, već nekoliko.
Slika 3.1 Matrica za filter "Emboss": prvi korak.
Dok su jezgre zamućenja i izoštravanja imale zbroj koeficijenata jednak jedan, u ovom slučaju zbroj težina u jezgri za utiskivanje jednak je 0 ... Ako zbroj koeficijenata nije jednak 0 , dobit ćemo odstupanje za određenu boju.

Rezultirajuća vrijednost boje bit će dodatno obrađena (u prosjeku) i svedena na raspon 0-255 (više pojedinosti možete vidjeti prilikom implementacije ovog filtra). Promjena vrijednosti pozicija 1 i -1 , možemo dobiti obrnuti smjer isticanja.
Slika 3.2. Matrica za filter "Emboss": drugi korak.

Akvarel algoritam

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

Vrhunski povezani članci