【发布时间】:2020-11-07 21:44:14
【问题描述】:
我知道分割某些颜色的最简单方法是使用 HSV 颜色空间,但我有一个任务要在 HSV、RGB 和 Lab 中完成... 我真的很困惑如何在实验室中做到这一点。我是在 HSV 中完成的,它非常简单。 这是使用 HSV 颜色空间分割人类颜色的函数
import cv2
import matplotlib.pyplot as plt
import numpy as np
def HSV_Segmentation(image):
lowerRange= np.array([0, 70, 0] , dtype="uint8")
upperRange= np.array([25, 255, 255], dtype="uint8")
mask = image[:].copy()
imageHSV = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)
imageRange = cv2.inRange(imageHSV,upperRange, lowerRange)
mask[:,:,0] = imageRange
mask[:,:,1] = imageRange
mask[:,:,2] = imageRange
kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (5, 5))
closing = cv2.morphologyEx(mask, cv2.MORPH_CLOSE, kernel)
faceHSV = cv2.bitwise_and(image,mask)
return faceHSV
现在我被困在 Lab 色彩空间中,我不确定从哪里开始。 我尝试了与人类颜色上下范围类似的方法,但显然这不是正确的方法。
【问题讨论】:
-
来自维基百科“CIELAB ... 将颜色表示为三个值:L* 表示从黑色 (0) 到白色 (100) 的亮度,a* 从绿色 (−) 到红色 (+) , 和 b* 从蓝色 (-) 到黄色 (+)。CIELAB 的设计是为了使这些值中相同数量的数值变化对应于大致相同数量的视觉感知变化。所以 L 是强度,您必须查看 A、B 的适当 + 或 - 值才能找到您想要的颜色。 A 和 B 通常是有偏差的,因此它们都是积极的。所以你必须看看高于和低于 50%。
-
众所周知,人类颜色在 HSV 颜色空间中更容易分割。您可以将 LAB 转换为 HSV 或在 LAB 中找到一个范围,您可以获得类似的结果。
-
@JoOkuma 你有这方面的参考吗?
-
你可以在这里找到一些 (scholar.google.com/…)
标签: python opencv image-segmentation hsv cielab