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.手动创建vtkImageData
1.已有数据Data,创建vtkImageData
C++:
vtkUnsignedCharArray *array = vtkUnsignedCharArray::New();
array->SetArray( data, size[0]*size[1]*size[2], 1);
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++
vtkImageData *id = vtkImageData::New();
id->SetDimensions(10,25,100);
id->SetScalarTypeToUnsignedShort();
id->SetNumberOfScalarComponents(1);
id->AllocateScalars();
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.图片处理
- 转化标量类型Convert Scalar Type:
vtkImageCast and ClampOverflow
vtkImageShiftScale - 改变间隔,原点以及延展Change Spacing, Origin, or Extent
vtkImageChangeInformation: - 图片叠加 vtkImageAppend
- 改变图像Map Image to Color
vtkImageMapToColors灰色图片变成彩色图 - 亮度改变 Image Luminance vtkImageLuminance
- 直方图 Histogram vtkImageAccumulate
- 图像逻辑处理Image Logic, including AND, OR, XOR,
NAND, NOR, and NOT. T - Gradient vtkImageGradient
- 高斯平滑 Gaussian Smoothing
- 图像翻转 Image Flip vtkImageFlip
- 图像置换 Image Permute vtkImagePermute
- 图像数学操作 Image Mathematics 提供基本的数学操作
- Image Reslice 图片切片重组
- vtkImageIterator类实现迭代器方法访问图像像素
Original: https://blog.csdn.net/weixin_43436157/article/details/124122221
Author: When it is ready
Title: 【VTK图像处理】
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/641506/
转载文章受原作者版权保护。转载请注明原作者出处!