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
위 코드를 실행해 보면 다음과 같이 예쁜 회색조 돼지의 모습을 보실 수 있습니다.
'programming language > MATLAB' 카테고리의 다른 글
MATLAB persistent 주의 할 점 (2) | 2012.07.03 |
---|---|
MATLAB 파일이름 다룰때 유용한 함수들 fileparts, fullfile, filesep (0) | 2012.07.01 |
MATLAB 그래프 자동 업데이트 linkdata (0) | 2012.06.30 |
MATLAB assert() 함수 (0) | 2012.06.28 |
MATLAB 축에 날짜 표시하기 datetick() (2) | 2012.06.20 |
MATLAB 윈도우에서의 파일 쓰기 줄 바꿈 (8) | 2012.06.17 |
MATLAB log 저장하기 diary (0) | 2012.06.16 |
MATLAB Harmonographs (0) | 2012.06.11 |
댓글