Teknologian jakaminen

C: Lyhyt katsaus filter2D-toimintoon

2024-07-08

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

OpenCV:ssäfilter2D Toiminto on erittäin tehokas työkalu kuvien taivuttamiseen erilaisten lineaaristen suodattimien käyttämiseksi. Tämä toiminto käsittelee kuvan jokaisen pikselin ja muokkaa kuvan ominaisuuksia konvoloimalla sen tietyllä konvoluutioytimellä (tai suodattimella).Seuraavassa on kysefilter2DToiminnon yksityiskohtainen esittely:

toiminnon prototyyppi

OpenCV:ssäfilter2DToiminnon prototyyppi on seuraava:

void cv::filter2D(InputArray src, OutputArray dst, int ddepth, InputArray kernel,  
                  Point anchor = Point(-1,-1), double delta = 0,  
                  int borderType = BORDER_DEFAULT);

Parametrin kuvaus

  • src: Syötä kuva.
  • dst: Tulostuskuva ja syöttökuvasrcNiissä on sama koko ja sama määrä kanavia.
  • dsyvyys : Tulostetun kuvan haluttu syvyys (tietotyyppi). Kun se on -1, se tarkoittaa, että lähtökuvalla on sama syvyys kuin tulokuvalla.
  • ydin : Konvoluutioydin (tai suodatin), joka on yksikanavainen liukulukumatriisi. Tämä matriisi määrittelee kuinka konvoluutiooperaatiot suoritetaan tulokuvalle.
  • ankkuri : Ytimen ankkuripiste, joka osoittaa suodatinpisteen suhteellisen sijainnin ytimessä. Kiinnityspisteen tulee sijaita ytimen sisällä. Oletusarvo (-1,-1) tarkoittaa, että ankkuripiste sijaitsee ytimen keskellä.
  • delta: valinnainen arvo, jota käytetään tallennettaessa suodatettuja pikseleitädstaiemmin lisätty suodatettuihin pikseleihin.
  • borderType : Pikselien ekstrapolointimenetelmä, jota käytetään kuvan rajojen ulkopuolella olevien pikselien käsittelemiseen. Se määrittää, kuinka rajapikseleitä käsitellään, kun konvoluutioydin ylittää kuvan rajan.Yleisiä vaihtoehtoja ovat mmBORDER_CONSTANTBORDER_REPLICATEBORDER_REFLECTodota.

toimintaperiaate

filter2D Funktio itse asiassa suorittaa konvoluutiooperaation (vaikka teknisesti se laskee korrelaation tiukan konvoluution sijaan, koska kyseessä ei ole ytimen kääntäminen). Konvoluutiooperaatio sisältää konvoluutioytimen "liukumisen" syötekuvan yli, kunkin konvoluutioytimen kanssa samankokoisen alimatriisin vastaavien elementtien kertomisen ja tulosten lisäämisen. Tämä prosessi luo uuden pikseliarvon, joka sijoitetaan vastaavaan kohtaan tulostekuvassa. Kun konvoluutioydin liukuu koko syöttökuvan yli, tätä prosessia toistetaan, kunnes täydellinen tulostekuva on luotu.

Sovellusskenaariot

Muuttamalla konvoluutioytimen,filter2DToiminnot voivat saada aikaan erilaisia ​​kuvankäsittelytehosteita, mukaan lukien, mutta ei rajoittuen:

  • Kuvan teroitus: Tietyn terävöityskonvoluutioytimen käyttäminen voi tehdä kuvan reunoista selkeämpiä.
  • tarkoittaa suodatinta: Keskimääräisen konvoluutioytimen käyttäminen voi vähentää kuvan kohinaa, mutta saattaa tehdä kuvasta epäselvän.
  • Gaussin suodatin : Gaussin suodatus on yleisesti käytetty kuvan tasoitustekniikka, joka voi vähentää kuvan kohinaa säilyttäen samalla reunatiedot.Siitä huolimattafilter2DItse funktio ei suoraan luo Gaussin ytimiä, mutta se voidaan välittäägetGaussianKernelfunktio luo Gaussin ytimen ja käyttääfilter2DSuorita Gaussin suodatus.
  • reunan tunnistus: Suunnittelemalla erityisiä konvoluutioytimiä (kuten Sobel-operaattori, Laplacian-operaattori jne.), kuvan reunat voidaan havaita.

Esimerkkikoodi

Seuraava on käyttöäfilter2DEsimerkkikoodi funktion keskiarvosuodatuksesta (Python-versio):

#include