logo

OpenCV: Segmentacija pomoću praga

U ovom članku se zove osnovna tehnika segmentacije objekta Prag . Ali prije nego što se više pređe u detalj u nastavku, kratak je pregled OpenCV -a. Opencv (Open Source Computer Vision) je knjižnica programiranja otvorenog koda Cross platforme usmjerene na obavljanje zadataka računalnog vida u stvarnom vremenu u širokom rasponu polja kao što je:
  • Prepoznavanje lica
  • Sustavi prepoznavanja irisa
  • Prepoznavanje geste
  • Interakcija čovjeka i računala (HCI)
  • Mobilna robotika
  • Identifikacija objekta
  • Segmentacija i prepoznavanje
  • Stereopsis stereo vid: dubinska percepcija iz 2 kamere
  • Povećana stvarnost
Također uključuje robusnu biblioteku statističkog strojnog učenja koja sadrži niz različitih klasifikatora koji se koriste za podržavanje gore navedenih područja. Za upotrebu OpenCV -a jednostavno uvozite ili uključite potrebne biblioteke i počnite koristiti bezbroj dostupnih funkcija. Prag vrlo je popularna tehnika segmentacije koja se koristi za odvajanje objekta od svoje pozadine. U donjem članku opisao sam razne tehnike koje se koriste za prag Slike sive boje (8-bitni) . Postupak prag uključuje usporedbu svake vrijednosti piksela slike (intenzitet piksela) s navedenim pragom. Ovo dijeli sve piksele ulazne slike u 2 grupe:
  1. Pikseli koji imaju vrijednost intenziteta niži od praga.
  2. Pikseli koji imaju vrijednost intenziteta veći od praga.
Ove dvije skupine sada imaju različite vrijednosti ovisno o različitim vrstama segmentacije. OpenCV podržava 5 različitih shema praga na sivim (8-bitnim) slikama pomoću funkcije: Dvostruki prag (InputArray SRC OutputArray dst Double Thresh Double Maxval Int Type) Parametri:
  • InputArray SRC: ulazna slika (MAT 8-bitni ili 32-bitni)
  • OutputArray DST: Izlazna slika (iste veličine kao ulaz)
  • Dvostruki trans: Postavite vrijednost praga
  • dvostruki maxval: maxval koji se koristi u tipu 1 i 2
  • int tip*: Određuje vrstu praga koji će se koristiti. (0-4)
  • *Ispod je dat popis vrsta praga. Ulazna slika podrijetlo' title= Ulazna RGB slika prvo se pretvara u sivu sliku prije nego što se napravi prag. OpenCV: Segmentacija pomoću praga' title= Vrste praga
      Binarni prag (int tip = 0) 0_130' title= Od dvije skupine dobivene ranije, grupa koja ima članove s intenzitetom piksela većim od postavljenog praga su dodjeljivanje max_value ili u slučaju sive vrijednosti vrijednosti 255 (bijelo). Članovi preostale grupe imaju svoj intenziteti piksela postavljeni na 0 (crno). EQ1' title= Ako je vrijednost intenziteta piksela na (x y) na slici izvora veća od praga, vrijednost u konačnoj slici postavljena je na maxval. Obrnuti binarni prag (int tip = 1) 1_130' title= Inv. Binarni prag je isti kao binarni prag. Jedina bitna razlika je u inv.Binarnom pragu grupe koja ima intenzitete piksela većim od postavljenog praga dodjeljuje se '0', dok su preostali pikseli koji imaju intenzitete manje od praga postavljeni na maxval. eq2' title= Ako je vrijednost intenziteta piksela na (x y) u izvornoj slici veća od praga, vrijednost u konačnoj slici postavljena je na 0 ostalo, postavljena je na maxval. Prag skraćenja (int tip = 2) 2_150' title= Grupa koja ima intenzitet piksela veća od postavljenog praga skraćena je na postavljeni prag ili drugim riječima vrijednosti piksela postavljene su na iste kao i postavljeni prag. Sve ostale vrijednosti ostaju iste. eq3' title= Ako je vrijednost intenziteta piksela na (x y) na slici izvora veća od praga, vrijednost u konačnoj slici postavljena je na prag, a to je nepromijenjena. Prag do nule (int tip = 3) OpenCV: Segmentacija pomoću praga' title= Vrlo jednostavna tehnika praga u kojoj postavljamo intenzitet piksela na '0' za sve piksele grupe koja ima vrijednost intenziteta piksela manje od praga. Eq4' title= Ako je vrijednost intenziteta piksela na (x y) na slici izvora veća od praga, vrijednost na (x y) na konačnoj slici ne mijenja se. Svi preostali pikseli postavljeni su na '0'. Prag do nule obrnuti (int tip = 4) OpenCV: Segmentacija pomoću praga' title= Slično prethodnoj tehnici ovdje, postavili smo intenzitet piksela na '0' za sve piksele grupe koji imaju vrijednost intenziteta piksela veću od praga. EQ5' title= Ako je vrijednost intenziteta piksela na (x y) na slici izvora veća od praga, vrijednost na (x y) na konačnoj slici postavljena je na '0'. Sva preostala vrijednost piksela je nepromijenjena.
    Da biste sastavljali OpenCV programe, morate imati instaliranu OpenCV biblioteku na vašem sustavu. U narednim danima objavit ću jednostavan vodič za isti. Ako ste već instalirali OpenCV, pokrenite donji kôd s ulaznom slikom po vašem izboru. 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);  } }