이 페이지의 최신 내용은 아직 번역되지 않았습니다. 최신 내용은 영문으로 볼 수 있습니다.

이미지 유형

인덱스 이미지

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

image(X); colormap(map)

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

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

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

참고

Windows® 플랫폼에서 painters 렌더러를 사용하는 경우 인덱스 이미지를 표시하려면 256색만 사용해야 합니다. painters 알고리즘이 Windows 256색 팔레트를 사용하기 때문에 이보다 큰 컬러맵을 사용하면 그래픽스 드라이버와 그래픽스 하드웨어가 각기 다르게 처리하도록 인식되어 예기치 않은 색이 표시될 수 있습니다. 이 문제를 해결하려면 ZbufferOpenGL 중 적절한 렌더러를 사용하십시오.

회색조(명암) 이미지

회색조 이미지는 명암 이미지라고도 하며, 데이터 행렬 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 이미지는 mxnx3 데이터 배열로 저장됩니다. 이 데이터 배열은 각각의 개별 픽셀에 대해 빨간색, 녹색 및 파란색 색 구성요소를 정의합니다. 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