MATLAB fspecial和edge函数

时间:2016-05-08 07:17:47

标签: matlab image-processing

我使用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');

以下是代码的结果: 我怎样才能得到相同的结果? Difference in output

1 个答案:

答案 0 :(得分:0)

1)edge函数总是返回阈值(二进制)边缘,您必须查看edge函数的描述才能知道阈值。

2 edge使用其默认参数来查找图像中的边缘,而在fspecial中您指定sigma值时,可能这些值不同,您还必须查看{的描述{1}}在帮助中。