根据图像轮廓细化分割掩码

Refine segmentation mask based on contours of image

我有一张图像,我将绿色边框作为分割蒙版的轮廓。我希望根据在原始图像上找到的轮廓来优化此轮廓,以获得类似于第二张图像中的蒙版 - 头发的边缘更加精细。

我已经尝试了分割掩码的膨胀和腐蚀组合,但它感觉不像是通用解决方案 - 因为它涉及手动调整内核大小。

有没有更好的方法?

没有通用的解决方案。始终需要参数调整以获得所需的输出。为了获得更精细的毛发边缘,您可以应用如下阈值:

import cv2 as cv
from matplotlib import pyplot as plt

im = cv2.imread("model.jpg",0)
plt.imshow(im)
thresh = cv2.adaptiveThreshold(im,255,cv2.ADAPTIVE_THRESH_MEAN_C,\
            cv2.THRESH_BINARY_INV,31,3)
plt.imshow(thresh)

输入:

输出:

注意:颜色变化是由于'matplotlib'。