[Pixel to pixel] 비트 평면으로 분리 2

프로그래밍 2008/12/28 17:56 Posted by 김철호
자, 긴말 필요없이 가보죠.
연산의 차원을 줄이기 위해 흑백 이미지로 변환하였습니다.


아래쪽 두줄에 걸쳐 있는 것이 각각의 비트에 해당하는 8개의 이미지 입니다.
8th가 MSB, 1st가 LSB라고 생각하세요. MSB의 경우 원래의 이미지와 가장 많이 닮아 있습니다. 그도 그럴것이 최상위 비트가 1이면 색상값은 128이상이라는 뜻이고 0이면 색상값이 128이하라는 뜻입니다. 바로 그 경계에서 극명하게 나눠주는 것이죠. 그 아래 비트에서는 그런 나눠주는 의미는 크지 않습니다만, 어느정도 까지는 그림의 생성에 영향을 줍니다.

자, 이해를 돕기 위해 또 만들었습니다. 흑백 이미지이므로 색상값은 00000000(검정)에서 11111111(흰색)까지 존재하며, 각 자리에 해당하는 색상이 0이면 검은색, 1이면 흰색으로 칠하도록 각각의 비트 평면을 만들었습니다. 각각은 2컬러 이미지라고 할 수 있겠죠. 이 8개의 평면을 합치면 2^8=256컬러 이미지가 됩니다. 8비트죠.

전편을 보신 분은 아시겠지만, 마지막 부분에 하나의 픽셀에서 9개의 비트를 가져와서 마음대로 쓸 수 있다고 했습니다. 그렇다면, 그것은 24비트 컬러 이미지에 9비트 흑백 이미지나 인덱스 컬러 방식 또는 웹표준 컬러의 이미지를 숨겨 놓을 수 있다는 말이 됩니다.

입질이 살살 오시는지요? -_-


맨 처음 그림에서 첫줄에 4개의 사진이 있지요. 그중 첫번째 사진과 두번째 사진을 비교해보세요. 원본에 비교해봤을때 이상하다고 느끼지 못할겁니다. 상위 5비트만으로 구성된 이미지입니다. 세번째 사진은 상위 4비트로 구성된 이미지인데, 약간 색상차가 나는 것을 알 수 있습니다. 네번째 사진은 짝수 비트 평면으로만 구성된 이미지인데, 다른 이미지가 되었죠?

아직 이미지를 숨기는 것은 구현하지 않았습니다. 슬슬 구현해서 찾아뵙죠.

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

댓글을 달아 주세요