[Pixel to pixel] 색상 변환 RGB분리

프로그래밍 2008/12/20 02:22 Posted by 김철호
재밌는 시간이로군요.

대상 그림의 픽셀값을 읽어서 여러가지 변환을 취합니다.


한 가지씩 살펴보죠.

RGB분리
대상 그림에서 R, G, B 각각의 영역만을 추출한것 입니다.
픽셀 값은 RGB각각 8비트씩 할애되어 16,777,216 (천육백칠십칠만이백육)가지의 색을 나타낼 수 있지요.
만일, R요소만 뽑아내려면, (R,G,B)에서 G와 B의 값을 0으로 해줍니다.

흰색은 RGB비트로 나타내자면 (255, 255, 255)죠.
이중 R요소를 제외한 G, B를 0으로 치환하면 결과적으로 (255, 0, 0)이 되고 100% 빨간색이 됩니다.
만일, 어떤 픽셀이 (0, 0, 0) 즉, 검은색이라고 한다면 R요소가 0이므로 최종적으로 검은색이 되고, 100% 파란색이나 100% 녹색의 경우 또는 빨간색 요소가 아예없는 색 또한 검은색으로 나옵니다.
녹색과 파란색에 대해서는 빨간색과 동일한 원리로 분리하게 됩니다.


자, 그럼 이게 무슨 의미가 있느냐 하는 거죠.
여러가지로 사용될 수 있습니다.
여러분도 아시겠지만, 빛의 삼원색이라고 해서 RGB는 가산혼합 이지요.
컬러 모니터나 TV에서 화소가 RGB로 되어 있으므로, 이미지(모든 정보)를 표시할때 내부에서 RGB로 분리할 필요가 있겠죠.
그 밖에도 영상처리시에 각 색상별 레벨이 필요할때가 있겠고요.

이것은 그래픽 프로그램에서도 분리가 가능한데요.

펼쳐두기..


여튼, 이로써 분리와 혼합은 증명된 셈입니다.


여기서 RGB map이라는게 등장하는데요.
저도 잘 모르지만 대충 알 수 있을 것 같습니다.
예를 들어, 빨간색만 사용하는 이미지의 경우에 녹색과 파란색은 모두 0이므로 아예 기록하지 않고, 해당 이미지가 빨간색 요소만 가지고 있다고 알고 있다면 저장 공간은 훨씬 줄어들게 됩니다.
예를 들어 어떤 픽셀이 (255, 0, 0)라는 색상값을 가지고 있다고 해보죠.
그러면, 11111111 00000000 00000000 이라는 비트가 소요될겁니다.
여기서 00000000 00000000 은 그 어떤 화소라도 동일하게 붙으므로 과감하게 지우고, 이것이 빨간색만을 기술하는 그림이라고 인지하는 것이죠.
그렇게 해서 아래와 같은 RGB map이 만들어 집니다.


즉, Red map에서 흰색으로 갈수록 빨간색이 더 진해지고, 검은색으로 갈 수록 탁해진다고 보면 됩니다.

이것도 그래픽 프로그램에서 얼마든지 분리와 혼합이 가능합니다.

펼쳐두기..


이것으로 RGB 맵에 대한 간단한 설명까지 마쳤네요.
충분히 재미를 느낄 수 있는 주제라고 생각합니다.

오늘은 늦었으니 이만 줄이고, 내일 또 다른 것을 가지고 이야기를 해보겠습니다.

http://blog.kimchulho.com/trackback/224 관련글 쓰기

댓글을 달아 주세요

  1. BlogIcon 쿠나 2008/12/20 20:21  댓글주소  수정/삭제  댓글쓰기

    재미있는 글 잘 읽었습니다..만 아직 저에게는 조금 어려운 내용이로군요 ㅠㅠ.
    다름에 API에서 GDI 프로그래밍 관련 부분을 연습할 때 한번 더 참고해야겠습니다 :D

    • BlogIcon 김철호 2008/12/21 02:30  댓글주소  수정/삭제

      이미지 속에 다른 비밀 이미지나 메시지를 기록하는 것도 있는데, 아마 흥미가 있으실듯. 여튼 그건 나중에 올려보죠.