用VTK读取单张的TIFF图片

参考一些资料,而得到的在VTK下用vtkTIFFReader读取tiff图片。代码中仅仅能够实现单张tiff图像的读取和显式。
#include <vtkSmartPointer.h>
#include <vtkImageViewer2.h>
#include <vtkTIFFReader.h>
#include <vtkRenderWindow.h>
#include <vtkRenderWindowInteractor.h>
#include <vtkRenderer.h>
 
int main(int argc, char* argv[])
{
  //Verify input arguments
  if ( argc != 2 )
    {
    std::cout << "Usage: " << argv[0]
              << " Filename(.tif)" << std::endl;
    return EXIT_FAILURE;
    }
 
  //Read the image
  vtkSmartPointer<vtkTIFFReader> reader =
    vtkSmartPointer<vtkTIFFReader>::New();
  reader->SetFileName ( argv[1] );
 
  // Visualize
  vtkSmartPointer<vtkImageViewer2> imageViewer =
    vtkSmartPointer<vtkImageViewer2>::New();
  imageViewer->SetInputConnection(reader->GetOutputPort());
  vtkSmartPointer<vtkRenderWindowInteractor> renderWindowInteractor =
    vtkSmartPointer<vtkRenderWindowInteractor>::New();
  imageViewer->SetupInteractor(renderWindowInteractor);
  imageViewer->Render();
  imageViewer->GetRenderer()->ResetCamera();
  imageViewer->Render();
 
  renderWindowInteractor->Start();
 
  return EXIT_SUCCESS;
}

但是为了实现对于一序列tiff图像的读取,并在三维空间中渲染出来呢?

这个现在一直在探索,学习。。。

参考网络上的一些资料:

http://vtk.1045678.n5.nabble.com/3D-Tiff-to-vtkImageData-class-td5607259.html

http://bioimagexd.svn.sourceforge.net/viewvc/bioimagexd/bioimagexd/trunk/vtkBXD/Processing/

http://www.vtk.org/pipermail/vtkusers/2008-June/095731.html

http://public.kitware.com/cgi-bin/viewcvs.cgi/*checkout*/Examples/ImageProcessing/Cxx/ImageSlicing.cxx?root=VTK&content-type=text/plain

但是仍旧没有结果。。。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
CBCT是计算机体层摄影技术的一种,通常使用多张二维tiff图片重构三维图像。VTK是一个用于三维图像处理和可视化的开源库。下面是使用VTK对多张二维tiff图片进行三维可视化的Python代码: ```python import vtk # 设置读取器 reader = vtk.vtkTIFFReader() # 读取多张二维tiff图片 for i in range(1, 101): filename = "image{}.tiff".format(i) reader.SetFileName(filename) reader.Update() # 设置用于显示的数据 input_data = reader.GetOutput() # 创建VTK数据集 image_data = vtk.vtkImageData() image_data.SetDimensions(input_data.GetDimensions()) image_data.SetSpacing(input_data.GetSpacing()) image_data.SetOrigin(input_data.GetOrigin()) image_data.SetScalarTypeToUnsignedChar() image_data.AllocateScalars() # 将二维图像拷贝到VTK数据集中 for z in range(input_data.GetDimensions()[2]): for y in range(input_data.GetDimensions()[1]): for x in range(input_data.GetDimensions()[0]): pixel = input_data.GetScalarComponentAsDouble(x, y, z, 0) image_data.SetScalarComponentFromDouble(x, y, z, 0, pixel) # 创建VTK可视化对象 actor = vtk.vtkImageActor() actor.SetInputData(image_data) # 将可视化对象添加到渲染器 renderer.AddActor(actor) # 创建渲染窗口和交互器 render_window = vtk.vtkRenderWindow() render_window.SetSize(800, 800) render_window.AddRenderer(renderer) interactor = vtk.vtkRenderWindowInteractor() interactor.SetRenderWindow(render_window) # 渲染并开始交互 render_window.Render() interactor.Start() ``` 此代码将多张二维tiff图片读取VTK数据集,然后创建VTK可视化对象并将其添加到渲染器中。最后创建渲染窗口和交互器,并启动交互。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值