> 백엔드 개발 > C++ > 다양한 거리 측정법을 사용하여 색상 배열에서 가장 가까운 색상을 찾는 방법은 무엇입니까?

다양한 거리 측정법을 사용하여 색상 배열에서 가장 가까운 색상을 찾는 방법은 무엇입니까?

Linda Hamilton
풀어 주다: 2024-12-30 20:23:13
원래의
213명이 탐색했습니다.

How to Find the Closest Color in a Color Array Using Different Distance Metrics?

색상 배열에서 가장 가까운 색상을 결정하는 방법

소개

색상 찾기 배열 내에서 가장 유사한 색상은 다양한 응용 분야에서 유용한 기술이 될 수 있습니다. 이 질문에서는 색상 유사성을 측정하고 가장 가까운 일치 항목의 인덱스를 검색하는 세 가지 방법을 탐색합니다.

방법

방법 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);
}
로그인 후 복사

도우미 기능

  • getBrightness: 인지된 색상을 계산합니다. 밝기.
  • getHueDistance: 두 색상 간의 색조 차이를 결정합니다.
  • ColorNum: 채도 및 밝기 구성 요소에 가중치를 둡니다.
  • ColorDiff: RGB 색상 공간을 계산합니다. 거리.

사용

int indexInArray = closestColor1(clist.ToList(), someColor);
로그인 후 복사

결론

방법 선택은 특정 요구 사항에 따라 다릅니다. 응용 프로그램. 색상 기반 비교의 경우 방법 1이면 충분합니다. 방법 2는 RGB 거리를 측정하는 반면, 방법 3은 모든 색상 특성을 고려한 가중치 거리 계산을 제공합니다.

위 내용은 다양한 거리 측정법을 사용하여 색상 배열에서 가장 가까운 색상을 찾는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