C++/이미지 대표색 찾기

작성일: 2014-08-22

Contents

1. PoC 코드


다음 방법으로 이미지 대표색을 찾을 수 있을 것이다.

  1. 이미지 대표색이란? 복잡한 이미지를 한 가지 색으로 표현할 수 있는 색. 보통 이미지에서 가장 많이 쓰인 색이 이미지 대표색이라고 할 수 있을 것이다.
  2. 이미지에서 각 픽셀의 RGB 값을 구할 수 있다면 이 정보를 기초로 가장 많이 쓰인 색을 구할 수 있다. 여기까지 해도 충분히 원하는 결과를 얻을 수 있을 것이라고 생각되나...
  3. 문제는 눈으로는 거의 차이가 없는 색이라도 RGB 값이 픽셀마다 근소하게 다를 경우 왜곡된 결과가 도출될 수 있다. JPEG 같은 압축 이미지 포맷에서 그런 경향이 더 커진다. 그렇다면 이미지에서 가장 많은 '비슷한' 색이라면 좀 더 정확한 이미지 대표색일 것이다.
  4. 비슷한 색을 찾는 방법은 두 가지가 있다. 먼저 각 픽셀 마다 다른 픽셀과 얼마나 색 차이가 있는지 찾는 것이고, 다른 하나는 RGB 값 범위(0~255)를 일정한 간격으로 나누어 같은 구간에 있으면 비슷한 색이라고 판단하는 것이다. 전자는 가장 정확하다고 볼 수 있지만 한 픽셀마다 인접 픽셀을 일일히 비교해야 하므로 연산이 기하급수적으로 많아진다. 후자는 구간 경계에서 결과가 왜곡될 수는 있지만 연산은 한 번에 끝난다. 연산량 차이를 생각하면 그 정도 오차는 수용할 수 있는 수준이다.
  5. 이제 가장 많이 쓰인 비슷한 색 구간의 가운데 값을 구하면 그 결과가 이미지 대표색이다.


1. PoC 코드 #

나중에 시간 되면...

Color_File.jpg
[JPG image (127.22 KB)]

이 글에는 0 개의 댓글이 있습니다.