OpenCV: Szegmentálás küszöbértékkel

OpenCV: Szegmentálás küszöbértékkel
Ebben a cikkben az objektumok szegmentálásának alapvető technikája Küszöbérték - De mielőtt már az alábbiakban átmegyünk a részletekbe, az OpenCV rövid áttekintése. OpenCV (Nyílt forráskódú számítógépes látás) egy platformok közötti nyílt forráskódú könyvtár, amely a valós idejű számítógépes látási feladatok elvégzésére irányul sokféle területen, például:
  • Arcfelismerés
  • Írisz -felismerő rendszerek
  • Gesztusfelismerés
  • Emberi -számítógépes interakció (HCI)
  • Mobil robotika
  • Tárgyi azonosítás
  • Szegmentálás és felismerés
  • Sztereopsis sztereo látás: mélységérzékelés 2 kamerából
  • Kibővített valóság
Ez magában foglal egy robusztus statisztikai gépi tanulási könyvtárat is, amely számos különféle osztályozót tartalmaz, amelyeket a fenti területek támogatására használnak. Az OpenCV használatához egyszerűen importálja vagy beilleszti a szükséges könyvtárakat, és kezdje el használni a rendelkezésre álló funkciók számát. Küszöbérték egy nagyon népszerű szegmentációs technika, amelyet egy objektum hátterétől való elválasztására használnak. Az alábbi cikkben leírtam a küszöbértékhez használt különféle technikákat Szürkeárnyalatos képek (8-bites) - A küszöbérték magában foglalja a kép (pixel intenzitás) minden pixel értékének összehasonlítását egy meghatározott küszöböt. Ez a bemeneti kép összes pixelét 2 csoportra osztja:
  1. A küszöbértéknél alacsonyabb intenzitásértékű képpontok.
  2. A küszöbértéknél nagyobb intenzitásértékű képpontok.
Ez a 2 csoport most különféle értékeket kap, a különböző szegmentációs típusoktól függően. Az OpenCV 5 különböző küszöbértéket támogat a szürkeárnyalatos (8-bites) képen a függvény használatával: Double küszöb (InputArray SRC OutputArray DST dupla Thresh Double Maxval int típus) Paraméterek:
  • InputArray SRC: Bemeneti kép (8-bites vagy 32 bites)
  • OutputArray DST: Kimeneti kép (ugyanolyan méretű, mint a bemenet)
  • Double küszöb: Állítsa be a küszöbértéket
  • Double MaxVal: Az 1. és 2. típusban használt Maxval
  • int type*: Megadja a használni kívánt küszöb típusát. (0-4)
  • *A küszöbértékek listája alatt található. Bemeneti kép orig A bemeneti RGB -képet először szürkeárnyalatos képré alakítják, mielőtt a küszöbértéket megtennék. OpenCV: Szegmentálás küszöbértékkel Küszöbértékek
      Bináris küszöb (int type = 0) 0_130 A korábban kapott két csoport közül a pixel intenzitású tagoknál nagyobb csoportból áll, mint a beállított küszöbérték, a MAX_VALUE hozzárendelés, vagy egy szürkeárnyalat esetén 255 (fehér) érték. A fennmaradó csoport tagjai pixel intenzitása 0 (fekete). EQ1 Ha a pixel -intenzitás értéke (x y) értékben a forrásképnél nagyobb, mint a küszöbérték, akkor a végső képen szereplő értéket a Maxval értékre állítják. Fordított bináris küszöb (int type = 1) 1_130 Inv. A bináris küszöb megegyezik a bináris küszöbértékkel. Az egyetlen alapvető különbség az inv.bináris küszöbértékben, amelyben a pixel intenzitása nagyobb, mint a beállított küszöbérték, a „0” -t hozzárendeljük, míg a fennmaradó pixeleket a küszöbértéknél kevesebb intenzitással kell beállítani. EQ2 Ha a pixel -intenzitás értéke (x y) értékben a forrásképnél nagyobb, mint a küszöbérték, akkor a végső képen szereplő érték 0 -ra van állítva, akkor a Maxval értékre van állítva. Csonka küszöbérték (int type = 2) 2_150 Az a csoport, amelynek pixel intenzitása nagyobb, mint a beállított küszöbérték, a beállított küszöbre csonka, vagyis a pixelértékek megegyeznek a beállított küszöbértékkel. Az összes többi érték változatlan marad. EQ3 Ha a pixel intenzitási értéke (x y) értékben a forrásképnél nagyobb, mint a küszöbérték, akkor a végső képen szereplő érték küszöbértékre van beállítva, akkor változatlan. Küszöb nullára (int type = 3) OpenCV: Szegmentálás küszöbértékkel Egy nagyon egyszerű küszöbértékelési technika, amelyben a pixel intenzitást „0” -ra állítjuk a csoport minden pixeljére, amelynek pixel intenzitási értéke kevesebb, mint a küszöb. EQ4 Ha a pixel -intenzitás értéke (x y) a forrásképnél nagyobb, mint a küszöbérték, akkor a végső kép (x y) értékének értéke nem változik. Az összes fennmaradó pixel „0” -ra van állítva. Küszöbérték nulla fordított (int type = 4) OpenCV: Szegmentálás küszöbértékkel Az előző technikához hasonlóan a pixelintenzitást „0” -ra állítjuk a pixel intenzitás értékével rendelkező csoport összes pixeljére, mint a küszöbértéknél. EQ5 Ha a pixel -intenzitás értéke (x y) értékben a forrásképnél nagyobb, mint a küszöbérték, akkor a végső kép (x y) értékének értéke „0” -ra van állítva. Az összes fennmaradó pixel érték változatlan.
    Az OpenCV programok összeállításához az OpenCV könyvtár telepítéséhez van szükség a rendszerre. Az elkövetkező napokban egy egyszerű oktatóanyagot fogok küldeni. Ha már telepítette az OpenCV -t, futtassa az alábbi kódot az Ön által választott bemeneti képpel. 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  );      }   }   

    Top Cikkek

    Kategória

    Érdekes Cikkek