본문 바로가기
CAMERA

왜 사진을 하며 비트맵을 알아야 하는가-(1)

by 선배/마루토스 2019. 12. 17.
728x90

 

일전에 제가 4연작이라는 나름 대작 연속 기획 포스팅으로 사진을 위한 올바른 후보정의 공부 순서에 대해 적은적이 있었는데

저는 그 포스팅들을 통해 비트맵의 본질을 철저하게 공부하시라고 당부드린 바 있습니다.

 

이후 계속적으로 왜 비트맵의 이론적인 부분을 공부해야 하며 어떻게 공부해야 하는가에 대한 질문이 끊이질 않아

별도의 포스팅으로 이 부분을 한번 다뤄보고자 합니다.

어쩌면 지금 쓰면서도 엄청나게 길어질 수도 있다는 생각이 들기도 하고...반대로 아주 짧게 끝낼 수도 있다는 생각도 드네요.

어떻게 될런지는 다 쓴다음에 보면 알겠죠 ㅎㅎ

 

1. 비트맵이란 무엇인가?

영어로 쓰면 bitmap입니다. 정보단위를 나타내는 bit에 지도를 뜻하는 map을 붙여 이렇게 쓰는군요.

말 그대로, 비트맵이란 정보지도예요. 색이라는 정보를 가로좌표x,세로좌표y에 표시하라는 정보지도입니다.

순수한 비트맵에 대한 의미는 이게 다예요. 와 간단하네요. ㅋㅋ

 

컴퓨터라는 디지털기반의 기기에서 데이터로서 이미지를 다룬다는 것은 본디 엄청나게 쉽지 않은 일이었습니다.

초기에는 그래서 텍스트를 응용한 도형정의라는 수단도 쓰였었고(지금도 쓰여요. 특수폰트의 형태로)

움직이는 이미지를 만들어 내기 위해 소위 스프라이트 라는 수법이 대표적으로 사용되기도 했었는데 이런건 뭐 여담이고...

여튼 디지털에서 이미지를 나타내기 위해서는 2가지 방법이 주어집니다. 벡터와 비트맵이죠.

벡터는 도형을 방정식과 수식으로 그려냅니다. 예를 들면 원을 하나 그린다고 쳐보죠.

점 α를 중심좌표로 하고 실수 r을 반지름으로 하는 원을 그릴때, 우리는 컴퓨터에게 대충 이렇게 명령합니다.

| z - α | = r 2

프로그램언어에 따라 다른 표현을 하게 되겠지만 일단 기본은 이거예요. 그리고 α에 해당하는 좌표를 바꿈으로서 원의 중심을 이동시킬 수 있고

실수 r, 즉 반지름에 해당하는 값을 바꿈으로서 원의 크기를 자유자재로 조정할 수 있습니다.

방정식으로 이뤄졌기 때문에 이 원은 원의 크기를 아주 작게 해도 원이며 아주 크게 해도 원이고 그 원의 테두리를 표현하는 선의 굵기 역시 굵게도 얇게도 일정하게도 할 수 있습니다.

 

문제는 이러한 벡터방식의 이미지표현은 복잡미묘한 자연도형...다시말해 도저히 방정식과 수식으로 나타낼 수 없는 이미지는 그려낼 방법이 없다는 겁니다.

그래서 학자들이 생각해 낸 또 다른 방법이 바로 비트맵입니다.

x좌표 y좌표...다시말해 픽셀의 위치를 지정하고, 그 픽셀에 대한 색정보를 지정하고, 이를 반복해 일정넓이의 xy픽셀집합면적에 대한 이미지지도를 생각해낸거죠.

이것이 비트맵입니다. 순수한.

하지만 비트맵에도 문제는 있으니.....벡터와는 달리 비트맵은 맵의 크기가 작을수록 안에 담고있는 정보량이 작아 화질이 개떡이 되게 되어있고

확대 축소를 해도 픽셀단위로 해야 하기 때문에 이미지의 퀄리티에 심각한 영향을 끼치게 되며 무엇보다도 xy면적이 넓어지면 넓어질수록, 그리고

각 픽셀에 담는 색정보의 용량을 늘리면 늘릴수록 용량이 한없이 늘어난다는 겁니다.

 

어쨌거나, 우리가 찍는 사진은 절대 벡터이미지가 아닌, 비트맵 이미지를 근간으로 할 수 밖에 없다는건 이제 이해를 하셨을 겁니다.

