分割图像中没有边缘线性梯度的单调区域

问题描述

我需要提取图像中强度单调变化的“最大”区域,这样我们就不会检测到任何(或很少)边缘。换句话说,梯度是线性的,二阶导数或多或少是恒定的。

例如,在1中,当我们应用Sobel过滤器得到2时,我对大的中心黑色区域感兴趣。我尝试了各种技术,例如 Active Contour Model 和 Chan Vese Segmentation,后者提供了有希望的结果,如 3 所示。

以下是我重现图像的代码

from skimage import filters
edge_sobel = filters.sobel(img)

from skimage.segmentation import chan_vese
cv = chan_vese(edge_sobel,mu=0.25,lambda1=1,lambda2=1,tol=1e-9,max_iter=90,dt=0.5,init_level_set="checkerboard",extended_output=True)

plt.imshow(np.flipud(img.T),cmap="gray")
plt.show()

plt.imshow(np.flipud(edge_sobel.T),cmap="gray")
plt.show()

plt.imshow(np.flipud(cv[0].T),cmap="gray")
plt.show()

plt.imshow(np.flipud(img.T),cmap="gray")
plt.imshow(np.flipud(cv[0].T),alpha=.2,cmap="Reds")
plt.show()

Grayscale image

Sobel Edges

Chan Vese Segmentation

但是,Chan Vese Segmentation 给出的结果过于激进,而且我在二进制图像左侧缺少大块图像,这些图像本应包含在 Segmentation 中。查看覆盖在原始图像上的红色分割区域。

我还要注意,我想快速完成,以便实时应用。我还要注意的是,Active Contour 模型不太有效,因为我想扩大初始区域而不是收缩它,而且我也不知道每次将初始区域放在哪里。

Monotonous Region Overlaid atop Orignal

你能帮我做一个精确的分割吗?我想分割/过滤掉下图中的整个黑色区域:

Desired segmentation

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)