OpenCV: segmentacija z uporabo praga

OpenCV: segmentacija z uporabo praga
V tem članku se imenuje osnovna tehnika za segmentacijo predmetov Prag . Toda preden se premaknete v več podrobnosti spodaj, je kratek pregled OpenCV. OpenCV (Open Source Computer Vision) je navzkrižna platforma Open-Source knjižnice programskih funkcij, katerih namen je opravljati naloge računalniškega vida v realnem času na najrazličnejših poljih, kot so:
  • Prepoznavanje obraza
  • Sistemi za prepoznavanje šarenic
  • Prepoznavanje gest
  • Interakcija med človekom in računalnikom (HCI)
  • Mobilna robotika
  • Identifikacija predmeta
  • Segmentacija in prepoznavanje
  • Stereopsis stereo vizija: globinska percepcija iz dveh kamer
  • Razširjena resničnost
Vključuje tudi trdno statistično knjižnico strojnega učenja, ki vsebuje več različnih klasifikatorjev, ki se uporabljajo za podporo zgornjih področij. Če želite uporabiti OpenCV, preprosto uvozite ali vključite zahtevane knjižnice in začnete uporabljati nešteto razpoložljivih funkcij. Prag je zelo priljubljena tehnika segmentacije, ki se uporablja za ločevanje predmeta od njegovega ozadja. V spodnjem članku sem opisal različne tehnike, ki se uporabljajo za prago Slike v sivi barvi (8-bit) . Postopek prag Vključuje primerjavo vsake vrednosti slikovne slike slike (intenzivnost slikovnih pik) z določenim pragom. To deli vse pike vhodne slike v dve skupini:
  1. Piksli z vrednostjo intenzivnosti nižja od praga.
  2. Piksli z vrednostjo intenzivnosti, ki je večja od praga.
Ti dve skupini imata zdaj različne vrednosti, odvisno od različnih vrst segmentacije. OpenCV podpira 5 različnih shem praga na sivih (8-bitnih) slikah s funkcijo: Dvojni prag (vhodArray src outputArray dst dvojni prag dvojni maxval int tip) Parametri:
  • InputArray src: vhodna slika (mat 8-bitna ali 32-bitna)
  • OutputArray dst: izhodna slika (enaka velikost kot vhod)
  • Dvojni prag: nastavite vrednost praga
  • dvojni maxval: maxval, ki se uporablja v tipu 1 in 2
  • Vrsta int*: Določi vrsto praga, ki ga je treba uporabiti. (0-4)
  • *Spodaj je naveden seznam vrst mejnih vrednosti. Vhodna slika poreklo Slika vhodne RGB se najprej pretvori v sliko sive lestvice, preden se izvaja prag. OpenCV: segmentacija z uporabo praga Vrste praga
      Binarni prag (int tip = 0) 0_130 Od obeh skupin, ki sta bili prej pridobljeni, je skupina, ki ima člane z intenzivnostjo pik, večjo od nastavljenega praga, dodelitev max_value ali v primeru sive lestvice vrednosti 255 (bela). Člani preostale skupine imajo intenzivnost slikovnih pik na 0 (črno). EQ1 Če je vrednost intenzivnosti pik na (x y) v izvorni sliki večja od praga, je vrednost na končni sliki nastavljena na Maxval. Obrnjen binarni prag (int tip = 1) 1_130 Inv. Binarni prag je enak binarnemu pragu. Edina bistvena razlika je v inv.binarnem pragu, ki ima skupino, ki ima intenzivnost slikovnih pik, večja od nastavljenega praga, dodeljena „0“, medtem ko so preostali piksli, ki imajo intenzivnost manjša od praga, nastavljeni na Maxval. EQ2 Če je vrednost intenzivnosti pik na (x y) v izvorni sliki večja od praga, je vrednost na končni sliki nastavljena na 0, ki je nastavljena na Maxval. Trgovanje iztrganja (int tip = 2) 2_150 Skupina, ki ima intenzivnosti pik večja od nastavljenega praga, je okrnjena na nastavljeni prag ali z drugimi besedami, vrednosti slikovnih pik so nastavljene na enake kot nastavljeni prag. Vse druge vrednosti ostajajo enake. EQ3 Če je vrednost intenzivnosti pik na (x y) v izvorni sliki večja od praga, je vrednost na končni sliki nastavljena na prag, drugače pa je nespremenjena. Prag do nič (int tip = 3) OpenCV: segmentacija z uporabo praga Zelo preprosta tehnika praga, v kateri smo intenzivnost slikovnih pik nastavili na '0' za vse slikovne pike skupine, ki imajo vrednost intenzivnosti pikslov manjšo od praga. EQ4 Če je vrednost intenzivnosti pik na (x y) v izvorni sliki večja od praga, se vrednost pri (x y) na končni sliki ne spremeni. Vsi preostali slikovni piki so nastavljeni na '0'. Prag do nič obrnjenega (int tip = 4) OpenCV: segmentacija z uporabo praga Podobno kot prejšnja tehnika smo nastavili intenzivnost slikovnih pik na '0' za vse slikovne pike skupine, ki imajo vrednost intenzivnosti pik, večjo od praga. EQ5 Če je vrednost intenzivnosti pik na (x y) v izvorni sliki večja od praga, je vrednost pri (x y) v končni sliki nastavljena na '0'. Vsa preostala vrednost slikovnih pik so nespremenjena.
    Če želite sestaviti programe OpenCV, morate v sistemu namestiti knjižnico OpenCV. V prihodnjih dneh bom objavil preprosto vadnico za isto. Če ste že namestili OpenCV, zaženite spodnjo kodo z vhodno sliko po vaši izbiri. CPP
       // CPP program to demonstrate segmentation   // thresholding.   #include         #include         #include         #include         using     namespace     cv  ;   int     main  (  int     argc       char  **     argv  )   {      if     (  argc     !=     2  )         {      cout      < <     ' Usage:  '      '   '      < <     endl  ;      return     -1  ;      }      int     threshold_value     =     0  ;      // Valid Values: 0 1 2 3 4      int     threshold_type     =     2  ;         // maxVal useful for threshold_type 1 and 2      int     maxVal     =     255  ;         // Source image      Mat     src     =     imread  (  argv  [  1  ]     1  );      cvNamedWindow  (  'Original'       CV_WINDOW_NORMAL  );      imshow  (  'Original'       src  );      Mat     src_gray       dst  ;      // Convert the image to GrayScale      cvtColor  (  src       src_gray       CV_BGR2GRAY  );      // Create a window to display results      cvNamedWindow  (  'Result'       CV_WINDOW_NORMAL  );      createTrackbar  (  'Threshold'       'Result'           &  threshold_value       255  );      while     (  1  )         {      threshold  (  src_gray       dst       threshold_value           maxVal       threshold_type  );      imshow  (  'Result'       dst  );      waitKey  (  1  );      }   }