假设我有一张猫的图像和一个对应于猫位置的二进制掩码图像,如图所示

我想模糊猫周围的图像区域,但作为与猫边界像素距离的函数。本质上,像素离边界越远,它变得模糊的程度就越大。理想的距离测量是从猫的边界像素径向延伸的等高线,但这可能很复杂。我现在会满足于欧几里得距离。
知道我怎么能做到这一点吗?
假设我有一张猫的图像和一个对应于猫位置的二进制掩码图像,如图所示

我想模糊猫周围的图像区域,但作为与猫边界像素距离的函数。本质上,像素离边界越远,它变得模糊的程度就越大。理想的距离测量是从猫的边界像素径向延伸的等高线,但这可能很复杂。我现在会满足于欧几里得距离。
知道我怎么能做到这一点吗?
计算距离变换。你可以非常有效地做到这一点。这将为您提供到最近边界像素的欧几里得距离,以及该像素的索引。然后,对掩码中的所有距离进行归一化,使最大值变为 1。这是下一阶段所必需的:在每个点启动一个高斯核。内核大小(以及类似的标准偏差)应该是权重的函数,从距离归一化中获得。您可以使用系数 - 线性比例 - 或复杂内核,具体取决于模糊要求。
最后,使用生成的掩码模糊每个像素的信号。每个像素都有一个独特的蒙版,因此会产生不同的模糊效果。请注意,某些像素可能会出现相同的模糊。
您只需要调整内核大小,对于典型的高斯内核,是的函数。该函数只是一个查找表:
$h$ $\sigma$
3 (0.65)
5 (0.87)
7 (1.43)
9 (1.88)
11 (2.31)