TECH 으로 돌아가기
TECH HACKER NEWS 오늘 7분 읽기 25 READS

피부톤을 위한 색 공간 만들기: 한 개발자의 '적당히 좋은' 포용적 색 알고리즘

피부톤을 위한 색 공간 만들기: 한 개발자의 '적당히 좋은' 포용적 색 알고리즘
SOURCE IMAGE · HACKER NEWS

이모지는 인간의 피부색을 다섯 단계(혹은 만화풍 노란색)로 압축하고, 화장품 브랜드는 50가지 정도의 파운데이션 색상을 내놓으며, 게임의 캐릭터 생성기는 종종 1,677만여 개의 RGB 값 전체를 던져주고 알아서 고르라고 한다. 어느 쪽도 실제 세계의 다양성을 제대로 담지 못한다. 최근 Hacker News에 공개된 한 개인 프로젝트는 바로 이 간극을 겨냥한다. 제작자는 디지털 아트나 게임 개발에서 단순화된 피부톤을 포용적으로 고를 수 있도록, RGB 안에서 '그럴듯한 피부색'에 해당하는 넓은 영역을 정의하는 커스텀 색 공간과 간단한 방정식, 그리고 이를 조작할 수 있는 색상 선택기(color picker)를 만들었다.

'적당히 좋은' 것을 명시적 목표로 삼기

이 프로젝트에서 가장 눈에 띄는 점은 완성도를 과장하지 않는 태도다. 제작자는 자신이 만든 방정식을 반복해서 '적당히 좋은(good enough)' 수준이라고 부르며, 이는 권위 있는 정답이 아니라 유용한 출발점일 뿐임을 강조한다. 스스로 연구자가 아닌 한 개인이고, 색 지각에는 자신의 주관과 편향이 개입할 수밖에 없다는 점도 분명히 밝힌다. 실무자 입장에서 이 태도는 오히려 신뢰를 높인다. 도구의 적용 범위를 '사람을 단순화해 표현하는 맥락'으로 좁게 한정함으로써, 어디까지 써도 되고 어디서부터는 위험한지를 사용자가 판단할 수 있게 하기 때문이다.

실제로 제작자는 이 작업의 한계를 길게 나열한다. 피부색은 단일한 색이 아니라 신체 부위마다 다르고, 혈류량과 멜라닌 농도, 피부 층을 통과하는 빛의 산란, 백반증·주근깨·색소침착·흉터 같은 변이의 영향을 받는다. 은 중독(argyria)으로 인한 청회색, 높은 빌리루빈 수치로 인한 황록빛처럼 '그럴듯함'의 범위를 크게 벗어나는 경우도 존재한다. 게다가 색은 디스플레이 종류와 조명 환경에 따라 다르게 보인다. 즉 이 색 공간은 만능이 아니라, 단순한 표현이 필요한 좁은 문제에 대한 실용적 근사다.

라벨링 → PCA → 구(球) 방정식 맞추기

방법론 자체는 엔지니어링적인 노가다와 직관의 결합이다. 제작자는 우선 수많은 RGB 색을 직접 손으로 분류했다. 색 조각에 얼굴 그림을 입혀두고, '이 사람이 길을 걷고 있는 모습을 상상할 수 있는가'를 기준으로 예/아니오 영역 사이로 얼굴을 옮기는 단순한 웹 UI를 만들어 라벨링을 반복했다. 그 결과 데이터는 (0,0,0)과 (255,255,255) 사이를 붉은색 쪽으로 휘며 지나가는 '바나나' 모양의 밀집된 형태로 나타났다.

다음 단계에서 그는 주성분 분석(PCA)을 도입한다. PCA는 데이터의 주요 변동 방향이 좌표축과 나란해지도록 회전·신축하는 기법으로, 공중에 떠 있던 바나나 모양을 바닥에 눕혀 축에 대칭이 되도록 정렬해준다. 이 과정에서 얻은 변환 행렬은 RGB 공간의 점을 그가 XYZ 공간이라 부르는 PCA 공간으로 옮기는 통로가 된다. 이후 그는 이 정렬된 점 구름의 표면을 구 형태의 방정식으로 감싸고, 등식을 부등식으로 바꿔(예: x²+y²+z²=2 → ≤2) 내부의 점까지 포함시켰다. 방정식 맞추기에는 회귀 분석이 아니라 Desmos 3D를 이용한 순수한 시행착오, 즉 눈대중이 쓰였다. RGB↔XYZ(PCA)↔TUV로 이어지는 변환을 연결하면 최종적으로 TUV와 RGB를 오가는 함수가 완성된다.

PCA가 만들어낸 세 개의 축

색상 선택기의 흥미로운 대목은 조작 가능한 세 값 T, U, V다. 일반적인 선택기가 빨강·초록·파랑이나 색상·채도·명도를 조절하듯, 이 선택기도 서로 독립적인 세 값을 조절한다. 다만 각 축이 무엇을 조정하는지는 제작자가 미리 설계한 것이 아니라 PCA의 출력으로 사후에 드러난 것이다. 그는 선택기를 다 만든 뒤에야 각 방향이 어떤 개념을 조절하는지 알게 됐다고 말한다. 이는 데이터를 회전시켜 각 축의 의미를 최대화하는 PCA의 성질을 보여주는 사례이기도 하다.

실무적으로 이 결과물은 자바스크립트 색상 선택기와 파이썬 절차적 생성 알고리즘 샘플로 공개돼 있어, 캐릭터 생성기나 아트 도구에 곧바로 참고할 수 있다. 다만 제작자 자신이 강조하듯 훈련 데이터의 품질이 중간 수준에 그치고 방법이 비과학적이라는 점은 분명한 제약이다. 그는 구체적인 구현을 그대로 권장하지는 않지만, '데이터 라벨링 → PCA → 구 방정식 맞추기'라는 전체 절차만큼은 지지한다고 밝힌다. 정교한 기호 회귀와 양질의 데이터로 이를 제대로 다시 해보는 것은 남겨진 과제다.

이 프로젝트는 기술이 사회적 맥락 안에 존재한다는 점도 정면으로 다룬다. 밝은 피부색이 역사적으로 우대받고 어두운 피부색이 소외돼 온 현실, 즉 인종차별과 컬러리즘의 문제를 언급하며, 화장품 업계의 어두운 셰이드 부재나 게임 속 재현 문제를 다룬 여러 영상·에세이·사진 프로젝트를 함께 소개한다. 결국 이 작업의 가치는 완벽한 색 공간을 제시한 데 있지 않다. '다섯 개'와 '수백만 개' 사이에서 실무자가 손에 쥐고 쓸 수 있는 중간 지대를 열어 보이고, 그 한계까지 투명하게 드러냈다는 데 있다.

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