문제

나는 몇 가지 이미지를 보았습니다 일반적으로 수많은 작은 이미지로 얼굴을 만듭니다.

예를 들어, 10x10 그리드로 100 개의 이미지를 타일이라고 말하면 어떻게 든 작은 이미지의 색조/sat/col이 다양하여 큰 그림, 당신은 다른 이미지를 볼 수 있습니다.

질문은 귀결됩니다. 이미지가 있다고 말합니다. 해당 이미지의 평균 RGB 값이 정의한 것의 평균 RGB 값이되도록 해당 이미지에 어떤 종류의 알고리즘을 적용 하시겠습니까?

도움이 되었습니까?

해결책

  1. 모든 타일의 색조/SAT/값을 계산합니다 (여기서 작은 차이가 RGB 공간보다 인간의 눈에 더 "자연스럽게 보이기 때문에 HSV 사용).
  2. 이제 큰 그림의 각 n*n 타일에 대해 동일한 값을 계산하십시오.
  3. 가장 가까운 HSV 값으로 타일을 찾으십시오 (최소값 sqrt((h1-h2)^2 - (s1-s2)^2 - (v1-v2)^))) 및 타일을 결과로 N*N으로 스케일링했습니다.

타일에 대한 HSV를 찾으려면 모든 RGB 값을 요약 한 다음 픽셀 수로 나누고 최종 RGB 트리플을 HSV로 변환하는 것으로 충분해야합니다. 그러나 저장하려면 두 버전을 모두 시도하는 것이 좋습니다.

보다 Wikipedia 기사 RGB <-> HSV 변환의 경우.

알고리즘을 개선하려면 모든 타일을 m으로 분할 할 수 있습니다.M 및 각 그리드 요소의 평균 HSV를 계산하십시오. 그런 다음 성냥을 찾으면 큰 이미지를 평소와 같이 나누고 m을 계산합니다.M HSV 값. 이 m*m의 대부분과 일치하는 타일을 선택하십시오. 이를 통해 알고리즘은 큰 그림과 동일한 구조를 가진 타일을 선택할 수 있습니다.

추가 터치를 위해 a를 만들어보십시오 Gigapixel 이미지.

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