【问题标题】:MATLAB fspecial and edge functionMATLAB fspecial 和边缘函数
【发布时间】:2016-05-09 17:57:21
【问题描述】:

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

下面是代码的结果: 我怎样才能得到相同的结果?

【问题讨论】:

  • 首先,你为什么将你的过滤器除以它的条目的绝对总和?那么:Ed.ge 是一个 binary 图像,而 filter2 返回一个灰度图像,因此您可能需要对其进行阈值处理。

标签: matlab image-processing


【解决方案1】:

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

2 edge 使用其默认参数找出图像中的边缘,而在 fspecial 中您正在分配 sigma 值,可能这些值不同,再次您必须在帮助中查看 edge 的描述.

【讨论】:

    猜你喜欢
    • 2014-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-20
    • 2016-08-11
    • 2021-12-19
    • 2012-07-09
    相关资源
    最近更新 更多