RecoFashion - 색상 추천 알고리즘 구상 Part 1

백근영·2019년 11월 16일
2
post-thumbnail

생각의 흐름

매일 데일리 코디를 추천해주는 서비스를 만들기 위해서는, 무엇보다 적절한 코디를 추천해주는 알고리즘이 얼마나 잘 작동하냐가 가장 중요할 것이다. 평소에 옷 입는 것에 관심이 많긴 하지만 배색 조합과 관련해서 이론적으로 아는 것은 전무했고, 그날 그날의 날씨나 최근에 사용자가 입었던 옷에 대한 정보 등 적절한 알고리즘을 구상하기 위해서는 신경 쓸 것이 상당히 많았다. 우선 아래는 닥치는 대로 배색 조합에 관해 검색해 본 결과이다.

RGB?

위와 같이 쓸모 있어 보이는 자료들을 꽤 많이 찾았지만, 이미 공개되어 있는 색상 조합들을 그날그날 고정적으로 보여주는 것은 '알고리즘'이라 불리기에 적절치 않은 것 같다(현실세계에 존재하는, 특히 특정한 답이 정해져있지 않고 주관성이 강조되는 문제들은 정적인 방법으로 알고리즘을 구상하기가 굉장히 힘들다는 것을 실감했다). 그래서 생각한 것이 RGB 색상을 이용한다고 했을 때, 각각의 r,g,b 값이 변함에 따라 색상이 어떤 느낌을 주는지에 대한 경향성을 파악해보고 이에 기반한 알고리즘을 만들어 보아야겠다는 것이었다.


(3차원 공간좌표 위에 나타낸 RGB 색상분포)

예를 들어, 파스텔 톤의 색상에 대한 위 관점에서의 분석을 해보자면 파스텔 톤이란 원색에 흰색을 섞어 채도를 낮추고 은은한 느낌을 주는 색상이기 때문에 "R,G,B 중 하나는 최댓값(255) 혹은 이에 매우 근접한 값이고, 나머지 두 값은 255에 가까운 값" 정도로 분석해낼 수 있을 것이다. 이러한 아이디어에 대한 구체적인 확장은 조금 더 깊이 생각해 보아야 할 것 같다.

(↓ 11.17. 추가)

RGB 패턴에 관한 고찰

RGB에 관한 고찰

r,g,b 중 우리가 선택한 메인 컬러를 a, 나머지 두 컬러를 b,c라 한다.

  • a의 값을 고정한 상태에서, b/c의 값이 커지면 채도가 낮아지고(파스텔 톤), b/c의 값이 작아지면 채도가 높아진다(비비드 톤).

  • b,c의 값을 고정한 상태에서 a의 값이 커지면 명도가 높아지고, a의 값이 작아지면 명도가 낮아진다(딮톤).

  • 메인 컬러에 상관없이 r,g,b의 값이 모두 같으면, 즉 r,g,b를 각각 x,y,z 축으로 하는 3차원 좌표공간 위의 한 점이 x=y=z 위의 점일 때, 이 점이 표현하는 색깔은 무채색이며, 이를 모노톤이라고 부른다.

비비드 톤 / 파스텔 톤 / 딥 톤 / 모노 톤 각각에 해당하는 색상들을 r,g,b의 값으로 적절히 표현해 낼 수 있게 되었고, 이를 기반으로 색상 추천 알고리즘을 구체화 시켜나가면 될 것 같다.

profile
서울대학교 컴퓨터공학부 github.com/BaekGeunYoung

0개의 댓글