哪个图像过滤器的作用类似于“表面张力”?

计算科学 图像处理
2021-12-08 05:31:33

我正在寻找执行以下操作的图像过滤器:

在我的第一张图片中,我有两个球体。应用过滤器后,我想让它们“粘合在一起”,类似于表面张力。

评论:

  • 图像将是 2D/3D,到球体表面的带符号距离编码为灰度。
  • 如果它已经在 Numpy / Scipy 中,那就太好了。
  • 我知道人们在网格上做类似的事情,但我想把它作为一个图像过滤器。

示例图片(抱歉格式不同):

在此处输入图像描述 图 2 - 过滤后

2个回答

形态闭合

形态闭合是先膨胀后腐蚀的组合;大多数图像处理库中可用的典型图像处理操作。

SciPy 有一个“简单”的二进制关闭方法,可以在二进制图像上执行此操作。通过尝试不同的结构元素,您可以缩小或缩小差距。

我认为您可以使用高斯滤波器。

以下 Python 代码执行的操作与您在图像中显示的内容类似。

from __future__ import division
import numpy as np
from scipy.ndimage.filters import gaussian_filter, laplace
import matplotlib.pyplot as plt

y, x = np.mgrid[-2:2:101j, -2:2:101j]
z = np.maximum(0, 0.2 - (x + 0.5)**2 - y**2) +\
    np.maximum(0, 0.2 - (x - 0.5)**2 - y**2)
z2 = gaussian_filter(z, sigma=7)

plt.figure(figsize=(8, 4))
plt.subplot(1, 2, 1)
plt.contourf(x, y, z)
plt.subplot(1, 2, 2)
plt.contourf(x, y, z2)
plt.savefig("gaussian_filter.png")

结果如下

在此处输入图像描述

需要注意的是 的选择sigma该参数将确定高斯滤波器的扩散程度。