Éldetektálás Matlabban
Matlabban a gradiens detektorok megvalósításáért az fspecial(), az éldetektorok megvalósításáért pedig az edge() függvény felelős. Ne feledjük, hogy az fspecial() függvény csak a konvolúciós maszkot állítja elő, magát a képműveletet az imfilter() függvénnyel végezhetjük el. Az függvényeket különböző paraméterekkel meghívva nyerhetünk ki gradiens magnitúdó vagy pedig élképet. Fontosnak tartjuk itt is megjegyezni, hogy a gradiens magnitúdó kép és az élkép nem ugyanaz. A gradiens magnitúdó képen valós intenzitások szerepelnek, míg az élkép egy bináris kép.
Az fspecial() gradienst számoló opciói:
- log: Laplacian of Gaussian (paraméterként megadható a szűrő mérete és a szigma érték)
- prewitt: Prewitt-féle gradiens detektor
- sobel: Sobel operátor (csak vízszintes irányút határoz meg)
A függőleges irányú gradiens operátort a vízszintes operátor transzponáltjaként kapjuk.
Az edge() függvénynek a következő paramétereket lehet megadni:
- sobel: Sobel gradiens detektor ( további paraméterként küszöb és irány is megadható)
- prewitt: Prewitt gradiens detektor (további paraméterként küszöb és irány is megadható)
- roberts: Roberts-féle gradiens detektor (további paraméterként küszöb és egyéb opciók adhatók meg)
- log: Laplacian-of-Gaussian (LoG) függvény (további paraméterként a küszübérték és a szigma érték adható meg)
- zerocross: a közös nulla-átmeneteket kezeli
- canny: Canny-féle éldetektor (további paraméterként megadható a küszöb érték és a szigma paraméter is)
Fontos megjegyezni, hogy az említett képműveletek szürkeárnyalatos képekre működnek.
Lássunk néhány példát!
>> img = imread('Columbo.JPG');
>> grad_sobel = fspecial('sobel');
>> img_grad_sobel = imfilter(img, grad_sobel);
>> img_edge_sobel = edge(img, 'sobel');
![]() |
![]() |
|
| eredeti kép | img_grad_sobel | img_edge_sobel |
Nézzünk egy példát a legelterjedtebb éldetektorra is! A példában több különböző küszöbérték mellett szemléltetjük az eredményt.
>> img = imread('haz_auto_gray.jpg');
>> img_canny_02 = edge(img, 'canny', 0.2);
>> img_canny_05 = edge(img, 'canny', 0.5);
>> img_canny_1 = edge(img, 'canny', 1.0);
![]() |
![]() |
|
eredeti |
haz_auto_canny_02 |
![]() |
![]() |
| haz_auto_canny_05 | haz_auto_canny_1 |
Próbáljátok ki a többi opciót is!





