我使用MATLAB的内置函数fspecial
应用了拉普拉斯高斯函数,然后使用edge
函数应用了高斯拉普拉斯算子。两者都没有给出完全相同的结果。这是我的代码:
clc
close all
clear all
%% LOG using fspecial
image = rgb2gray(imread('peppers.png'));
sigma=0.5;
window2 = fspecial('log', 2*ceil(3*sigma)+1, sigma);
window2 = window2/sum(abs(window2(:)));
log_im = abs(filter2(window2, image, 'same'));
%% LOG using edge
log_im_1 = edge(image,'log');
subplot(121);
imshow(log_im,[]);
title('Using Fspecial');
subplot(122);
imshow(log_im_1,[]);
title('Using Edge');
答案 0 :(得分:0)
1)edge
函数总是返回阈值(二进制)边缘,您必须查看edge
函数的描述才能知道阈值。
2 edge
使用其默认参数来查找图像中的边缘,而在fspecial
中您指定sigma值时,可能这些值不同,您还必须查看{的描述{1}}在帮助中。