색상 배열에서 가장 가까운 색상을 결정하는 방법
소개
색상 찾기 배열 내에서 가장 유사한 색상은 다양한 응용 분야에서 유용한 기술이 될 수 있습니다. 이 질문에서는 색상 유사성을 측정하고 가장 가까운 일치 항목의 인덱스를 검색하는 세 가지 방법을 탐색합니다.
방법
방법 1: 색상 비교
색상(색조)만을 고려할 때, 목표색상에 가장 가까운 색상을 찾는 방법입니다. 채도와 밝기를 무시합니다.
int closestColor1(List<Color> 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); }
방법 2: RGB 공간 거리
이 방법은 대상 색상과 각 색상의 RGB 값 차이를 직접 측정합니다.
int closestColor2(List<Color> colors, Color target) { var colorDiffs = colors.Select(n => ColorDiff(n, target)).Min(n => n); return colors.FindIndex(n => ColorDiff(n, target) == colorDiffs); }
방법 3: 가중치 적용 거리
색상, 채도, 명도를 조합하여 유사성을 판단하는 방법입니다. 기본적으로 색상 구성요소의 가중치가 더 높습니다.
int closestColor3(List<Color> 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); }
도우미 기능
사용
int indexInArray = closestColor1(clist.ToList(), someColor);
결론
방법 선택은 특정 요구 사항에 따라 다릅니다. 응용 프로그램. 색상 기반 비교의 경우 방법 1이면 충분합니다. 방법 2는 RGB 거리를 측정하는 반면, 방법 3은 모든 색상 특성을 고려한 가중치 거리 계산을 제공합니다.
위 내용은 다양한 거리 측정법을 사용하여 색상 배열에서 가장 가까운 색상을 찾는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!