Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Image processing 图像高斯滤波的最佳西格玛?_Image Processing_Parameters_Filter_Gaussian - Fatal编程技术网

Image processing 图像高斯滤波的最佳西格玛?

Image processing 图像高斯滤波的最佳西格玛?,image-processing,parameters,filter,gaussian,Image Processing,Parameters,Filter,Gaussian,当对图像应用高斯模糊时,通常sigma是一个参数(示例包括Matlab和ImageJ) 如何知道西格玛应该是什么?有没有一种数学方法可以计算出最佳的西格玛?在我的例子中,图像中的一些对象与背景相比是明亮的,我需要通过计算找到它们。我将应用高斯滤波器使这些物体的中心更加明亮,希望这有助于找到它们。我如何确定这方面的最佳西格玛?没有公式可以为您确定;最佳西格玛取决于图像因素——主要是图像的分辨率和图像中对象的大小(以像素为单位) 另外,请注意,高斯滤波器实际上并不意味着要使任何东西变亮;你可能想研究

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


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

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

另外,请注意,高斯滤波器实际上并不意味着要使任何东西变亮;你可能想研究对比度最大化技术——听上去像直方图拉伸这样简单的方法对你很有用

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


由于您提到了MATLAB,您可以使用
fspecial('gaussian',hsize,sigma)
函数查看具有不同参数的各种高斯内核,其中
hsize
是内核的大小,
sigma
是sigma。尝试改变参数,看看它是如何变化的

你必须找到一个函数G的最小值/最大值,这样G(X,sigma)其中X是你的一组观察值(在你的例子中,你的图像灰度值),这个函数可以是任何维持图像强度“顺序”的函数,例如,这可以通过图像的一阶导数(如G)来完成

这将给出图像一阶导数的结果,现在您需要通过
最大化G(X,sigma),这意味着你要尝试几个sigma(比如说,以递增的顺序),直到你达到使G最大的sigma。这也可以通过二阶导数来实现。

我使用这个惯例作为经验法则。如果
k
是小于
sigma=(k-1)/6的内核大小。这是因为高斯pdf的99百分位数的长度是6sigma

@tzaman:你能详细说明最佳sigma如何取决于图像的分辨率和我的对象的大小(以像素为单位)?或者,如果可以的话,给我指一下读数的方向。这正是我要找的。此外,我还错误地提到了提亮;我的意思是说我希望我的物体的中心比其他物体都要明亮。@hatorade:我已经扩展了我的答案;希望它能澄清一些事情。@tzaman:在一个网站()上,我读到半高宽(FWHM)的测量有一个等式。这个概念适用于内核吗?在ImageJ或Matlab中,内核的“FWHM”与sigma的关系是否相同?我问这个问题的原因是因为通常参数是内核维度和sigma,但我一直在读sigma影响内核大小…@hatorade:是的-本质上,FWHM是测量函数本身“扩展”的一种方法;因此,对于更高的sigma,它会更大。例如,您可以使用它来帮助确定给定内核的矩阵大小应该有多大。虽然在某种意义上你可以分别选择维度和西格玛,但实际上维度必须与西格玛联系起来,才能有意义——它需要足够大,以保持曲线的形状;如果你过多地截断它,它就不再是高斯模糊,或多或少会变成一个简单的平均滤波器。@tzaman:对。你知道有没有一个关于法向曲线底部宽度的方程式,而不是在最大值的一半?本质上,我知道我希望内核有多大,但我不知道如何从中计算sigma(因此从内核大小->sigma而不是sigma->内核大小)这是正确的,但我建议相反的方法:首先确定最佳sigma,然后找到内核大小,使其包含6个sigma。这是因为内核大小是一个离散量(以2的步长递增,而sigma是一个连续变量,因此可以进行更精细的调整。
k=2*ceil(3*sigma)+1
@CrisLuengo非常有意义
fil = fspecial('sobel');
im = imfilter(I,fil);
imagesc(im);
colormap = gray;