关闭

VTK里面imgedata体绘制遇到的问题

标签: vtkimagedata 体绘制
382人阅读 评论(0) 收藏 举报
分类:
我在创建imagedata并进行体绘制时,遇到奇怪的问题:
每次运行完后,提示“excited with code 255”,然后不出现图像窗口

float *ptr=(float*)imageData->GetScalarPointer();
//ptr=(float *)imageData->GetScalarPointer();
for(int i=0;i<nx*ny*nz;i++)
{
  fscanf(fp,"%f",&velocity);
  //fscanf(fp,"%f",&lat);

  //printf("%e\n",flux);

   //velocity=velocity*1.0;
   cout<<velocity<<endl;
   //*ptr++=i;
   *ptr++=(float)(velocity);
   cout<<*ptr++<<endl;

   //fscanf(fp,"%*[^\n]%*c"); /* 跳过一行字符串 */
}




后来我发现问题是没有搞明白imagedata在使用volumeRayCast算法时应该是针对unsigned  char  和unsigned short类型的数据,将数据类型改过来,不再有错误提示
unsigned short *ptr=(unsignedshort*)imageData->GetScalarPointer();
//ptr=(float *)imageData->GetScalarPointer();
for(int i=0;i<nx*ny*nz;i++)
{
  fscanf(fp,"%f",&velocity);
  //fscanf(fp,"%f",&lat);

  //printf("%e\n",flux);

   //velocity=velocity*1.0;
   cout<<velocity<<endl;
   //*ptr++=i;
   *ptr++=(unsigned short)(velocity);
   cout<<*ptr++<<endl;

   //fscanf(fp,"%*[^\n]%*c"); /* 跳过一行字符串 */

}

因为vtkImageData 对象的自变量的 SetInput()方法。某                       vtkVolumeRayCastMapper   vtkVolumeTextureMapper2D     VTK_UNSIGNED_CHAR   VTK_UNSIGNED_SHORT 数据。vtkVolumeProMapper 更为限制性的因为它只支持 8 或者 12 位数据, 12 位数据表示为 VTK_UNSIGNED_SHORT 数据,最重要的位在 16 位之外的高 12 位或者低 12 位。(如果你的数据不是上面期望的类型,你可以使用 vtkImageShiftScale 来把数据的比例调整为正确的范围并且把它转化为正确的类型)
例如:
double newrange=65535.0;///////因为unsigned short范围0-65535,
      double oldrange=0.0;
      oldrange=imageData->GetScalarRange()[1]-imageData->GetScalarRange()[0];
      vtkSmartPointer<vtkImageShiftScale> shiftScaleFilter =
          vtkSmartPointer<vtkImageShiftScale>::New();
        shiftScaleFilter->SetOutputScalarTypeToUnsignedShort();
      #if VTK_MAJOR_VERSION <= 5
        shiftScaleFilter->SetInputConnection(imageData->GetProducerPort());
      #else
        shiftScaleFilter->SetInputData(imageData);
      #endif
        shiftScaleFilter->SetShift((-1.0f*imageData->GetScalarRange()[0]));/////先将数据平移到0,移动大小为GetScalarRange()[0]
        shiftScaleFilter->SetScale(newrange/oldrange);
        shiftScaleFilter->Update();
以上代码就将数据范围重新映射到0-65535,tongs2转换为unsigedshort类型。下次就可以将shiftscalefilter的输出作为体绘制数据输入
具体可以参考:http://blog.csdn.net/www_doling_net/article/details/8547317
0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

基于VTK实现面绘制(SR)和体绘制(VR)的基本代码

本文由Markdown语法编辑器编辑完成。1. 医学影像与三维可视化2. 面绘制和体绘制的实现原理2.1 面绘制 (Surface Rendering)  VTK中基于面绘制实现三维重建,使用的是经典...
  • inter_peng
  • inter_peng
  • 2016-12-29 19:23
  • 2290

VTK中体绘制方法

VTK最初是针对医疗领域的应用而设计的,所以对于医疗的可视化方面,如处理CT的扫描数据等,具有强大的功能。它将在可视化过程中经常遇到的细节屏蔽起来,并封装了一些常用的可视化算法,如将面绘制中常用的MC...
  • fanhenghui
  • fanhenghui
  • 2016-07-02 11:37
  • 2326

VTK修炼之道60:体绘制_体绘制管线&图形渲染管线

1.几何渲染与体绘制 1.1 几何渲染 前面练习的渲染技术都是几何渲染技术。所谓的几何渲染技术,就是通过绘制几何图元(顶点、线段、面片等)来渲染数据,例如:绘制图像需要在空间中建立一个四边...
  • shenziheng1
  • shenziheng1
  • 2017-02-06 15:07
  • 1024

VTK修炼之道65:体绘制裁剪_Cropping技术

1.裁剪 对于一些体积比较大,结构比较复杂的体数据进行体绘制的渲染效果难以展示其内部细节,需要用到裁剪技术来渲染部分数据。vtkVolumeMapper类中提供了两种裁剪技术,分别为Cropping...
  • shenziheng1
  • shenziheng1
  • 2017-02-07 13:51
  • 903

vtk读取序列医学Dicom图片进行体绘制(vtkVolumeRayCastCompositeFunction类)

#include "vtkRenderer.h" #include "vtkRenderWindow.h" #include "vtkRenderWindowInteractor.h" #includ...
  • HW140701
  • HW140701
  • 2016-10-24 14:06
  • 1706

vtk读取raw数据的一个例子(体绘制)

cmakelists和上一个例子中的dicom读取大体一致。这里略去。 源代码如下: 该代码来源于网络 #include "vtkDICOMImageReader.h"#include "vtkPi...
  • al5hn
  • al5hn
  • 2014-12-16 17:23
  • 2771

如何加快VTK进行体绘制的速度

(1)第一种解决方法:安装微软Directx SDK(February 2010),然后编译VTK,注意编译的时候选上BUILD_TESTING,build完之后在D:\home\bin\VTK\bi...
  • kangxidashen
  • kangxidashen
  • 2014-04-11 21:16
  • 1793

vtk 体绘制后分割(如何处理自己的数据)

vtk 体绘制后分割(如何处理自己的数据)
  • Kiris_king
  • Kiris_king
  • 2016-02-25 09:06
  • 1465

vtk等值面体绘制|纹理映射体绘制 附:不透明传输函数,颜色传输函数、光照与阴影

等值面体绘制: #include #include #include #include #include #include #include #include #include #i...
  • zhou_yujia
  • zhou_yujia
  • 2016-05-08 10:14
  • 1933

VTK GPU体绘制

#include "vtkUnsignedCharArray.h" #include "vtkPiecewiseFunction.h" #include "vtkColorTransferFu...
  • c4501srsy
  • c4501srsy
  • 2013-12-20 12:56
  • 3736
    个人资料
    • 访问:21710次
    • 积分:341
    • 等级:
    • 排名:千里之外
    • 原创:9篇
    • 转载:27篇
    • 译文:0篇
    • 评论:0条