RGB 색상 공간에서 Y 색상 공간 (YUV, YCrCb 또는 그 중 하나)과 같은 색상 공간으로 전환하는 것이 좋습니다. 모든 경우에 Y 채널은 밝기를 나타내고 다른 두 채널은 함께 밝기를 기준으로 색상을 나타냅니다. 아마도 어둠 아래의 모든 색을 배제하라는 경고와 함께 밝기를 배제하기를 원할 것입니다. 따라서 Y를 개별적으로 얻는 것이 그 자체로 도움이되는 첫 번째 단계입니다.
RGB에서 YUV 로의 변환은 간단한 선형 조합으로 수행됩니다. 직선 위키 백과와 천 다른 소스에서 :
y = 0.299*r + 0.587*g + 0.114*b;
u = -0.14713*r - 0.28886*g + 0.436*b;
v = 0.615*r - 0.51499*g - 0.10001*b;
당신이 범위에서 R, G 및 B를 유지하고 가정 [0, 1], 첫 번째 테스트는 다음과 같을 수 있습니다
if(y < 0.05)
{
// this colour is very dark, so it's considered to be as
// far as we allow from any colour we're interested in
}
하는 결정하기 색상은 다음, 말, 녹색,은 y의 비율로, 관심있는 녹색의 U 및 V 구성 요소를 해결하는 것이 얼마나 가까운 : 그 후
r = b = 0;
g = 0;
y = 0.299*r + 0.587*g + 0.114*b = 0.587;
u = -0.14713*r - 0.28886*g + 0.436*b = -0.28886;
v = 0.615*r - 0.51499*g - 0.10001*b = -0.51499;
proportionOfU = u/y = -2.0479;
proportionOfV = v/y = -0.8773;
, 운동 및 비율을 비교 U와 V의 들어오는 색상을 비교하고 (예 : 비교하는 색상에 대해 계산 한 값과 평면 거리 (2d 평면 거리 포함)를 비교합니다. 더 가까운 값이 더 비슷합니다. 해당 측정 항목을 확장하고 사용하는 방법은 응용 프로그램에 따라 다릅니다.
y가 0으로 갈수록 계산 된 비율은 입력 데이터의 제한된 범위 때문에 점점 더 정확도가 떨어지고 y가 0 일 때 정의되지 않음에 유의하십시오. 개념적으로 이는 빛이 없을 때 모든 색상이 똑같이 보입니다 그 (것)들에. y가 최소한의 특정 값 이상인지 확인하는 것은이 문제를 해결하기위한 실용적인 방법입니다. 이것은 또한 당신이 "이 그림이 얼마나 흑인입니까?"라고 말하면 합리적인 결과를 얻지 못할 것이라는 것을 의미합니다. 다시 말하면 그것은 빛을 반사하지 않는 표면과 표면을 반사하지 않는 표면 사이의 모호함 때문입니다. 그 위에 어떤 빛이라도 떨어지십시오.
굉장 - 고마워요. 나는 그것을 시도 할 것입니다. – geekyaleks