LAB 图像每个组件的示例参考阈值是多少?

What is the example reference threshold for each component of a LAB image?

我在做人脸皮肤检测的项目。如果图像强度小于某个固定常数 T,我需要用黑色像素替换面部图像中的每个像素,或者如果图像强度大于该常数,则用白色像素替换。

我知道在opencv中,cv2.threshold有两个参数,第一个参数是源图像,应该是灰度图像。第二个参数是用于对像素值进行分类的阈值。

任何人都可以告诉我如何通过为图像的每个 LAB 组件指定一个单独的阈值然后将它们与 AND 运算组合来对彩色图像进行阈值处理吗?

示例阈值范围会很棒!

这是我写的示例代码:

import cv2

color_image = cv2.imread("lena.png")
lab_image = cv2.cvtColor(color_image, cv2.COLOR_BGR2LAB)
L,A,B=cv2.split(lab_image)  

th, th_image = cv2.threshold(L,100,255,cv2.THRESH_BINARY)

#cv2.imshow("original",color_image)
#cv2.imshow("l space",L)
cv2.imshow("th imaged",th_image)


# wait until escape is pressed
while True:
    keyboard = cv2.waitKey()
    if keyboard == 27:
        break

cv2.destroyAllWindows()

这是官方文档:

cv.Threshold(src, dst, threshold, maxValue, thresholdType) → None

Parameters:

  • src – input array (single-channel, 8-bit or 32-bit floating point).
    • dst – output array of the same size and type as src.
    • thresh – threshold value.
    • maxval – maximum value to use with the THRESH_BINARY and THRESH_BINARY_INV thresholding types.
    • type – thresholding type (see the details below).

代码将为您生成这三张图片:

原文:

LAB 转换的

L-Space:

最后是一个简单的阈值示例:

可以在此处找到关于阈值处理的非常好的教程:OpenCV