이미지 유형
인덱스 이미지
인덱스 이미지는 데이터 행렬 X
와 컬러맵 행렬 map
으로 구성됩니다. map
은 범위 [0, 1]의 부동소수점 값을 포함하는 double
형 클래스로 구성된 m×3 배열입니다. map
의 각 행은 하나의 색을 나타내는 빨간색, 녹색, 파란색 구성요소를 지정합니다. 인덱스 이미지는 픽셀 값과 컬러맵 값 간에 "직접 매핑"을 사용합니다. 각 이미지 픽셀의 색은 X
의 대응값을 map
에 대한 인덱스로 사용하여 결정됩니다. 따라서 X
의 값은 정수여야 합니다. 값 1이 map
의 첫 번째 행을, 값 2가 두 번째 행을 가리키는 식으로 진행됩니다. 다음과 같은 명령문을 사용하여 인덱스 이미지를 표시합니다.
image(X); colormap(map)
컬러맵은 대개 인덱스 이미지와 함께 저장되어, imread
함수를 사용할 때 해당 이미지와 함께 자동으로 불러옵니다. 하지만, 디폴트 컬러맵만 사용하도록 제한되어 있지 않으며, 선택하는 어떤 컬러맵이든 사용할 수 있습니다. CDataMapping
속성 설명에는 현재 매핑 유형을 변경하는 방법이 설명되어 있습니다.
다음 그림에서는 인덱스 이미지의 구조를 보여줍니다. 이미지의 픽셀은 컬러맵에 저장된 색 값을 가리키는 포인터(인덱스)인 정수로 표현됩니다.
이미지 행렬의 값과 컬러맵 간의 관계는 이미지 행렬의 클래스에 따라 결정됩니다. 이미지 행렬이 double
형 클래스인 경우에는 값 1이 컬러맵의 첫 번째 행을, 값 2가 두 번째 행을 가리키는 식으로 진행됩니다. 이미지 행렬이 uint8
형 또는 uint16
형 클래스인 경우에는 값 0이 컬러맵의 첫 번째 행을, 값 1이 두 번째 행을 가리키는 식으로 진행됩니다. 그래픽스 파일 형식에서는 지원 가능한 색의 수를 극대화하기 위해 오프셋도 사용됩니다. 위에 나온 이미지에서의 이미지 행렬은 double
형 클래스입니다. 오프셋이 없으므로 값 5는 컬러맵의 5번째 행을 가리킵니다.
회색조(명암) 이미지
회색조 이미지는 명암 이미지라고도 하며, 데이터 행렬 I
로 표현되고 행렬의 값은 특정 범위 내의 명암을 나타냅니다. 회색조 이미지는 단일 행렬로 표현되며, 행렬의 각 요소는 하나의 이미지 픽셀에 대응됩니다. 행렬은 double
형, uint8
형 또는 uint16
형 클래스 중 하나일 수 있습니다. 회색조 이미지는 컬러맵과 함께 저장되는 경우가 드물지만 컬러맵은 여전히 회색조 이미지를 표시하는 데 사용됩니다. 기본적으로, 회색조 이미지는 인덱스 이미지로 처리됩니다.
다음 그림은 double
형의 회색조 이미지를 나타냅니다.
회색조 이미지를 표시하려면 imagesc
("image scale") 함수를 사용하십시오. 이 함수를 사용하면 명암 값의 범위를 설정할 수 있습니다. imagesc
는 전체 컬러맵을 사용하도록 이미지 데이터를 스케일링합니다. imagesc
를 2-입력값 형식으로 사용하여 회색조 이미지를 표시합니다. 예를 들어 다음과 같습니다.
imagesc(I,[0 1]); colormap(gray);
imagesc
의 두 번째 입력 인수에 원하는 농도 범위를 지정할 수 있습니다. imagesc
함수는 범위 내 첫 번째 값(보통 0)을 첫 번째 컬러맵 항목에 매핑하고 두 번째 값(보통 1)을 마지막 컬러맵 항목에 매핑하여 I
를 표시합니다. 이 사이의 값은 나머지 컬러맵 색에서 선형 분산됩니다.
일반적으로 회색조 컬러맵을 사용하여 회색조 이미지를 표시하지만 다른 컬러맵을 사용해도 됩니다. 예를 들어, 다음 명령문은 회색조 영상 I
를 파란색과 녹색 셰이딩으로 표시합니다.
imagesc(I,[0 1]); colormap(winter);
임의의 값 범위를 사용하는 행렬 A
를 회색조 이미지로 표시하려면 imagesc
를 단일 인수 형식으로 사용해야 합니다. 단일 입력 인수를 사용하는 경우 imagesc
는 데이터 행렬의 최솟값을 첫 번째 컬러맵 항목에 매핑하고 최댓값을 마지막 컬러맵 항목에 매핑합니다. 예를 들어, 다음 두 선은 동일합니다.
imagesc(A); colormap(gray) imagesc(A,[min(A(:)) max(A(:))]); colormap(gray)
RGB(트루컬러) 이미지
트루컬러 이미지라고도 하는 RGB 이미지는 m×n×3 데이터 배열로 저장됩니다. 이 데이터 배열은 각각의 개별 픽셀에 대해 빨간색, 녹색 및 파란색 색 구성요소를 정의합니다. RGB 이미지는 팔레트를 사용하지 않습니다. 각 픽셀의 색은 각 색 평면의 픽셀 위치에 저장된 빨간색, 녹색 및 파란색 농도 조합으로 결정됩니다. 그래픽스 파일 형식은 RGB 이미지를 24비트 이미지로 저장하며, 여기서 빨간색, 녹색 및 파란색 구성요소는 각각 8비트입니다. 따라서 1600만 개 색이 생성될 수 있습니다. 실제 이미지가 정확히 복제될 수 있는 수준의 정밀도를 제공하므로 "트루컬러 이미지"라는 별명이 붙여져 있습니다.
RGB MATLAB® 배열은 double
형, uint8
형, uint16
형 클래스 중 하나일 수 있습니다. double
형 클래스의 RGB 배열에서 각 색 구성요소는 0에서 1 사이의 값입니다. 색 구성요소가 (0,0,0)인 픽셀은 검은색으로 표시되며, 색 구성요소가 (1,1,1)인 픽셀은 흰색으로 표시됩니다. 3차원 데이터 배열을 따라 각 픽셀마다 세 개의 색 구성요소가 저장됩니다. 예를 들어, 픽셀 (10,5)의 빨간색, 녹색 및 파란색 색 구성요소는 각각 RGB(10,5,1)
, RGB(10,5,2)
및 RGB(10,5,3)
에 저장됩니다.
트루컬러 이미지 RGB
를 표시하려면 image
함수를 사용하십시오.
image(RGB)
다음 그림은 double
형 클래스의 RGB 이미지를 보여줍니다.
(2,3) 위치에 있는 픽셀의 색을 확인하려면 (2,3,1:3)에 저장된 RGB 3색을 살펴보십시오. (2,3,1)에 값 0.5176
이, (2,3,2)에 0.1608
이, (2,3,3)에 0.0627
이 포함되어 있다고 가정하겠습니다. 이 경우 (2,3) 위치에 있는 픽셀의 색은 다음과 같습니다.
0.5176 0.1608 0.0627