Marr-Hildreth éldetekor Matlabban

A Marr-Hildreth éldetektor nincs implementálva Matlabban, de sok függvényt fel tudunk hozzá használni.

A Marr-Hildreth éldetektor két különböző szigma paraméterű Laplacian of Gaussian (LoG) függvénnyel konvolválja a képet, majd megkeresi a közös nulla átmeneteket. A Marr-Hildreth éldetektor megvalósítása a következőképpen néz ki (a példában 7×7-es méretű szűrőt használtunk). Fontos megjegyeznünk, hogy ugyan az edge függvény is rendelkezik egy 'log' paraméterrel, az egy bináris képet ad vissza, nekünk pedig egy valós értékek kellenek a közös nulla-átmenetek meghatározásához.

function result = my_marr_hildreth(img, sigma1, sigma2)
     
    LoG1 = fspecial('log',[7 7], sigma1);
    LoG2 = fspecial('log',[7 7], sigma2);
    img_LoG1 = imfilter(img, LoG1);
    img_LoG2 = imfilter(img, LoG2);
    img_zerocross1 = edge(img_LoG1,'zerocross');
    img_zerocross2 = edge(img_LoG2,'zerocross');
    result = img_zerocross1 & img_zerocross2;
     
end

 

Lássunk két eredményt:

Eredeti kép Marr-Hildreth (szigmák: 0.4, 0.8) Marr-Hildreth (szigmák: 0.2, 1.5)