从边界框获取皮肤的二进制掩码

Obtaining binary mask of skin from bounding box

我训练了一个对象检测模型来检测手的指尖。我已经从边界框坐标中提取了指尖。这是我得到的:

现在我想从这些图像中获取二进制掩码,其中仅包括指尖区域。我已经尝试过这些方法,但没有得到满意的结果。

我想从这些边界框中提取指尖区域,我目前迷路了,希望能找到正确方向的线索。

编辑 红色背景图片:

您可以选择 LAB color space

A-channel 的一个极端标识红色。因此在这个极端应用 Otsu 阈值可以很好地隔离它。

代码:

img = cv2.imread('finger_1.png')

# convert to LAB color space
lab = cv2.cvtColor(img, cv2.COLOR_BGR2LAB)

# apply Otsu threshold on A-channel
th = cv2.threshold(lab[:,:,1], 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)[1]

结果:

作为进一步的选择,您可以尝试标准化相同的 A-channel 并继续进行。

另请参阅 this post on how to segment green color