阈值图像

为了将彩色图像,例如由您的相机捕获的图像,转换为以目标为“前景”的二进制图像,我们需要使用每个像素的色相,饱和度和值对图像进行阈值处理。

HSV模型

与RGB不同,HSV不仅可以根据像素的颜色进行过滤,还可以根据颜色的强度和亮度进行过滤。

  • 色相:测量像素的颜色。

  • 饱和度:测量像素的颜色强度。

  • Value: Measures the brightness of the pixel.

The effects hue, saturation, and value each have on a color.

您可以使用OpenCV将BGR图像矩阵转换为HSV。

hsv_img = cv2.cvtColor(input_img, cv2.COLOR_BGR2HSV)

备注

OpenCV的色相范围从1°到180°,而不是普通的1°到360°。为了将通用色相值转换为OpenCV,请除以2。

阈值

我们将以现场图像为例来说明整个图像处理过程。

A low brightness image with the retroreflective tape showing green.

通过使用HSV对图像进行阈值处理,可以将图像分为视觉目标(前景)和相机看到的其他物体(背景)。以下代码示例通过使用HSV值进行阈值处理将HSV图像转换为二进制图像。

binary_img = cv2.inRange(hsv_img, (min_hue, min_sat, min_val), (max_hue, max_sat, max_val))

备注

这些值可能必须在每个场所进行调整,因为不同场所的环境照明可能会有所不同。建议通过NetworkTables编辑这些值,以便于即时编辑。

阈值化后,您的图像应如下所示。

After thresholding most of the rest or the image is masked out and the green tape is returned at white.

如您所见,阈值处理可能不是100%干净。您可以使用形态学运算来处理噪声。