위의 이미지는 3차원의 RGB컬러 데이터 (세로픽셀 x 가로픽셀 x 색상채널: 4500 x 6000 x 3)를 나타내고,
색상채널은 R(빨강색) G(초록색) B(파랑색) 순서의 데이터를 표현합니다.
위 이미지는 본 블로그 맨밑 출처 1에 가셔서 다운로드 받을 수 있습니다.
위의 대상 이미지가 이미 workspace에 "img" 라는 변수에 import 되어 있다고 가정합니다.
( 이미지 파일의 import는 본 블로그의 "[MATLAB 영상처리 기초 1] 이미지 파일 불러오기" 참조 )
img = imread('NCI-jdfn7Z03Qa4.jpg');
이제는 "img" 변수에 담긴 3차원 컬러 데이터를 각각의 색상채널로 분리하고서 화면에 출력을
시켜봅시다. 단, 색상채널별로 분리된 각 이미지는 2차원 데이터 입니다.
컬러 이미지 데이터의 3번째 차원에서 값 1, 2, 3은 각각 빨강, 초록, 파란색 채널을 뜻하며
각 채널을 분리하여 개별적으로 변수에 저장하기 위해 reshape( ) 함수를 사용합니다.
reshape( ) 함수는 입력 데이터 array를 지정된 요소로써 rearranging을 수행하는 명령어 입니다.
즉, 밑의 코드에서 보듯이 3차원의 컬러 이미지 데이터 "img" 에서 색상채널별로 indexing 한 후
같은 크기의 높이, 너비를 갖는 2차원의 데이터로써 rearranging 함과 동시에 새로운 변수에
지정하였습니다.
reshape( ) 명령어를 3번 반복해서 RGB채널을 분리하는것은 불편하니 밑의 주석처리된 'alternative way'
의 코드와 같이 imsplit( ) 함수를 이용하는 방법도 있습니다. 이 방법이 직관적이며 적은수의 코드를
사용하므로 imsplit( ) 명령어 사용을 추천 드립니다.
img = imread('NCI-jdfn7Z03Qa4.jpg');
img_size = size(img); % img_size: 4500, 6000, 3
img_r = reshape(img(:, :, 1), [img_size(1), img_size(2)]); % red channel
img_g = reshape(img(:, :, 2), [img_size(1), img_size(2)]); % green channel
img_b = reshape(img(:, :, 3), [img_size(1), img_size(2)]); % blue channel
% an alternative way (recommendation)
% [img_r,img_g,img_b] = imsplit(img);
figure; % all image is shown in a figure
subplot(2, 2, 1); imshow(img); title('Original'); % showing the original image
subplot(2, 2, 2); imshow(img_r); title('Red channel'); % red channel
subplot(2, 2, 3); imshow(img_g); title('Green channel'); % green channel
subplot(2, 2, 4); imshow(img_b); title('Blue channel'); % blue channel
색상채널별로 분리된 각각의 이미지에서 cell(세포)의 영역을 본다면, 3가지 색상으로 염색된
부분의 형태적 특징을 쉽게 관찰할 수 있습니다. 예를들어, cell(세포)의 윤곽이나 cell의 내, 외부에
분포한 어떠한 것을 이미지로부터 알아낼 수 있습니다.
이와같이 이미지 분석시 특정 색상채널의 결과에 가중치를 두어 데이터를 분석하는 경우가 많습니다.
위의 색상별로 분리된 이미지에서 바탕이 되는 배경은 검은색으로 보이지만 실제로도 픽셀값 0을 갖는
검은색일까? 그리고 3차원 컬러 이미지에서 2차원의 gray scale 이미지로 변환할 수 있을까?
이미지에서 cell(세포)을 나타내는 픽셀값들의 분포는 어떠할까?
이에대한 답은 다음 글인 "[MATLAB 영상처리 기초 3] 이미지의 픽셀값 다루기" 등을 참조 바랍니다.
위의 코드 중 이미지를 보여주는 imshow() 함수는 다양하게 활용할 수 있는 전문적인 명령어이므로
반드시 MATLAB의 help 메뉴 혹은 구글링에서 활용법을 참조 하시고,
활용중 문제를 겪는다면 MATLAB Answers 에서 검색하시길 강력하게 추천합니다.
출처1: https://unsplash.com/photos/jdfn7Z03Qa4
사진 작가: National Cancer Institute, Unsplash
Cells from cervical cancer – Splash에서 National Cancer Institute의 이 사진 다운로드
unsplash.com
Published on September 7, 2021.6 Free to use under the Unsplash License