VTK:读取raw图片格式进行体绘制
来源:互联网 发布:医学数据分析是搞什么 编辑:程序博客网 时间:2024/06/09 19:19
#include "vtkDICOMImageReader.h"#include "vtkPiecewiseFunction.h"#include "vtkColorTransferFunction.h"#include "vtkVolumeProperty.h"#include "vtkVolumeRayCastCompositeFunction.h"#include "vtkVolumeRayCastMapper.h"#include "vtkVolume.h"#include "vtkRenderer.h"#include "vtkRenderWindow.h"#include "vtkRenderWindowInteractor.h"#include "vtkImageCast.h"#include "vtkInteractorStyleTrackballCamera.h"#include "vtkBMPReader.h"#include "vtkVolume16Reader.h"#include "vtkPNGReader.h"#include "vtkJPEGReader.h"#include "vtkRayCastImageDisplayHelper.h"#include <vtkSmartPointer.h>void main(){vtkSmartPointer<vtkRenderer> ren = vtkSmartPointer<vtkRenderer>::New();//设置绘制者(绘制对象指针)vtkSmartPointer<vtkRenderWindow> renWin = vtkSmartPointer<vtkRenderWindow>::New();//设置绘制窗口renWin->AddRenderer(ren);//将绘制者加入绘制窗口vtkSmartPointer<vtkRenderWindowInteractor> iren = vtkSmartPointer<vtkRenderWindowInteractor>::New();//设置绘制交互操作窗口的iren->SetRenderWindow(renWin);//将绘制窗口添加到交互窗口vtkSmartPointer<vtkInteractorStyleTrackballCamera> style = vtkSmartPointer<vtkInteractorStyleTrackballCamera>::New();//交互摄像机iren->SetInteractorStyle(style);//style为交互模式vtkSmartPointer<vtkImageReader> reader = vtkSmartPointer<vtkImageReader>::New();reader->SetFileName("C:\\Users\\HuangWang\\Desktop\\Head_256x256x256.raw");reader->SetFileDimensionality(3);//设置显示图像的维数reader->SetDataScalarType(VTK_UNSIGNED_CHAR);//VTK_UNSIGNED_short将数据转换为unsigned char型reader->SetDataExtent(0, 255, 0, 255, 0, 255);reader->SetDataSpacing(0.9, 0.9, 0.9); //设置像素间间距reader->SetDataOrigin(0.0, 0.0, 0.0);//设置基准点,(一般没有用)做虚拟切片时可能会用的上reader->Update();vtkSmartPointer<vtkImageCast> readerImageCast = vtkSmartPointer<vtkImageCast>::New();//数据类型转换readerImageCast->SetInputConnection(reader->GetOutputPort());readerImageCast->SetOutputScalarTypeToUnsignedChar();readerImageCast->ClampOverflowOn();//阀值//reader->Delete();//设置不透明度传递函数//该函数确定各体绘像素或单位长度值的不透明度vtkSmartPointer<vtkPiecewiseFunction> opacityTransferFunction = vtkSmartPointer<vtkPiecewiseFunction>::New();//一维分段函数变换opacityTransferFunction->AddPoint(20, 0.0);opacityTransferFunction->AddPoint(255, 0.2);//设置颜色传递函数//该函数确定体绘像素的颜色值或者灰度值vtkSmartPointer<vtkColorTransferFunction> colorTransferFunction = vtkSmartPointer<vtkColorTransferFunction>::New();colorTransferFunction->AddRGBPoint(0.0, 0.0, 0.5, 0.0);//添加色彩点(第一个参数索引)colorTransferFunction->AddRGBPoint(60.0, 1.0, 0.0, 0.0);colorTransferFunction->AddRGBPoint(128.0, 0.2, 0.1, 0.9);colorTransferFunction->AddRGBPoint(196.0, 0.27, 0.21, 0.1);colorTransferFunction->AddRGBPoint(255.0, 0.8, 0.8, 0.8);vtkSmartPointer<vtkVolumeProperty> volumeProperty = vtkSmartPointer<vtkVolumeProperty>::New();//设定一个体绘容器的属性volumeProperty->SetColor(colorTransferFunction);//设置颜色volumeProperty->SetScalarOpacity(opacityTransferFunction);//不透明度volumeProperty->ShadeOn();//影阴volumeProperty->SetInterpolationTypeToLinear();//直线与样条插值之间逐发函数volumeProperty->SetAmbient(0.2);//环境光系数volumeProperty->SetDiffuse(0.9);//漫反射volumeProperty->SetSpecular(0.2);//高光系数volumeProperty->SetSpecularPower(10); //高光强度 //定义光线投射方法为MIP体绘制方法,MIP为体绘制经典算法// vtkVolumeRayCastMIPFunction*mipRaycastFunction = vtkVolumeRayCastMIPFunction::New();// mipRaycastFunction->SetMaximizeMethodToOpacity();vtkSmartPointer<vtkVolumeRayCastCompositeFunction> compositeFunction = vtkSmartPointer<vtkVolumeRayCastCompositeFunction>::New();//运行沿着光线合成//定义绘制者vtkVolumeRayCastMapper *volumeMapper = vtkVolumeRayCastMapper::New(); //体绘制器volumeMapper->SetVolumeRayCastFunction(compositeFunction); //载入绘制方法volumeMapper->SetInputConnection(readerImageCast->GetOutputPort());//图像数据输入volumeMapper->SetNumberOfThreads(3);//定义VolumevtkSmartPointer<vtkVolume> volume = vtkSmartPointer<vtkVolume>::New();//表示透示图中的一组三维数据volume->SetMapper(volumeMapper);volume->SetProperty(volumeProperty);//设置体属性ren->AddVolume(volume);//将Volume装载到绘制类中ren->SetBackground(1, 1, 1);renWin->SetSize(600, 600);//设置背景颜色和绘制窗口大小renWin->Render();////窗口进行绘制iren->Initialize();iren->Start();//初始化并进行交互绘制ren->ResetCameraClippingRange();}
阅读全文
0 0
- VTK:读取raw图片格式进行体绘制
- VTK:读取raw文件进行面绘制
- vtk读取raw数据的一个例子(体绘制)
- vtk读取序列医学Dicom图片进行体绘制(vtkVolumeRayCastCompositeFunction类)
- VTK读取DICOM医学图片进行体绘制的几种方法
- vtk实战(八)—读取.raw文件
- 图片格式:RAW
- 如何加快VTK进行体绘制的速度
- vtk体绘制-例子
- VTK GPU体绘制
- vtk 体绘制小结
- 体绘制函数 vtk
- VTK之体绘制
- vtk体绘制
- vtk 体绘制
- VTK体绘制
- VTK:读入DICOM,体绘制
- VTK中的体绘制方法
- 阻塞消息队列LinkedBlockingQueue主要方法
- k8s 与 grpc
- mybatis+easyUI实现分页
- 基于JavaMail的Java邮件发送:简单邮件发送
- Thinking in Java:第六章-访问控制权限
- VTK:读取raw图片格式进行体绘制
- linux c下,从路径名中分离文件名
- 在JS写的HTML标签当中无法传递对象,或者是数组
- 2017.12.15笔记
- 字符串格式化
- os-在使用git log时如何退出当前界面
- Apache Tiles3整合SpringMvc
- hdu 2222 Keywords Search ( AC 自动机)
- Mac 屏幕录制转gif、MP4转gif、Android Studio录制转GIF动态效果图(超简单)