문제

하나의 RGB 값의 값에서 다양한 색상을 찾고 싶습니다.

예를 들어 RGB (0,100,200)가 주어지면 RGB (0,0,255)와 RGB (0,255,255) 사이의 모든 것을 줄 것입니다. 그러나 RGB (255,0,255).

마찬가지로 RGB (150,50,0). 반품 : RGB (255,0,0) 및 RGB (255,255,0). RGB가 아님 (255,0,255).

이해가 되나요?

PHP를 사용하고 있습니다

도움이 되었습니까?

해결책

설명 알고리즘은 기본적으로 다음과 같습니다. "색상은 두 개의 RGB 구성 요소로 구성됩니다. 가장 강력한 RGB 구성 요소는 S와 다른 구성 요소 O. (255) 및 O 범위가 0에서 255까지의 255 변형을 만듭니다."

예를 들어 아래의 모든 예제는 동일한 결과를 산출합니다.

a) rgb(0,100,200) 
b) rgb(0,199,200)
c) rgb(0,254,255)
d) rgb(0,1,2)

Result: rgb(0,[0-255],255)

이것은 당신이 6 가지 변형 만 있다는 것을 의미합니다.

  1. 빨간색은 가장 큰 구성 요소, 녹색 다음 가장 큰 => rgb (255, [0-255], 0)
  2. 빨간색은 가장 큰 구성 요소 인 Blue Next Lost => RGB (255,0, [0-255])입니다.
  3. 녹색은 가장 큰 구성 요소, 빨간색으로 다음 가장 큰 => rgb ([0-255], 255,0)
  4. 녹색은 가장 큰 구성 요소, 파란색으로 다음 가장 큰 => rgb ([0-255], 0,255)
  5. Blue는 가장 큰 구성 요소, 빨간색 다음으로 가장 큰 => rgb ([0-255], 0,255)
  6. 파란색은 가장 큰 구성 요소, 녹색 다음 가장 큰 => rgb (0, [0-255], 255)

알고리즘의 의도는 명확하지 않으므로 사용 사례가 실제로 설명하는 것과 다르다고 생각합니다. 1 또는 3 구성 요소로 색상을 처리하지 않습니다 (실제로 대부분의 색상).

목표가 비슷한 색상 (예 : 특정 거리의 색상)을 찾는 것이 더 나은 접근 방식이 있습니다. 예를 들어 색상을 HSV 색상 공간 (색조, 채도, 값)으로 변환 한 다음 구성 요소 H, S 또는 V 중 하나가 원본에서 +/- 10 단계 인 경우 색상이 비슷하다고 말할 수 있습니다.

예 :

RGB (255,100,0) => HSV (24,100,100)

귀하의 범위는 HSV ([14-34], [90-110], [90-110]입니다.

다른 팁

HM, 나는 이것을 올바르게 이해하는지 확실하지 않지만 숫자 중 하나가 다른 두 가지보다 높고 값 중 하나는 항상 0이라고 말하고 있다고 생각합니다. 이 경우와 유사한 간단한 if-else 문을 사용할 수 있어야합니다.

if (r > g && r > b) {
  if (g > 0) {
    color1 = rgb(255, 0, 0);
    color2 = rgb(255, 255, 0);
  }
  else {
    color1 = rgb(255, 0, 0);
    color2 = rgb(255, 0, 255);
  }
}
else if (r < g && g > b) {
   .
   .
   .
}

그것이 당신의 문제에 도움이되기를 바랍니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top