이게 비트맵에 대해 사진사가 이해해야 하는 첫번째이며, 비트맵 이미지의 가장 순수한 특성이 이해해야 하는 두번째입니다.

 

이제 다음단계로 넘어가보죠.

왜 우리가 사진을 하면서 비트맵을 더 잘 알아야만 하는가....뭐 뻔합니다. 우리가 찍는 사진은 방금 설명했듯이 모든것이 비트맵이미지예요.

x좌표, y좌표, 그리고 색정보(RGB)...그리고 우리가 어떤 사진을 후보정한다는것은 보통 이 x좌표 y좌표 그리고 RGB색정보중 무언가를 건드림으로서

이미지를 우리가 원하는 형태로 바꾸는 행위를 말합니다. 최소한 자기가 무엇을 어떻게 건드려야 원하는대로 될지 예측하기 위한 가장 기본이 비트맵을 아는거란 소리죠.

 

자 이제 좌표, 그리고 "맵"에 해당하는 부분은 얼추 이해를 하셨을 테니 이번엔 "비트" 즉 정보에 대한 이야기를 해봅시다.

이 정보는 무엇에 대한 정보라고요? 네 색에 대한 정보입니다. 그것도 붉은색, 초록색, 파란색의 3색에 대한 정보요.

왜 다른색도 아니고 이 3가지 색이냐 하시는 분은 이 포스트 그만 읽고, 가서 빛의 삼원색 색의 삼원색 나와있는 초등학교 미술교과서부터 다시 읽고 돌아오시기 바랍니다.

저 그렇게까지 친절한 강사는 아니거든요. (.......)

 

여튼 결론만 말하면 대충 이 3색에 대한 정보를 합함으로서 우리는 얼추 우리가 인식하는 거의 모든 색을 표현 할 수 있게 됩니다.

각각의 색에 16진수 FF 만큼의 영역을 할당하는 경우 우리는 8비트 컬러라고 말합니다. 이때 우리는 R256xG256xB256 해서 총 1677만7216색을 표현할 수 있습니다.

각각의 색에 16진수 FF FF만큼의 영역을 할당하는 경우 우리는 16비트 컬러라고 말합니다. 이때 우리는 R65536xG65536xB65536해서 총 281조4749억7671만0656색을 표현할 수 있습니다.

각각의 색에 16진수 FF FF FF FF만큼의 영역을 할당하는 경우 우리는 32비트 컬러라고 말합니다. 이때 우리는....관둡시다. (.........)

 

얼핏 생각하면 우왕 비트수가 높을수록 킹왕짱이네!! 라고 생각하게 되겠지만 문제는 그리 단순하지 않습니다.

xy좌표가 각각 2배 늘어나면 용량은 결과적으로 4배 늘어나는 비트맵에서, 색정보의 총량이 2배 늘어나면 당연히 용량도 2배 늘어나게 됩니다. 4배 늘어나면 당연히 4배 늘어나고요.

간단히 예를 들어보자면 1000x1000픽셀의 넓이를 지니는 비트맵이미지가 있을때 8비트만큼의 색정보만 담는다면 이 이미지의 용량은 2.8메가쯤 됩니다.

16비트를 담으면? 5.6메가로 늘어가고 32비트를 담으면? 11.2메가로 늘어나겠군요.

오오 비트맵 공부 조금했더니 이젠 사진 후보정하며 대략의 용량계산도 어느새 가능해진 자신을 발견하고 계십니다 여러분!

 

이게 이미지가 작으니까 별문제 없이 느끼실텐데, 최근 잘나가는 고급DSLR중 한 2천만화소 넘는걸로 계산해볼까요?

마침 제 5d mark2가 2천만화소 조금 넘네요. 이게 x가 5616이고 y가 3744입니다. 이놈을 그냥 8비트jpg로 찍어 가져오면 장당 용량은 짤없이 60.2메가가 나와요.

잠깐, 여기서 "어? 내 오두막 jpg는 10메가도 안나오는데 니 왜 헛소리하노?"라고 하시는 분들 틀림없이 계실겁니다.

.......휴. 그래서 제가 지금 이렇게 힘들고 길게 비트맵이미지에 대한 설명을 하고 앉아있는겁니다.

