이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.
스칼라 볼륨 데이터의 시각화 기법
스칼라 볼륨 데이터란?
일반적인 스칼라 볼륨 데이터는 3차원 데이터 배열 및 이와 동일한 차원의 좌표 배열 3개로 구성됩니다. 좌표 배열은 각 데이터 점의 x, y, z 좌표를 지정합니다.
좌표의 단위는 데이터의 유형에 따라 다릅니다. 예를 들어, 흐름 데이터의 좌표 단위는 인치이고, 데이터 단위는 psi일 수 있습니다.
스칼라 데이터를 시각화하는 데 유용한 MATLAB® 함수가 여러 가지 있습니다.
슬라이스 평면으로 값을 색에 매핑하여 볼륨 내에서 데이터 값의 분포를 탐색할 수 있습니다. 슬라이스 평면을 임의의 각도로 놓을 수 있을 뿐 아니라 비평면 슬라이스를 사용할 수도 있습니다. (슬라이스 평면 사용 방법을 설명하는 그림을 보려면
slice
, 볼륨 슬라이스 만들기 예제, 및 맥락 표시를 위해 사용되는 슬라이스 평면을 참조하십시오.) 등가곡면을 채색하는 데 사용되는 데이터를 지정하여 색과 곡면 형태로 다양한 정보를 표시할 수 있습니다(isocolors
참조).등고선 슬라이스는 볼륨 내부의 특정 좌표에 그려지는 등고선 플롯입니다. 등고선 플롯을 사용하면 주어진 평면에서 데이터 값이 같은 위치를 확인할 수 있습니다. 예제는
contourslice
를 참조하십시오.등가곡면은
patch
그래픽스 객체의 꼭짓점과 값이 같은 점을 사용하여 생성되는 곡면입니다.
MRI 데이터 표시 방법
스칼라 데이터의 한 예로 MRI(자기 공명 영상) 데이터를 들 수 있습니다. 이 데이터는 일반적으로 인체와 같은 볼륨을 잘라서 취한 여러 슬라이스 평면을 포함합니다. MATLAB은 인체 두부의 영상 슬라이스 27개로 구성된 MRI 데이터 세트를 포함합니다. 이 예제에서는 MRI 데이터에 적용되는 다음과 같은 기법을 설명합니다.
두부를 자르는 슬라이스를 나타내는 일련의 2차원 영상
내부의 단면을 보여주는 등가단면을 포함한 등가곡면
데이터 형식 변경하기
MRI 데이터 D
는 128×128×1×27 배열로 저장되어 있습니다. 세 번째 배열 차원은 일반적으로 영상 색 데이터에 사용됩니다. 하지만 이는 인덱스 영상이므로(컬러맵 map
도 불러옴), squeeze
명령을 사용하여 제거할 수 있는 세 번째 차원에 아무런 정보가 없습니다. 그 결과로 128×128×27 배열이 생성됩니다.
첫 번째 단계는 데이터를 불러와 데이터 배열을 4차원에서 3차원으로 변환하는 것입니다.
load mri D = squeeze(D);
MRI 데이터의 영상 표시하기
MRI 영상 중 하나를 표시하려면 image
명령을 사용하십시오.
figure colormap(map) image_num = 8; image(D(:,:,image_num)) axis image
이 예제의 다음 부분에 사용하도록 x축 제한과 y축 제한을 저장합니다.
x = xlim; y = ylim;
2차원 등고선 슬라이스 표시하기
MRI 데이터는 3차원 객체를 잘라 점진적으로 취한 슬라이스의 모음이므로, MRI 데이터를 볼륨 데이터로 시각화하십시오. contourslice
를 사용하여 볼륨 슬라이스의 등고선 플롯을 표시할 수 있습니다. 이 예제의 첫 부분에서 만든 영상과 방향 및 크기가 같은 등고선 플롯을 만들어 보겠습니다.
세부 정보의 가시성을 개선하기 위해, 이 등고선 플롯은 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
명령을 사용해 보십시오. 이에 대한 예제를 보려면 isocaps
및 subvolume
함수 도움말 페이지를 참조하십시오.