Know-how, előadás, képfeldolgozás alapműveletei

2.4. Szolgáltató Sobelja

A Sobel operátor egy diszkrét különbségtételes operátor, amely kiszámítja a különböző megbízások származékainak hozzávetőleges értékeit a képpont-fényerő funkcióhoz [1]. A gyakorlati használat leggyakoribb példája az objektumok éleinek (éleinek) meghatározása a képen, azaz az éles változások a fényerőben.

Ez az operátor egy egész számú szűrővel rendelkező kép konvolúcióján alapul. A legegyszerűbb esetben az operátort úgy állítják elő, hogy az eredeti képet az u. az első származékok kiszámítását az irányokban:

Ez az operátor használható a pixelintenzitás függvényének gradiensének közelítésére. A kezelő használata lehetővé teszi az intenzitás változásának első részleges származékának hozzávetőleges értékét vízszintes irányban, függőleges irányban. Ezen információk alapján kiszámíthatod a gradiens nagyságát a képletnek megfelelő koordinátákkal rendelkező képpontnál. A kapott adatok felhasználásával meghatározhatja a gradiens irányát is.

Az OpenCV könyvtár a kiterjesztett Sobel operátor [7] segítségével támogatja a pixelintenzitás függvény első, második, harmadik és vegyes származékainak kiszámítását. Az alábbiakban a megfelelő szoftver funkció prototípusa látható.

Jelöljük ki a Sobel funkció bemeneti paramétereit.

  • az eredeti kép az src.
  • A dst a kapott kép.
  • ddepth - a kapott kép mélysége.
  • Az xorder a származék sorrendje az Ox tengely mentén.
  • yorder a származék sorrendje az Oy tengely mentén.
  • A ksize a kiterjesztett Sobel operációs rendszermag mérete. Az 1-es, 3-as, 5-ös vagy 7-es értékek valamelyikét veszi igénybe. A kernel minden esetben kSize x kSize méretű. kivéve azt a helyzetet, amikor a kSize = 1. A kSize = 1 értékkel a kerneleknek 3x1 vagy 1x3 méretűek, lényegében egy Gaussian szűrőt használnak. Ezt az értéket csak az első és a második részleges származék kiszámításakor lehet használni az Ox és Oy tengely mentén. Alapértelmezés szerint a rendszermag mérete 3x3. Megjegyezzük, hogy a kSize = CV_SCHARR = -1 paraméter speciális értéke is biztosított. amely megfelel a Scharr-szűrő 3x3-as magjának, és pontosabban becsülheti a származékokat a Sobel-operátorral összehasonlítva:
  • A skála opcionális paraméter, amely meghatározza a származtatott számított értékek skálázási tényezőjét. Alapértelmezés szerint a méretezés nem érvényes.
  • A delta - az intenzitás-eltolódás opcionális paramétere hozzáadásra kerül, mielőtt az eredményt a dst mátrixba tárolná.
  • borderType - paraméter, amely meghatározza a határátlépés módját.
  • Íme egy példa a szélek kiválasztására a képen a Sobel vízszintes és függőleges operátorainak alkalmazásával és a kapott gradiensek átlagolásával az útvonal mentén. Megjegyezzük, hogy a Gaussian szűrő (GaussianBlur) először az eredeti képen lévő zaj eltávolítására alkalmazható, és az így kapott kép szürkeárnyalatosvá (cvtColor) alakul át. Ennek eredményeként a Sobel üzemeltető kapunk képeket, amelynek mélysége különbözik a mélysége az eredeti kép, így átalakítja ezeket a mátrixokat a 8-bites egész számra, mielőtt további műveleteket (convertScaleAbs).

    Az alábbi ábrán (7.7. Ábra) bemutatjuk az adott program végrehajtásának eredményét a tesztképen (a 7.2. Ábra a bal oldalon).

    Know-how, előadás, képfeldolgozás alapműveletei


    Ábra. 7.7. A Sobel operátor vízszintes és függőleges irányú alkalmazásával, az előrejelzések átlagértékével

    Nyilvánvaló, hogy a vízszintes Sobel kezelő használata lehetővé teszi a függőleges bordák és a függőlegesek közötti különbséget a vízszintes bordák számára. Ezeknek a gradienseknek a keveréke, amelyeknek a tömege együttható, 0,5, a gradiensérték közelítését biztosítják. Ehhez használja az addWeighted funkcióhívást.

    Vegye figyelembe, hogy az OpenCV könyvtár tartalmazza a getDerivKernels függvényt. amely lehetővé teszi, hogy a rendszermag egy bizonyos részleges származékot kiszámoljon egy adott nyílással. A funkció paramétereinek részletes leírása megtalálható a dokumentációban [7].