Matlab中是否有高斯差分函数?

8
我是一名新手图像处理,我的实验中遇到了差分高斯的困难。虽然给了我各种实现方法,但我不理解它们和它们的参数。
这里是我的公式:Here are my formulas

enter image description here

我应该自己实现这个过滤器,还是已经有一个定义好的函数可以使用?当然需要所有与链接中相同的参数。我需要调整参数并生成不同的图像。
1个回答

16

您可以使用两个不同的标准差对图像进行高斯滤波,然后将它们相减,这将与使用组合滤波器相同。

k = 10;
sigma1 =  0.5;
sigma2 = sigma1*k;

hsize = [3,3];

h1 = fspecial('gaussian', hsize, sigma1);
h2 = fspecial('gaussian', hsize, sigma2);

gauss1 = imfilter(img,h1,'replicate');
gauss2 = imfilter(img,h2,'replicate');

dogImg = gauss2 - gauss1;

你的代码中有一个打字错误。你定义了两个不同的h1,但第二个应该是h2。 - thejinx0r
4
为了与 D.G. Lowe(尺度不变特征变换或 SIFT 的创始人)的高斯差分方法保持一致,最后一行应为 dogImg = gauss2 - gauss1; - Jim Peters
选择足够大的 hsize 来容纳高斯函数非常重要。一个 3x3 的滤波器永远不足以容纳高斯函数,特别是像 h2 这样具有 5 标准差的高斯函数。请参阅我过去的这篇博客文章获取更多信息。 - Cris Luengo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接