【VTK图像处理】

VTK: Image Processing & Visualization图像处理和显示概述

    • 前言
    • 1.手动创建vtkImageData
    • 2.数据二次采样 Subsampling Image Data
    • 3.包装向量数据,形成图片
    • 4.图片显示
    • 5.图片来源
    • 6.图片处理

前言

VTK的图像数据存储在vtkImageData类中。vtkImageData数据由体积元素voxel (vtkVoxel) 或者像素单元 pixel (vtkPixel) cell组成。

vtkImageData数据是由dimensions(尺寸—轴上体积元素或者像素的数量),spacing(间隔),origin(原点).
【VTK图像处理】_第1张图片
VTK的图像处理一般分为三种:图像处理,图形抽取,和直接渲染。它们的输入输出如下图:
VTK图像处理分类

1.手动创建vtkImageData

1.已有数据Data,创建vtkImageData

C++//Step1:创建数组指向数据
vtkUnsignedCharArray *array = vtkUnsignedCharArray::New();
array->SetArray( data, size[0]*size[1]*size[2], 1);
//Step2:创建vtkImageData,并指向数组
imageData = vtkImageData::New(); 
imageData->GetPointData()->SetScalars(array); 
imageData->SetDimensions(size); 
imageData->SetScalarType(VTK_UNSIGNED_CHAR); //类型与数组一直
imageData->SetSpacing(1.0, 1.0, 1.0 ); 
imageData->SetOrigin(0.0, 0.0, 0.0 );

2.直接用vtkImageData创建数据

C++
// Create the image data
 vtkImageData *id = vtkImageData::New();
 id->SetDimensions(10,25,100);
 id->SetScalarTypeToUnsignedShort();
 id->SetNumberOfScalarComponents(1);
 id->AllocateScalars();   //开辟空间
 // Fill in scalar values
 unsigned short *ptr = (unsigned short *) id->GetScalarPointer();
 for (int i=0; i<10*25*100; i++)
 {
 *ptr++ = i;
 }

2.数据二次采样 Subsampling Image Data

涉及采样的过滤filter方法有vtkExtractVOI ,vtkImageClip, vtkImageReslice
流程:
vtkSampleFunction→vtkExtractVOI→vtkContourFilter→vtkPolyDataMapper

3.包装向量数据,形成图片

涉及过滤filter:vtkImageDataGeometryFilter
流程:
vtkPolyData→vtkImageDataGeometryFilter→vtkWarpScalar→vtkPolyDataMapper
vtkWindowLevelLookupTable→vtkPolyDataMapper

4.图片显示

1.自创窗口,vtkImageViewer2,里面包含vtkInteractorStyleImage
2.vtkImageActor+rendering window
3.vtkImagePlaneWidget可以创建plane平面

5.图片来源

根据不同特征创建空白图片:
ImageCanvasSource2D 画布
ImageEllipsoidSource椭圆
ImageGaussianSource高斯模糊
ImageGridSource方格
ImageNoiseSource随机早点
ImageSinusoidSource正弦

6.图片处理

  1. 转化标量类型Convert Scalar Type:
    vtkImageCast and ClampOverflow
    vtkImageShiftScale
  2. 改变间隔,原点以及延展Change Spacing, Origin, or Extent
    vtkImageChangeInformation
  3. 图片叠加vtkImageAppend
  4. 改变图像Map Image to Color
    vtkImageMapToColors灰色图片变成彩色图
  5. 亮度改变 Image Luminance vtkImageLuminance
  6. 直方图 Histogram vtkImageAccumulate
  7. 图像逻辑处理Image Logic, including AND, OR, XOR,
    NAND, NOR, and NOT. T
  8. Gradient vtkImageGradient
  9. 高斯平滑 Gaussian Smoothing
  10. 图像翻转 Image Flip vtkImageFlip
  11. 图像置换 Image Permute vtkImagePermute
  12. 图像数学操作 Image Mathematics 提供基本的数学操作
  13. Image Reslice 图片切片重组
  14. vtkImageIterator类实现迭代器方法访问图像像素

你可能感兴趣的:(图像处理)