我使用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');
下面是代码的结果:如何才能获得相同的结果?
发布于 2016-05-09 17:57:22
1) edge
函数总是返回阈值(二进制)边,您必须查看edge
函数的描述才能知道阈值。
2 edge
使用它的默认参数来找出图像中的边缘,而在fspecial
中你正在分配sigma值,可能是这些值是不同的,同样你必须在帮助中查看edge
的描述。
https://stackoverflow.com/questions/37097270
复制相似问题