본문 바로가기

Programming/Python Tutorials

[PYTHON 3] Tutorials 42. Getting Individual RGB Channel (RGB 채널 분리하기)




컴퓨터에 저장된 95% 아니, 많게는 99% 이상의 이미지들은 RGB(RED, GREEN, BLUE) 의 조합에 의해 구성된 픽셀(pixel)들입니다. 이번에는 사진에서 각각의 RGB 모드를 따로 분리를 해 보도록 하겠습니다. 사진 편집 프로그램을 다뤄본 사용자라면 각종 효과를 적용시켜 본 경험이 있을텐데요. 이 채널 분리도 그와 유사한 형태로 적용이 가능합니다. 각각의 RGB 를 얼마나 적용하느냐에 따라 사진의 색감이 달라지게 되니까요.


아래는 New York 의 Time Square 의 모습입니다. 원본 이미지.


이미지 처리 모듈인 '필로우'를 불러옵니다.

원본 이미지를 열어 new_york 변수에 저장을 합니다. 그리고 해당 이미지의 모드를 확인하니 RGB 라고 친절히 알려줍니다.

이렇게 알게된 세 가지 모드인 RGB 를 따로 분리하도록 하겠습니다. new_york에 저장된 이미지를 split() 메서드로 분리를 하고, 각각을 r, g, b 에 저장을 하였습니다.

원본 이미지와 각각의 R, G, B 모드의 이미지를 확인하기 위해 show() 메서드를 적용시킵니다.

R(Red) 모드의 이미지.



G(Green) 모드의 이미지. 




B(Blue) 모드의 이미지. 



상기의 이미지를 다시 한번 원본과 비교를 해보겠습니다. 


차이점이 눈(naked eyes)으로 구분이 가시나요? 우리가 흔히 알던 RGB 색상이 아니라서 조금 당황스러운가요? 이는 원색의 색상을 생각하셨기 때문입니다. 레드, 그린, 블루 의 색상을 표현하는데 8비트를 적용하면 각각 256가지의 단계가 있습니다. 전문가들이 사용하는 10비트를 적용하자면, 각각의 컬러는 1024단계가 있다는 의미입니다. 그럼 일반적으로 8비트를 사용하였을 때 3가지 조합으로 구성할 수 있는 색상은 256*256*256 = 16,777,216 컬러 표현이 가능합니다. 전문가들이 많이 사용하는 10 비트를 적용하면 1024*1024*1024 = 1,073,741,824 컬러 구현이 가능하게 됩니다.

글이 마음에 드셨나요?

로그인 없이 누구나 가능한

 공감은 힘이 됩니다!