Matlab을 이용한 영상처리 - 3. 비트평면과 공간 분해능

Programming/Image Processing 2010. 8. 25. 01:33


비트평면에 대해서도 이미지를 첨부할까 했지만 본인의 귀차니즘으로인해 .. -ㅅ-
글로만 정리하게 될 것 같다. 자주 사용되는 기능은 아닌것 같으니 ( 뭐 Most significant bit는 영상의 또렷함?을 강조하기위해 사용될 수도 있을거 같긴하다!)..

1. bit plane

grayscale 영상은 비트평면(bit plane)으로 분리, 2진 영상의 수열로 변환할 수가 있다.
각 화소의 그레이 값이 8비트의 2진 워드일때, 최하위 비트(0번째)는 이미지에 가장 영향을 적게 미치는, 자주 변하게 되는 값일 것이며, 최상위 비트(7번째)는 가장 큰 영향을 미치는 비트일 것이다.
- 이 말이 잘 와닿지 않는가 ?  숫자 128 을 생각해보자. 128에서 가장 영향이 큰 숫자는 당연히 최상위 10진 비트 , 1( 이 예에서 숫자 8의 자리수의 100배의 영향 ) 의 값을 가진 100의 자리다. -

grayscale 이미지 g에서 , mod를 이용해 나머지를 얻어낼 수 있으며, floor를 통해 내림효과를 낸다.
이를 조합해 최상위비트(7번째)의 비트 평변을 얻어내는 소스는 다음과 같다

g7 = mod(floor(g/128),2);



2. 공간 분해능


Line 4 : 같은 이미지를 불러왔다.
Line 6 : GrayScale화.
Line 7 : 공간분해능 
 이 부분이 공간 분해능의 Core이다. nested imresize의 형태를 취하고 있는데, 첫번째(안쪽)의 imresize는 먼저 이미지를 1/16로 축소를 한다.

이 작업을 설명하기 위해 단순화 시킨 예를 먼저 생각해보자.

W(1,1)  W(1,2)  W(1,3)  W(1,4)  ....
W(2,1)  W(2,2)  W(2,3)  W(2,4)  ....
W(3,1)  W(3,2)  W(3,3)  W(3,4)  ....
W(4,1)  W(4,2)  W(4,3)  W(4,4)  ....

위 배열은 순서쌍을 인덱스로 하여 Matrix W를 나열한 것이다.
만약 imresize(W,1/2) 를 수행하면 위 Matrix는

W(1,1)  W(1,2)  W(1,3)  W(1,4)  ....
W(2,1)  W(2,2)  W(2,3)  W(2,4)  ....
W(3,1)  W(3,2)  W(3,3)  W(3,4)  ....
W(4,1)  W(4,2)  W(4,3)  W(4,4)  ....

색깔이 칠해진 배열만을 선택하여 출력하게 된다. 4 X 4 에서 색칠한 배열은 정리하면 2 X 2 가 되니 뭐 그럭저럭 원하는 대로 축소된 셈이다.

이 이미지를 다시 imresize(W,2)를 통해 2배 확대를 하면 어떻게 되는가 ?
축소전의 W(1,1) W(1,2) 등은 복구가 불가능하다.
때문에 확대시에는

W(2,2)  W(2,2)  W(2,4)  W(2,4)  ....
W(2,2)  W(2,2)  W(2,4)  W(2,4)  ....
W(4,2)  W(4,2)  W(4,4)  W(4,4)  ....
W(4,2)  W(4,2)  W(4,4)  W(4,4)  ....

와 같이 남은 인덱스를 그 자승만큼의 수가 될 수 있도록 복사한다.
때문에 출력된 이미지는 모자이크와 같은 이미지가 된다.

Figure 1. 공간분해능 실행결과



생각보다 Blurring에 가까워 졌다 .. 왜지 ? ㅡㅡ 이렇게 하면 이론상으론 모자이크에 가까워야하는데 . .
아무튼 저 이론은 맞다. 원인을 파악하는대로 수정하겠다. (무책임..)