728x90
1. 개요
입력된 원본 이미지의 Painting 작업을 위해서는 Mask 용 이미지데이터가 필요하다. 이를 위해 원본 이미지에 맞는 Painting Mask 용 이미지 데이터를 생성하고 임의의 영역에 대한 초기값을 입력하는 것을 알아본다.
2. Painting Source 만들기
Masking 용으로 사용되는 이미지는 Compoenent가 1이며 unsigned char 타입의 scalar type을 갖는다.
원본이미지의 Spacing, Dimension, Origin만 참고하여 새로운 이미지 데이터를 만들면 된다.
public void CreatePaintingSourceImageData()
{
paintData = vtkImageData.New();
paintData.SetOrigin(0, 0, 0);
paintData.SetSpacing(simData.ImageData.GetSpacing().ToIntPtr());
paintData.SetDimensions(simData.ImageData.GetDimensions().ToIntPtr());
paintData.AllocateScalars((int)VtkDataType.VTK_UNSIGNED_CHAR, 1);
var dims = paintData.GetDimensions();
var scalarSize = paintData.GetScalarSize();
var compSize = paintData.GetNumberOfScalarComponents();
var imgByteSize = (dims[0] * dims[1] * dims[2] * compSize * scalarSize);
// 초기 값을 0으로 지정한다.
MarshalExtends.MemorySet(paintData.GetScalarPointer(), 0, imgByteSize);
// 테스트용으로 일부 영역의 값을 지정한다.
var roiExt = new int[] { 0, 200, 50, 150, 0, 50 };
VtkImageUtils.SetColorForExtent(paintData, roiExt, new byte[]{255});
}
728x90
728x90