본문 바로가기
programming language/MATLAB

MATLAB 이미지 gray scale 변환

by __observer__ 2012. 6. 27.
반응형

MATLAB 은 다양한 신호처리 분야에서 사용되는데~~ 이미지나 음성과 같은 분야에서도 굉장히 다양하게 쓰입니다.

 

그 쓰임 중에서 오늘은 이미지를 gray scale 로 변환하는 방법에 대해 알아보려고 합니다.

 

일단 gray 스케일로 만들기 위해서는 회색조 변환이 어떻게 구성되는지를 알아야 하는데요~

 

이를 위해서 이미지를 표현하는 방법 중 하나인 RGB 형식에 대해 먼저 설명 드리죠.

 

RGB 는 Red, Green, Blue 로 색을 표현하는 건데요.

 

각 색에 대해 unsigned int 형으로 표현합니다. 구성에 따라 다르겠지만 보통은 8 비트를 써서 28=256 개의 레벨로 표현을 하곤 합니다.

 

unsigned int 8 비트면 0~255 까지가 되겠네요.

 

RGB 값이 다 0 일때 즉, [0 0 0] 인 경우에는 검정색이 됩니다.

 

그리고 RGB 값이 모두 최대 일 때 즉, [255 255 255] 일때는 흰색이 되죠.

 

회색조로 나타낸다는 건 RGB 값을 [0 0 0] 과 [255 255 255] 를 이은 선상의 값으로 나타낸다는 겁니다.

 

위 말을 또 다르게 표현해 보면 회색조의 RGB 값은 R=G=B 인 경우라는 게 되는데요.

 

RGB 값을 이 선상의 값으로 나타내는 공식은 다음과 같습니다.

 

0.2989 * R + 0.5870 * G + 0.1140 * B

 

이렇게 하면 grayscale 값이 되는 거죠.

 

그럼 MATLAB으로 실험을 한번 해 볼까요?

 

실험을 위한 샘플로 다음 이미지를 이용하겠습니다.

 

OriginalImage = imread('pig.JPG');

GrayImage = rgb2gray(OriginalImage); % MATLAB 내장 함수

 

figure(1), imshow(OriginalImage) % 원본 이미지

figure(2), imshow(GrayImage); % gray 이미지

 

%% 공식 이용

R=OriginalImage(:,:,1);

G=OriginalImage(:,:,2);

B=OriginalImage(:,:,3);

 

C=0.2989 * R + 0.5870 * G + 0.1140 * B ; % 공식 이용

figure(3), imshow(C) % 공식 이용 gray image

 

위 코드를 실행해 보면 다음과 같이 예쁜 회색조 돼지의 모습을 보실 수 있습니다.


반응형

댓글