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:
Í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).

Á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].