지식 게시판

RGB 색상 코드표의 원리

미레티아 2015. 11. 13. 19:41

저번에 정보 수행평가로 이미지 프로세싱으로 프로젝트 한 것을 냈는데요,

그걸 하면서 굉장히 유용한 사실을 알아내었습니다.

제가 블로그를 하면서 #000000은 검정색, #FFFFFF은 흰색이라는 것은 알았는데

나머지 원하는 색을 만들기 위해서 포토샵에서 선택한 후 코드를 읽었거든요.

그런데...굳이 그럴 필요가 없었다는...

원리만 알면 색상 코드표가 필요가 없습니다!


자, 그럼 그 원리를 알아볼까요.

먼저, 색상 코드표에서 #은 색을 나타내는 정보가 아닙니다.

#은 그냥 "옆에 6개의 숫자가 다른 것이 아니고 색을 나타내는 것이야~"

....를 의미한다 생각하시면 됩니다.

나머지 6개의 숫자가 색에 대한 정보인데

앞에 2개가 R, 중간 2개가 G, 끝에 2개가 B입니다.

아, 그런데 왜 F와 같은 문자가 있는데 숫자라고 하냐고요?

그건 16진수이기 때문입니다.

16진수는 16개의 숫자로 수를 나타냅니다.

0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F이죠.

그래서 16진수로 12이면 16+2=18이고 FF면 15*16+15=255입니다.

그리고 이 숫자들이 나타내는 RGB는 가산 혼합을 합니다.

즉, 색을 혼합하면 혼합할수록 밝아지는 빛의 색 혼합이죠.

(빛과 색의 혼합은 http://miretia.tistory.com/233을 참고하세요.)

자, 그러면 원리는 대강 이해가 가시나요?

000000은 R, G, B의 모든 색이 없는 상태이고,

FF0000은 R만 제일 많이 나온, 새빨간 색입니다.

800000은 어떨까요?

빨간색만 있는데 그 빨간색이 별로 없죠?

그래서 밤색 비슷하게 나옵니다.

잘 이해가 안 가시면 이렇게 생각하시면 됩니다.

16진수로 00은 0, FF은 255, 그 중간은 127.5인데

16진수로 80은 16*8이니까 128이죠?

그래서 800000은 000000과 FF0000의 평균이라고 생각하시면 됩니다.

노란색 만들기 위해서는 FFFF00을 해 주면 되고,

마젠타 색을 만들기 위해서는 FF00FF을 해 주변 됩니다.

노란색을 어둡게 하면 뭐가 될까...? 하고 808000을 하면 올리브색이 나옵니다.

그게 사실 우리가 딱 보자마자 "초록색이다!"하는 색은 008000정도이기 때문입니다.

00FF00은 밝은 연두색 느낌이 납니다.

이것은 인간의 눈에처 초록색을 담당하는 원추세포가 약 534nm에 제일 민감한데

그게 밝은 연두색입니다.

(어쩌면 제가 초록색을 너무 어둡게 생각하고 있을 수도 있고요.)

사실 빛의 연속스펙트럼을 보면 초록색이 아니라 밝은 연두색이 보여요.

출처: "Electromagnetic-Spectrum" by Victor Blacus - SVG version of File:Electromagnetic-Spectrum.png. Licensed under CC BY-SA 3.0 via Commons - https://commons.wikimedia.org/wiki/File:Electromagnetic-Spectrum.svg#/media/File:Electromagnetic-Spectrum.svg


아, 중요한 사실을 빼먹을 뻔했네요.

#111111이나 #222222와 같이 R, G, B색이 모두 같은 것은

검정에서 흰색까지 순차적인 회색이 나타납니다.

이건 많이 쓰니까 원리를 따져봐도 회색이지만 외우고 있어도 좋아요.

자, 그럼 퀴즈!

아래 색은 무슨 색일까요?

대강 밝은 무슨 색, 어두운 무슨 색으로 유추하시면 됩니다.

#A900CD

#0D274E

#FFA200

#2BD9E9