用于图像的高斯滤波的最佳sigma?

时间:2010-06-30 12:36:46

标签: image-processing parameters filter gaussian

当将高斯模糊应用于图像时,通常sigma是参数(示例包括Matlab和ImageJ)。

如何知道sigma应该是什么?有没有数学方法来找出最佳sigma?就我而言,我在图像中有一些与背景相比明亮的对象,我需要在计算上找到它们。我将应用高斯滤波器使这些物体的中心更加明亮,这有助于找到它们。如何确定最佳西格玛?

3 个答案:

答案 0 :(得分:16)

没有公式可以为你确定;最佳西格玛将取决于图像因素 - 主要是图像的分辨率和对象的大小(以像素为单位)。

另外,请注意,高斯滤波器实际上并不意味着任何东西;您可能希望研究对比度最大化技术 - 听起来就像直方图拉伸这样简单的事情可以很好地适合您。

编辑:更多解释 - sigma基本上控制你的内核函数的“胖”程度;较高的西格玛值在较宽的半径范围内模糊。由于您正在处理图像,因此较大的sigma也会迫使您使用更大的内核矩阵来捕获足够的函数能量。对于您的特定情况,您希望您的内核足够大以覆盖大部分对象(以便它足够模糊),但不要太大以至于它一次开始重叠多个相邻对象 - 实际上,对象分离也是尺寸的一个因素。

由于您提到了MATLAB - 您可以使用fspecial('gaussian', hsize, sigma)函数查看具有不同参数的各种高斯内核,其中hsize是内核的大小,而sigma是,西格玛尝试更改参数以查看其更改方式。

答案 1 :(得分:3)

作为惯例,我使用此约定。如果k是内核的大小,则比sigma =(k-1)/ 6。这是因为99%的高斯pdf的长度为6sigma。

答案 2 :(得分:0)

你必须找到一个函数G的最小值/最大值,使得G(X,sigma)其中X是你的一组观察值(在你的情况下,你的图像灰度值),这个函数可以是维持例如,这可以通过图像的一阶导数(如G)完成,

fil = fspecial('sobel');
im = imfilter(I,fil);
imagesc(im);
colormap = gray;

这会给你一个图像的一阶导数的结果,现在你想要找到最大的sigma 最大化G(X,sigma),这意味着你要尝试几个sigma(比如说,按递增的顺序),直到你达到一个使G max最大的sigma。这也可以用二阶导数来完成。