배열에서 가장 가까운 일치를 식별하는 것은 그래픽 애플리케이션에서 일반적인 작업입니다. 이 기사에서는 다음을 수행하기위한 세 가지 다른 방법을 살펴볼 것입니다 :
1. 색조 전용 비교 :
이 메소드는 채도와 밝기를 무시하고 색상의 색상 만 고려합니다. 색조 거리는 간단한 뺄셈을 사용하여 계산되며 가장 가까운 색조는 최소 거리를 찾아 결정됩니다.
2. RGB 거리 :
이 메소드는 색상의 RGB 값 사이의 직접 거리를 측정합니다. 색상 차이는 RGB 공간에서 유클리드 거리로 계산되며,이 차이를 최소화함으로써 가장 가까운 색상이 발견됩니다.
3. 가중 색조, 채도 및 밝기 비교 :
이 방법은 가중 방식으로 색조, 채도 및 밝기를 결합합니다. 인지 된 밝기가 계산되고 색상 번호는 채도와 밝기에 따라 계산됩니다. 가장 가까운 색상은 색상 차이와 색조 거리의 가중 합계를 최소화함으로써 결정됩니다.
다음은 다음과 같습니다. int closestColor1 (목록 색상, 색상 대상) { var hue1 = target.gethue (); var diffs = colors.select (n => gethuedistance (n.gethue (), hue1)); var diffmin = diffs.min (n => n); return diffs.tolist (). findIndex (n => n == diffmin); } // RGB 거리 비교 int closestColor2 (목록 색상, 색상 대상) { var colordiffs = colors.select (n => colordiff (n, target)). min (n => n); return colors.findIndex (n => colordiff (n, target) == colordiffs); } // 가중 색조, 채도 및 밝기 비교 int closestColor3 (목록 색상, 색상 대상) { float hue1 = target.gethue (); var num1 = colornum (target); var diffs = colors.select (n => math.abs (colornum (n) -num1) gethuedistance (n.gethue (), hue1); var diffmin = diffs.min (x => x); return diffs.tolist (). findIndex (n => n == diffmin); }
// Hue-Only Comparison int closestColor1(List헬퍼 함수colors, Color target) { var hue1 = target.GetHue(); var diffs = colors.Select(n => getHueDistance(n.GetHue(), hue1)); var diffMin = diffs.Min(n => n); return diffs.ToList().FindIndex(n => n == diffMin); } // RGB Distance Comparison int closestColor2(List colors, Color target) { var colorDiffs = colors.Select(n => ColorDiff(n, target)).Min(n => n); return colors.FindIndex(n => ColorDiff(n, target) == colorDiffs); } // Weighted Hue, Saturation, and Brightness Comparison int closestColor3(List colors, Color target) { float hue1 = target.GetHue(); var num1 = ColorNum(target); var diffs = colors.Select(n => Math.Abs(ColorNum(n) - num1) getHueDistance(n.GetHue(), hue1)); var diffMin = diffs.Min(x => x); return diffs.ToList().FindIndex(n => n == diffMin); }
// Hue-Only Comparison int closestColor1(Listcolors, Color target) { var hue1 = target.GetHue(); var diffs = colors.Select(n => getHueDistance(n.GetHue(), hue1)); var diffMin = diffs.Min(n => n); return diffs.ToList().FindIndex(n => n == diffMin); } // RGB Distance Comparison int closestColor2(List colors, Color target) { var colorDiffs = colors.Select(n => ColorDiff(n, target)).Min(n => n); return colors.FindIndex(n => ColorDiff(n, target) == colorDiffs); } // Weighted Hue, Saturation, and Brightness Comparison int closestColor3(List colors, Color target) { float hue1 = target.GetHue(); var num1 = ColorNum(target); var diffs = colors.Select(n => Math.Abs(ColorNum(n) - num1) getHueDistance(n.GetHue(), hue1)); var diffMin = diffs.Min(x => x); return diffs.ToList().FindIndex(n => n == diffMin); }
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3