logo

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' title= Slika vhodne RGB se najprej pretvori v sliko sive lestvice, preden se izvaja prag. OpenCV: segmentacija z uporabo praga' title= Vrste praga
      Binarni prag (int tip = 0) 0_130' title= 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' title= Č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' title= 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' title= Č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' title= 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' title= Č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' title= 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' title= Č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' title= 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' title= Č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);  } }