Main Content

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

스칼라 볼륨 데이터의 시각화 기법

스칼라 볼륨 데이터란?

일반적인 스칼라 볼륨 데이터는 3차원 데이터 배열 및 이와 동일한 차원의 좌표 배열 3개로 구성됩니다. 좌표 배열은 각 데이터 점의 x, y, z 좌표를 지정합니다.

좌표의 단위는 데이터의 유형에 따라 다릅니다. 예를 들어, 흐름 데이터의 좌표 단위는 인치이고, 데이터 단위는 psi일 수 있습니다.

스칼라 데이터를 시각화하는 데 유용한 MATLAB® 함수가 여러 가지 있습니다.

  • 슬라이스 평면으로 값을 색에 매핑하여 볼륨 내에서 데이터 값의 분포를 탐색할 수 있습니다. 슬라이스 평면을 임의의 각도로 놓을 수 있을 뿐 아니라 비평면 슬라이스를 사용할 수도 있습니다. (슬라이스 평면 사용 방법을 설명하는 그림을 보려면 slice, 볼륨 슬라이스 만들기 예제, 및 맥락 표시를 위해 사용되는 슬라이스 평면을 참조하십시오.) 등가곡면을 채색하는 데 사용되는 데이터를 지정하여 색과 곡면 형태로 다양한 정보를 표시할 수 있습니다(isocolors 참조).

  • 등고선 슬라이스는 볼륨 내부의 특정 좌표에 그려지는 등고선 플롯입니다. 등고선 플롯을 사용하면 주어진 평면에서 데이터 값이 같은 위치를 확인할 수 있습니다. 예제는 contourslice를 참조하십시오.

  • 등가곡면은 patch 그래픽스 객체의 꼭짓점과 값이 같은 점을 사용하여 생성되는 곡면입니다.

MRI 데이터 표시 방법

스칼라 데이터의 한 예로 MRI(자기 공명 영상) 데이터를 들 수 있습니다. 이 데이터는 일반적으로 인체와 같은 볼륨을 잘라서 취한 여러 슬라이스 평면을 포함합니다. MATLAB은 인체 두부의 영상 슬라이스 27개로 구성된 MRI 데이터 세트를 포함합니다. 이 예제에서는 MRI 데이터에 적용되는 다음과 같은 기법을 설명합니다.

데이터 형식 변경하기

MRI 데이터 D는 128×128×1×27 배열로 저장되어 있습니다. 세 번째 배열 차원은 일반적으로 영상 색 데이터에 사용됩니다. 하지만 이는 인덱스 영상이므로(컬러맵 map도 불러옴), squeeze 명령을 사용하여 제거할 수 있는 세 번째 차원에 아무런 정보가 없습니다. 그 결과로 128×128×27 배열이 생성됩니다.

첫 번째 단계는 데이터를 불러와 데이터 배열을 4차원에서 3차원으로 변환하는 것입니다.

load mri
D = squeeze(D);

MRI 데이터의 영상 표시하기

MRI 영상 중 하나를 표시하려면 image 명령을 사용하십시오.

  • 데이터와 함께 불러오는 MRI 컬러맵을 사용하는 새 figure를 만듭니다.

  • 데이터 배열의 요소를 참조하여 8번째 영상의 데이터를 가져옵니다.

  • axis 스케일링을 조정합니다.

figure
colormap(map)
image_num = 8;
image(D(:,:,image_num))
axis image

이 예제의 다음 부분에 사용하도록 x축 제한과 y축 제한을 저장합니다.

x = xlim;
y = ylim;

2차원 등고선 슬라이스 표시하기

MRI 데이터는 3차원 객체를 잘라 점진적으로 취한 슬라이스의 모음이므로, MRI 데이터를 볼륨 데이터로 시각화하십시오. contourslice를 사용하여 볼륨 슬라이스의 등고선 플롯을 표시할 수 있습니다. 이 예제의 첫 부분에서 만든 영상과 방향 및 크기가 같은 등고선 플롯을 만들어 보겠습니다.

  • y축 방향(axis)을 조정합니다.

  • 제한(xlim, ylim)을 설정합니다.

  • 데이터 종횡비(daspect)를 설정합니다.

