Main Content

이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.

이미지 유형

인덱스 이미지

인덱스 이미지는 데이터 행렬 X와 컬러맵 행렬 map으로 구성됩니다. map은 범위 [0, 1]의 부동소수점 값을 포함하는 double형 클래스로 구성된 m×3 배열입니다. map의 각 행은 하나의 색을 나타내는 빨간색, 녹색, 파란색 성분을 지정합니다. 인덱스 이미지는 픽셀 값과 컬러맵 값 간에 "직접 매핑"을 사용합니다. 각 이미지 픽셀의 색은 X의 대응값을 map에 대한 인덱스로 사용하여 결정됩니다. 따라서 X의 값은 정수여야 합니다. 값 1이 map의 첫 번째 행을, 값 2가 두 번째 행을 가리키는 식으로 진행됩니다. 다음과 같은 명령문을 사용하여 인덱스 이미지를 표시합니다.

image(X); colormap(map)

컬러맵은 대개 인덱스 이미지와 함께 저장되어, imread 함수를 사용할 때 해당 이미지와 함께 자동으로 불러옵니다. 하지만, 디폴트 컬러맵만 사용하도록 제한되어 있지 않으며, 선택하는 어떤 컬러맵이든 사용할 수 있습니다. CDataMapping 속성 설명에는 현재 매핑 유형을 변경하는 방법이 설명되어 있습니다.

다음 그림에서는 인덱스 이미지의 구조를 보여줍니다. 이미지의 픽셀은 컬러맵에 저장된 색 값을 가리키는 포인터(인덱스)인 정수로 표현됩니다.

Indexed image and inset showing the pixel index values for a selected region and the mapping of one index to a color in the colormap

이미지 행렬의 값과 컬러맵 간의 관계는 이미지 행렬의 클래스에 따라 결정됩니다. 이미지 행렬이 double형 클래스인 경우에는 값 1이 컬러맵의 첫 번째 행을, 값 2가 두 번째 행을 가리키는 식으로 진행됩니다. 이미지 행렬이 uint8형 또는 uint16형 클래스인 경우에는 값 0이 컬러맵의 첫 번째 행을, 값 1이 두 번째 행을 가리키는 식으로 진행됩니다. 그래픽스 파일 형식에서는 지원 가능한 색의 수를 극대화하기 위해 오프셋도 사용됩니다. 위에 나온 이미지에서의 이미지 행렬은 double형 클래스입니다. 오프셋이 없으므로 값 5는 컬러맵의 5번째 행을 가리킵니다.

회색조(명암) 이미지

회색조 이미지는 명암 이미지라고도 하며, 데이터 행렬 I로 표현되고 행렬의 값은 특정 범위 내의 명암을 나타냅니다. 회색조 이미지는 단일 행렬로 표현되며, 행렬의 각 요소는 하나의 이미지 픽셀에 대응됩니다. 행렬은 double형, uint8형 또는 uint16형 클래스 중 하나일 수 있습니다. 회색조 이미지는 컬러맵과 함께 저장되는 경우가 드물지만 컬러맵은 여전히 회색조 이미지를 표시하는 데 사용됩니다. 기본적으로, 회색조 이미지는 인덱스 이미지로 처리됩니다.

다음 그림은 double형의 회색조 이미지를 나타냅니다.

Grayscale image and inset showing the pixel values for a selected region

회색조 이미지를 표시하려면 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 이미지를 보여줍니다.

RGB color image and inset showing the red, green, and blue pixel values for a selected region

(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