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


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

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


1597
2018-06-30 12:36


起源



答案:


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

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

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

既然你提到了MATLAB - 你可以看一下使用不同参数的各种高斯内核 fspecial('gaussian', hsize, sigma) 功能,在哪里 hsize 是内核的大小 sigma 好吧,西格玛。尝试更改参数以查看其更改方式。


15
2018-06-30 13:09



@tzaman:你能否扩展一下最佳sigma如何取决于图像的分辨率和像素的大小?或者如果可以,请指出我的阅读方向。这正是我正在寻找的。另外,我猜错了;我的意思是说我希望我的物体的中心对其他一切都相对明亮。 - Tony Stark
@hatorade:我扩大了答案;希望它澄清事情。 - tzaman
@tzaman:在一个网站上(imaging.mrc-cbu.cam.ac.uk/imaging/PrinciplesSmoothing我读到半高全宽(FWHM)测量有一个等式。这个概念是否适用于内核?在ImageJ或Matlab中,内核的“FWHM”是否以相同的方式与sigma相关?我问的原因是因为通常参数是内核维度和sigma,但我继续读取sigma影响内核大小... - Tony Stark
@hatorade:是的 - 从本质上讲,FWHM是衡量函数本身“传播”的一种方法;所以对于更高的西格玛来说它会更大。例如,您可以使用它来帮助确定给定内核的矩阵大小 应该 是。虽然在某种意义上你可以分别选择尺寸和sigma,但实际上尺寸必须与sigma联系才能使其有意义 - 它需要足够大以保持曲线的形状;如果你截断它太多,它就会停止为高斯模糊,或多或少变成一个简单的平均过滤器。 - tzaman
@tzaman:对。你知道正常曲线的底边宽度是否等式,而不是最大值的一半?本质上,我知道我想要内核有多大,但我不知道如何从中计算sigma(所以从内核大小 - > sigma而不是sigma - >内核大小) - Tony Stark


答案:


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

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

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

既然你提到了MATLAB - 你可以看一下使用不同参数的各种高斯内核 fspecial('gaussian', hsize, sigma) 功能,在哪里 hsize 是内核的大小 sigma 好吧,西格玛。尝试更改参数以查看其更改方式。


15
2018-06-30 13:09



@tzaman:你能否扩展一下最佳sigma如何取决于图像的分辨率和像素的大小?或者如果可以,请指出我的阅读方向。这正是我正在寻找的。另外,我猜错了;我的意思是说我希望我的物体的中心对其他一切都相对明亮。 - Tony Stark
@hatorade:我扩大了答案;希望它澄清事情。 - tzaman
@tzaman:在一个网站上(imaging.mrc-cbu.cam.ac.uk/imaging/PrinciplesSmoothing我读到半高全宽(FWHM)测量有一个等式。这个概念是否适用于内核?在ImageJ或Matlab中,内核的“FWHM”是否以相同的方式与sigma相关?我问的原因是因为通常参数是内核维度和sigma,但我继续读取sigma影响内核大小... - Tony Stark
@hatorade:是的 - 从本质上讲,FWHM是衡量函数本身“传播”的一种方法;所以对于更高的西格玛来说它会更大。例如,您可以使用它来帮助确定给定内核的矩阵大小 应该 是。虽然在某种意义上你可以分别选择尺寸和sigma,但实际上尺寸必须与sigma联系才能使其有意义 - 它需要足够大以保持曲线的形状;如果你截断它太多,它就会停止为高斯模糊,或多或少变成一个简单的平均过滤器。 - tzaman
@tzaman:对。你知道正常曲线的底边宽度是否等式,而不是最大值的一半?本质上,我知道我想要内核有多大,但我不知道如何从中计算sigma(所以从内核大小 - > sigma而不是sigma - >内核大小) - Tony Stark


您必须找到函数G的最小值/最大值,使得G(X,sigma)其中X是您的观察集(在您的情况下,您的图像灰度值),此函数可以是维持“顺序”的任何内容例如,对于iamge的强度,这可以用图像的一阶导数(如G)来完成,

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

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


0
2018-01-30 18:03