TECH 으로 돌아가기
TECH HACKER NEWS 오늘 6분 읽기 23 READS

랜덤 RGB로는 절대 안 나오는 색 — 다양한 피부톤을 '생성'하는 색공간 알고리즘

랜덤 RGB로는 절대 안 나오는 색 — 다양한 피부톤을 '생성'하는 색공간 알고리즘
SOURCE IMAGE · HACKER NEWS
랜덤 RGB로는 절대 안 나오는 색 — 다양한 피부톤을 '생성'하는 색공간 알고리즘

프로필 아바타나 게임 캐릭터를 만들 때 '기본 피부색'을 정해야 하는 순간이 있는데요. 이때 개발자들이 흔히 하는 실수가 그냥 RGB 값을 랜덤으로 뽑는 거예요. 그런데 이렇게 하면 초록빛이 도는 피부, 보랏빛 피부처럼 현실에 존재하지 않는 색이 나오기 일쑤거든요. 반대로 디자이너가 손으로 몇 개 골라 넣으면 밝은 톤 위주로만 채워지고 어두운 톤은 빠지는 편향이 생기기 쉽고요. 이번에 공개된 프로젝트는 바로 이 문제를 수학적으로 푸는 시도예요. 다양한 피부톤을 '그럴듯하게' 생성해주는 간단한 알고리즘과 전용 색공간을 만들어서 누구나 쓸 수 있게 공개했거든요.

피부색은 색공간에서 아주 좁은 영역에 산다

먼저 배경 지식 하나 깔고 갈게요. 사람 피부색은 물리적으로 크게 두 가지 색소가 결정해요. 멜라닌(갈색~검은색 계열)과 헤모글로빈(붉은 계열)이요. 이 두 가지의 농도 조합으로 전 세계 사람들의 피부톤이 만들어지는데, 이걸 RGB 색공간에 찍어보면 표현 가능한 전체 색 중에서 아주 좁은 띠 모양의 영역에만 몰려 있어요. 수학적으로 말하면 3차원 색공간 안의 낮은 차원 곡면(매니폴드) 위에 분포하는 거죠. 그러니까 '다양한 피부톤 생성'이라는 문제는 사실 '이 곡면 위에서 고르게 점을 찍는 문제'로 바뀌는 거예요. 문제를 이렇게 다시 정의하는 순간, 랜덤 뽑기가 왜 실패하는지도 명확해져요. 전체 색공간에서 무작위로 찍으면 그 좁은 곡면에 떨어질 확률이 거의 없거든요.

여기서 색공간 얘기가 나오는데요. 이게 뭐냐면, 색을 숫자로 표현하는 좌표계라고 보시면 돼요. 우리가 흔히 쓰는 RGB는 모니터가 빛을 섞는 방식이라 기계한테는 편하지만, 사람 눈의 감각과는 잘 안 맞아요. RGB에서 숫자 차이가 같아도 눈으로 느끼는 색 차이는 제각각이거든요. 그래서 '지각적 색공간'이라는 게 따로 있어요. Oklab이나 CIELAB처럼 좌표상 거리가 실제 눈으로 느끼는 색 차이와 비슷하게 설계된 공간이죠. 이런 공간에서 피부톤 곡선을 따라 균등하게 샘플링하면, 밝은 톤부터 어두운 톤까지 사람이 보기에도 고르게 분포한 팔레트가 나와요. 랜덤 RGB로는 절대 못 만드는 결과물이에요.

이모지 5단계, 구글 몽크 10단계… 기존 방식과 뭐가 다를까

사실 피부톤을 체계화하려는 시도는 전부터 있었어요. 이모지에 쓰이는 피부톤 5단계는 원래 피부과에서 쓰던 피츠패트릭 척도에서 온 거고요. 구글은 이 척도가 어두운 톤을 제대로 못 담는다는 지적에 따라 10단계짜리 몽크 스킨 톤(MST) 척도를 만들어서 검색이나 카메라 제품에 적용했어요. 그런데 이런 척도들은 전부 '이산적'이에요. 미리 정해진 몇 개 중에 고르는 방식이죠. 반면 알고리즘으로 생성하는 접근은 연속적인 스펙트럼에서 원하는 개수만큼 뽑아낼 수 있다는 게 결정적으로 달라요. 아바타 20개가 필요하면 20개를 고르게, 100개가 필요하면 100개를 고르게 만들 수 있는 거죠. 척도를 '고르는' 문제에서 팔레트를 '계산하는' 문제로 바뀐 거예요.

한국 개발자에게는 어떤 의미일까

당장 써먹을 곳이 꽤 많아요. 서비스 기본 프로필 이미지를 만들 때, 게임 캐릭터 커스터마이징 슬라이더를 설계할 때, 일러스트 자동 생성 툴을 만들 때 모두 적용할 수 있고요. 특히 글로벌 서비스를 준비 중이라면 더 중요해져요. 한국에서 만든 서비스들이 해외에 나가면서 '기본 아바타가 특정 피부톤에 치우쳐 있다'는 피드백을 받는 경우가 실제로 있거든요. 이런 걸 디자이너의 감에 의존하지 않고 알고리즘으로 보장할 수 있다는 건 꽤 실용적인 무기예요. 그리고 이 프로젝트가 보여주는 사고방식 자체도 배울 만해요. '다양성'이라는 애매해 보이는 요구사항을 색공간과 샘플링이라는 구체적인 수학 문제로 번역해서 푼 거잖아요. 모호한 요구를 계산 가능한 문제로 바꾸는 능력, 이게 좋은 엔지니어링의 핵심이거든요.

정리하면

피부톤 다양성 문제를 '지각적 색공간 위의 샘플링 문제'로 바꿔서 푼, 작지만 영리한 프로젝트예요. 여러분 서비스의 기본 아바타는 지금 어떻게 만들어져 있나요? 혹시 디자이너가 고른 몇 가지 색에 의존하고 있다면, 이런 알고리즘적 접근을 도입해볼 만하지 않을까요?


🔗 출처: Hacker News

SOURCE · HACKER NEWS
원문 전체 보기 → https://toneyalexander.github.io/inclusive-color-space/
SHARE
처리 중...