计算高斯核西格玛和宽度以近似卫星图像所需的较低分辨率像素/米

问题描述 投票:0回答:1

我正在处理具有不同空间分辨率(被理解为像素/米)的卫星图像。对于实验,我想人为地对这些图像进行下采样,保持图像大小恒定。例如,我有一个 512x512 的图像,空间分辨率为 0.3m/像素。我想将其下采样到 0.5m/像素 512x512。

我被建议应用高斯核来模糊图像,但是如何计算高斯核的标准差和核大小以近似所需的较低分辨率?我找不到严格的方法来进行该计算。

ChatGPT 说的公式是:

sigma = (desired_resolution / current_resolution) / (2 * sqrt(2 * log(2)))

kernel_size = 2 * ceil(2 * sigma) + 1

但无法解释原因。有人可以解释标准差(西格玛)和所需的输出分辨率是如何联系的吗?我如何知道使用哪个西格玛?通常,这些现有的调整大小函数需要一个西格玛,但在他们的文档中没有解释如何导出它。

python image-processing resolution image-resizing gaussianblur
1个回答
0
投票

我想知道西格玛的方程是从哪里来的,我从来没有见过它。很难定义高斯的截止频率。

高斯滤波器在空间域和频域上都非常紧凑,因此是一种非常好的低通滤波器。但它没有明确的点,即它可以充分衰减所有较高频率,从而不再产生可见的混叠伪影,同时又不会过多衰减较低频率,导致下采样图像看起来模糊。

当然我们可以遵循电子领域的传统,将截止频率定义为信号衰减至少3dB的频率。我认为这个定义可能会导致OP中的方程,尽管我不想尝试复制该计算。

根据个人经验,我发现 0.5 倍的子采样因子对于常规图像来说是一个很好的折衷方案。例如,要以 2 倍下采样,我首先应用 sigma 1.0 的高斯滤波器。对于 OP 的示例,从每像素 0.3 到 0.5 m,下采样因子为 0.5/0.3 = 1.667,即 0.833 的一半。

请注意,西格玛低于 0.8 的高斯核无法在没有过多混叠的情况下正确采样,应通过频域中的乘法来应用西格玛较小的高斯滤波器。

最后是内核大小。高斯函数的大小是无限的,但它很快就会接近于零,我们可以将其截断而不会造成太大损失。计算

2 * ceil(2 * sigma) + 1
取高斯分布的中心部分至少为 4 个 sigma,两侧为 2 个 sigma。取上限操作是“至少”,当然它需要是整数大小。 +1 占中心像素。该方程总是产生奇数大小的内核,因此它可以围绕原点对称。

然而,对于高斯滤波器来说,2 sigma 相当小,它会切断太多的钟形形状,影响滤波器的一些良好品质。我总是建议在两侧使用三个西格玛:

2 * ceil(3 * sigma) + 1
。对于某些应用程序,差异可能并不重要,但如果您的目标是量化,我肯定会尽力避免任何错误来源。

© www.soinside.com 2019 - 2024. All rights reserved.