세부 정보의 가시성을 개선하기 위해, 이 등고선 플롯은 jet 컬러맵을 사용합니다. brighten 함수는 색 값의 밝기를 감소시킵니다.

cm = brighten(jet(length(map)),-.5);
figure
colormap(cm)
contourslice(D,[],[],image_num)
axis ij
xlim(x)
ylim(y)
daspect([1,1,1])

3차원 등고선 슬라이스 표시하기

2차원 객체인 영상과는 달리, 등고선 슬라이스는 어떤 방향으로든 표시할 수 있는 3차원 객체입니다. 예를 들어, 3차원 보기에서 등고선 슬라이스를 4개 표시하는 것이 가능합니다.

figure
colormap(cm)
contourslice(D,[],[],[1,12,19,27],8);
view(3);
axis tight

MRI 데이터에 등가곡면 적용하기

등가곡면을 사용하여 볼륨의 전체 구조를 표시할 수 있습니다. 이 기법은 등가단면과 결합하면 등가곡면의 내부에 있는 데이터에 대한 정보를 표시할 수 있습니다.

먼저, smooth3으로 데이터를 평활화한 다음 isosurface를 사용하여 등가데이터를 계산합니다. patch를 사용하여 등가단면에 대해 원본 회색조 컬러맵을 사용하는 Figure에 이 데이터를 표시합니다.

figure
colormap(map)
Ds = smooth3(D);
hiso = patch(isosurface(Ds,5),...
   'FaceColor',[1,.75,.65],...
   'EdgeColor','none');
   isonormals(Ds,hiso)

isonormals 함수는 평활화된 데이터에서 얻은 꼭짓점 법선을 사용하여 등가곡면을 렌더링하여 등가곡면의 품질을 개선합니다. 등가곡면은 단색을 사용하여 등가값을 나타냅니다.

등가단면 추가로 절단된 곡면 표시하기

isocaps를 사용하여 등가곡면과 동일한 등가값(5)에 표시되는 다른 패치의 데이터를 계산합니다. 평활화되지 않은 데이터(D)를 사용하여 내부의 세부 정보를 표시합니다. 이것은 두부 상단부를 슬라이스한 모습으로 볼 수 있습니다. 최종 보기에서는 하부의 등가단면이 보이지 않습니다.

hcap = patch(isocaps(D,5),...
   'FaceColor','interp',...
   'EdgeColor','none');

보기 정의하기

보기를 정의하고 종횡비를 설정합니다(view, axis, daspect).

view(35,30) 
axis tight 
daspect([1,1,.4])

조명 추가하기

조명을 추가하고, 더 부드러운 조명을 생성하는 볼륨 데이터의 기울기를 기준으로 곡면 법선을 다시 계산합니다(camlight, lighting, isonormals). 등가단면의 AmbientStrength 속성값을 증가시켜 등가곡면에 영향을 주지 않고 색을 밝게 합니다. 정반사광의 색이 등가곡면의 색과 더 가까워지도록 등가곡면의 SpecularColorReflectance를 설정한 다음, 정반사 지점의 크기를 줄이도록 SpecularExponent를 설정합니다.

lightangle(45,30);
lighting gouraud
hcap.AmbientStrength = 0.6;
hiso.SpecularColorReflectance = 0;
hiso.SpecularExponent = 50;

등가단면과 등가곡면을 결합하여 MRI 데이터를 시각화한 모습은 다음과 같습니다.

등가단면은 보간 면 색 채색을 사용합니다. 즉, Figure의 컬러맵이 패치의 색을 결정됩니다. 이 예제에서는 데이터와 함께 제공되는 컬러맵을 사용합니다.

다른 데이터 값에서 등가단면을 표시하려면 등가곡면 값을 변경하거나 subvolume 명령을 사용해 보십시오. 이에 대한 예제를 보려면 isocapssubvolume 함수 도움말 페이지를 참조하십시오.