我使用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
复制相似问题