当将高斯模糊应用于图像时,通常西格玛是参数(示例包括Matlab和ImageJ)。
怎么知道西格玛应该是什么?有没有数学方法来找出最佳sigma?在我的情况下,我在图像中有一些与背景相比明亮的对象,我需要通过计算找到它们。我将应用高斯滤波器使这些物体的中心更亮,这有助于找到它们。如何确定最佳sigma?
当将高斯模糊应用于图像时,通常西格玛是参数(示例包括Matlab和ImageJ)。
怎么知道西格玛应该是什么?有没有数学方法来找出最佳sigma?在我的情况下,我在图像中有一些与背景相比明亮的对象,我需要通过计算找到它们。我将应用高斯滤波器使这些物体的中心更亮,这有助于找到它们。如何确定最佳sigma?
没有公式可以为你确定;最佳西格玛将取决于图像因素 - 主要是图像的分辨率和其中对象的大小(以像素为单位)。
另外,请注意高斯滤波器实际上并不意味着任何东西;你可能想要研究对比度最大化技术 - 听起来像直方图拉伸这样简单的东西可以很好地适合你。
编辑: 更多解释 - sigma基本上控制了你的内核函数的“胖”程度;较高的西格玛值在较宽的半径范围内模糊。由于您正在处理图像,因此较大的sigma也会迫使您使用更大的内核矩阵来捕获足够的函数能量。对于您的特定情况,您希望您的内核足够大以覆盖大部分对象(以便它足够模糊),但不要太大以至于它一次开始重叠多个相邻对象 - 实际上,对象 分割 也是尺寸的一个因素。
既然你提到了MATLAB - 你可以看一下使用不同参数的各种高斯内核 fspecial('gaussian', hsize, sigma)
功能,在哪里 hsize
是内核的大小 sigma
好吧,西格玛。尝试更改参数以查看其更改方式。
没有公式可以为你确定;最佳西格玛将取决于图像因素 - 主要是图像的分辨率和其中对象的大小(以像素为单位)。
另外,请注意高斯滤波器实际上并不意味着任何东西;你可能想要研究对比度最大化技术 - 听起来像直方图拉伸这样简单的东西可以很好地适合你。
编辑: 更多解释 - sigma基本上控制了你的内核函数的“胖”程度;较高的西格玛值在较宽的半径范围内模糊。由于您正在处理图像,因此较大的sigma也会迫使您使用更大的内核矩阵来捕获足够的函数能量。对于您的特定情况,您希望您的内核足够大以覆盖大部分对象(以便它足够模糊),但不要太大以至于它一次开始重叠多个相邻对象 - 实际上,对象 分割 也是尺寸的一个因素。
既然你提到了MATLAB - 你可以看一下使用不同参数的各种高斯内核 fspecial('gaussian', hsize, sigma)
功能,在哪里 hsize
是内核的大小 sigma
好吧,西格玛。尝试更改参数以查看其更改方式。
您必须找到函数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。这也可以用二阶导数来完成。