그런 의문을 가지는 자세 자체는 훌륭하시다 하겠으나, 그런 의문을 가지시는 자체가 이미 여러분의 비트맵에 대한 이해도는 바닥수준에 머물러 있다는 반증이 되거든요.

왜 여러분의 jpg와 제 jpg가 용량이 다른지는 2부나 3부에서 설명드리기로 하고 지금은 일단 그냥 넘어가주시기 바랍니다.

이거 설명하려면 압축프로토콜에 대해서도 다루지 않으면 안되는데 디지털 후보정 이야기 하다 압축프로토콜 설명한다는것도 참 넌센스로 느껴지는군요.....;

 

여튼 그래서 5d mark2 8비트 jpg가 한장에 60.2메가였죠. 이걸 16비트로 작업한다면 장당 120.4메가가 되고 32비트로 작업한다면 장당 240.8메가가 됩니다.

사진 10장만 불러다 작업해도 2.4기가의 용량을 잡아먹는다는 소리가 됩니다. 이게 요즘 pc가 좋아져서 그렇지....몇년전만해도 일반pc로는 도저히 작업이 가능한 영역이 아니여요.

보시다시피 비트수가 높을수록 정보량이 많아 좋을것 같지만 실은 엄청난 용량이라는 부작용이 뒤따른다는것이 첫번째 문제점이고,

두번째 문제점은 간단해요. 여러분이 실제로는 보질 못한다는 겁니다. 높은 비트수의 컬러를.

 

여러분이 쓰시는 거의 모든 모니터는 8비트 기준입니다. 아주 드물게 10비트 패널 LCD같은게 존재하긴 하지만 일단 설명 쉽게 하기 위해 제껴두고..

여러분이 보시는 모니터 자체가 256x256x256의 1677만 컬러가 한계스펙입니다.

여기에 281조4749억색을 가져다 끼얹어본들 표현될 리가 없습니다. 그냥 똑같이보여요. 용량은 두배 처먹고서.....이게 두번째문제점입니다.

물론 여기엔 인화출력의 경우도 포함되고요.

 

그래서 절대다수의 경우, 8비트 이미지를 사진의 기본으로 삼는 것입니다.

그리고 현재 16비트로 찍어주는 카메라나 32비트로 찍어주는 카메라는 일반인이 구매가능한 영역에는 존재하지 않습니다. 아예.

근시일안에 16비트촬영을 가능케 해주는 일반 콘슈머용 카메라가 나올 계획은 있을런지 모르지만 현재로선 그렇습니다.

RAW라고 하는 고급파일조차도 12비트~14비트를 그 한계로 하고 있을 정도예요.

RAw에 대해서는 또 다음에 좀 더 자세히 이야기 하도록....아니 한적이 있는것같은데 -_-;; 여튼 그러기로 하고

8비트라는건 결국 R256 G256 B256....다시말해 각 색의 표현한도가 256에 그친다는 것을 의미합니다.

아무리 밝아도 255,255,255보다 밝아질 수 없고 아무리 어두워져도 0,0,0보다 어두워질수 없습니다.

이개념을 제대로 아시는 분이라면 소위 말하는 DR-다이나믹레인지-라는게 왜 존재하는지 전혀 공부하지 않고도 저절로 깨달으실 것이며

한발 더 나아가 계조-그라데이션-의 개념 역시 동시에 이해가 가시게 되어있습니다.

그러나 이 개념을 모르고, 다시말해 비트맵을 공부를 안해놓으면....허구헌날 들어도 DR이 뭐고 계조랑 뭐가 다른지

알 수가 없습니다. 외우려 들면 들수록 몰라요. 이해를 하면 되는데 그걸 안하니 이렇습니다.

그래서 우리 사진사들은 비트맵을 공부해야 하는 겁니다.

 

너무 길어지는듯해서 일단 끊고.....한동안은 이 연작으로 포스팅 가도록 하겠습니다.

비트맵에 대해 알려달라는 질문은 너무 많이 들어오는데 정작 사진에 한정지어 비트맵을 제대로 설명해주는 책이 그닥 없다보니

이런걸 결국 쓰게 되는 상황에까지 놓이게 되는군요. 저 스스로도 어이가 좀 없습니다. -_-;;

아무 참고서적없이 머리속에 있는대로 갈겨쓰는거라 중간중간 오류가 있을 수 있는데

지적해주시면 바로바로 수정하겠습니다.

 

자 여튼 다음 포스팅도 서비스 서비스~ (.......)