COSummer
生物医学小硕一枚,现从事医疗软件研发
展开
-
同一视图中多个vr,异常遮挡
同一视图中多个vr,异常遮挡原创 2023-12-13 15:41:54 · 100 阅读 · 0 评论 -
stl mm转成mm
【代码】stl mm转成mm。原创 2023-08-28 16:59:37 · 123 阅读 · 0 评论 -
vtkimage 转出itkimage
vtkimage 转出itkimage原创 2023-08-03 12:52:58 · 168 阅读 · 0 评论 -
STL 文件的压缩(500MB-1MB)
STL 文件的压缩原创 2023-05-23 10:21:27 · 1036 阅读 · 0 评论 -
vtkDICOMImageReader 读取dicom异常的解决方法
vtkDICOMImageReader 读取dicom异常的解决方法原创 2023-05-22 12:48:38 · 424 阅读 · 0 评论 -
vtkImageMapToWindowLevelColors 调节vtkImageActor的www/wwl
vtkImageMapToWindowLevelColors 调节vtkImageActor的www/wwl原创 2023-05-17 18:37:33 · 321 阅读 · 0 评论 -
vtkpolydata To vtkImageData
vtkpolydata To vtkImageData。原创 2023-01-06 11:14:36 · 205 阅读 · 0 评论 -
QT + vtk actor 调节透明度异常的问题记录
vtk 修改bug的简单记录原创 2022-10-10 09:36:14 · 775 阅读 · 0 评论 -
vtk 阻止一些warning 框弹出
vtk bug 修改中的简单记录原创 2022-10-10 09:19:44 · 223 阅读 · 0 评论 -
vtk 9.0 actor 的简单显示(记录)
【代码】vtk 9.0 actor 的简单显示(记录)原创 2022-10-10 10:02:10 · 453 阅读 · 1 评论 -
VTK 9.0 一个简单的可视化例子:两个polydata 显示在同一个render Window 中
#include <vtkAutoInit.h> // vtk9.0 显示报错,需加上此头文件VTK_MODULE_INIT(vtkRenderingOpenGL2);//vtk9.0 显示报错,需加上此宏定义VTK_MODULE_INIT(vtkInteractionStyle);//vtk9.0 显示报错,需加上此宏定义VTK_MODULE_INIT(vtkRenderingFreeType);//vtk9.0 显示报错,需加上此宏定义vtkSmartPointer<v.原创 2021-06-25 14:12:49 · 575 阅读 · 0 评论 -
itk、vtk、qt 显示dicom 数据
以下代码实现了itk读取dicom数据,转换为vtkData,然后用Qt显示。1、Qt Designer 搭建界面,QVTKOpenGLNativeWidget 是vtk的一个类,连接qt与vtk的桥梁,一个可以显示dicom数据的widget,可以当做一个普通的widget去布局。但是为vtk 与qt 的版本都比较高,注意一下。2、因为使用itk较多,直接用itk读的dicom数据,然后使用 itk::ImageToVTKImageFilter转成vtkData,便于显示。3、QVTKOpen原创 2020-07-08 10:29:30 · 1872 阅读 · 2 评论 -
VTK9.0 and Qt 5.14环境配置中的问题记录
计算机上有时会安装多个版本的Qt,因此常常会导致调用Qt的过程中调不到指定版本的Qt,现把配置过程记录一下:1、Qt:下载:官网下载比较慢,可以选国内的镜像网站,Qt的window版本名字都是86,但64位也会集成到该安装包中,安装的时候选x64就可以了,然后添加环境变量,切记如果环境变量中Qt的路径尽量往前放,因为像我的电脑ancoda配置python环境的时候安装过Qt,也为此配置过环境变量,因此VS 运行的时候一直报如下错误: ...原创 2020-07-01 09:36:35 · 1441 阅读 · 1 评论 -
vtk教程中vtkCylinderSource的例子
下面将演示一个能够交互的VTK应用程序。3.1 一个稍微复杂的VTK程序首先当然是写一个CMakeLists.txt文件。在D:\Toolkits\VTK\Examples\下新建一个文件夹,名为3.1.1_RenderCylinder,在该目录下新建CMakeLists.txt和RenderCylinder.cpp文件。示例3.1.1_RenderCylinder的CMakeLists.txt1转载 2017-05-07 16:31:00 · 1918 阅读 · 0 评论 -
vtkImageData处理之阈值分割
主要应用vtkImageThreshold完成vtkImageData的阈值分割功能,示例代码如下: vtkSmartPointer<vtkImageThreshold> thresholdFilter = vtkSmartPointer<vtkImageThreshold>::New(); thresholdFilter->SetInputData(VtkImageData);//原创 2017-09-27 12:30:55 · 1971 阅读 · 0 评论 -
VTK的安装至集成至VS中
以下是从官网下载vtk源码至集成至VS的过程 1、VTK源码直接从VTK的官方网站(http://www.vtk.org/download/)上下载到,此博客中下载的是vtk-5.10.1.zip和vtkdata-5.10.1.zip两个压缩包。其中vtk-5.10.1.zip是VTK的源码,vtkdata-5.10.1.zip是VTK使用中的数据文件,这个文件也可以不用下载。 2、新建三个目录原创 2017-10-19 09:35:00 · 734 阅读 · 0 评论 -
vtkactor 用GetProperty()设置颜色属性不起作用
有一次遇到这种情况:vtkactor的GetProperty()->SetColor()之后actor的颜色不起作用,解决方案如下: Mapper->ScalarVisibilityOff(); Actor->GetProperty()->SetColor();原因:生成actor的polydata直接或间接设置过映射成颜色的标量数据,此时只要告知mapper 忽略标量数据,再次设置颜色属性就能正原创 2017-10-11 09:39:23 · 4130 阅读 · 1 评论 -
vtk 图像融合
在实际应用中经常需要在同一个窗口中显示多幅图像,此时就会用到融合技术,图像融合是利用图像的不透明度来合成图像。医学图像处理过程配准与融合经常出现,融合之前经常会先配准。vtk中使用vtkImageBlend实现图像的融合。vtkImageBlend可以接收多个图像输入,其输出为融合图像。输出图像的像素间隔、原点、范围以及像素组分个数与第一个图像一致。示例代码如下:vtkSmartPointer&l...原创 2018-03-02 17:49:23 · 1435 阅读 · 0 评论 -
vtk的几种分割算法总结
将项目中用到的vtk切割类总结如下1、阈值分割参见https://blog.csdn.net/zzhouzhou237/article/details/78111553要求描述:(1)输入数据:vtkImagedata。 (2)给定阈值(上限与下限)使用vtk 类 vtkImageThreshold。2、区域生长参见https://blog.csdn.net/inte...原创 2018-03-27 14:29:19 · 5891 阅读 · 2 评论 -
vtk 学习笔记
1、2、 CMake编译,比如,使用Visual Studio2008,准备编译64位的VTK,则可以选择“Visual Studio 9 2008 Win64”选项选上BuildTesting,否则会提示找不到model vtktestcoreVisual Studio 2008默认的编译版本是Debug,所以编出来是debug版本的3、 F7或Build编译由cmake组建的工程CMake 默...原创 2018-05-25 09:30:02 · 878 阅读 · 0 评论 -
vtk常用类总结
1、将VTKImageData转化成VTKPolydata,应该其他数据类型转化polydata也行vtkSmartPointer<vtkImageDataGeometryFilter>ConvertImageToPloy = vtkSmartPointer<vtkImageDataGeometryFilter>::New();2、vtkPolyDataToImageSte...原创 2018-05-25 09:43:25 · 1386 阅读 · 0 评论 -
vtkCutter实现vtkDataSet的切割用指定的隐函数
以下代码实现了用vtkcutter类cut polydata。示例代码如下: vtkSmartPointer<vtkPlane> CutterPlane = vtkSmartPointer<vtkPlane>::New();//用于裁剪的隐函数,本例用的是vtkPlane CutterPlane->SetOrigin(); CutterPlane->SetNormal(); /原创 2017-07-03 10:51:22 · 3467 阅读 · 1 评论 -
程序性能慢的一些方法总结
项目过程中经常会遇到一些性能需求,现总结如下: 1、多线程处理 2、如果数据量过大,可选择减采样 如vtkPolydata 可用类vtkDecimatePro(用法之前的博客中写过) vtkImagedata可用类vtkImageResample vtkSmartPointer<vtkImageResample> ResampleData = vtkSmartPoi...原创 2017-09-01 10:06:35 · 905 阅读 · 0 评论 -
VR 选取感兴趣区域(VOI)
1、处理数据:VTKImageData 2、功能实现:在VR上任意画一长方形区域,自动进行VR的裁剪 3、实现思路: (1)搭建管线: vtkSmartPointer< vtkKochanekSpline > xSpline = vtkSmartPointer< vtkKochanekSpline >::New(); vtkSmart...原创 2017-02-19 20:20:19 · 3345 阅读 · 1 评论 -
VtkPolyData的镜像操作
以下代码完成了vtkPolyData沿x轴的镜像变换void MirrorPolydata(vtkSmartPointer<vtkPolyData> &polyData){ int nAxis = 0; double bounds[6]; polyData->GetBounds(bounds); double adjust[3] = {0, 0, 0}; adj原创 2017-07-03 10:06:48 · 1452 阅读 · 0 评论 -
vtkPolyData 的空间变换(平移、旋转、缩放)
vtkPolydata的空间变化主要基于vtkTransform与vtkTransformPolyDataFilter两个类实现,示例代码如下: vtkSmartPointer<vtkTransform> pTransform = vtkSmartPointer<vtkTransform>::New(); pTransform->RotateX(90);//x轴旋转90度 pTra原创 2017-07-03 09:57:00 · 6716 阅读 · 1 评论 -
vtk 两点确定一条直线的可视化
已知两个点的坐标StartPoint,EndPoint,用vtk可视化其确定的直线。vtkSmartPointer<vtkPoints> Points = vtkSmartPointer<vtkPoints>::New(); Points->InsertNextPoint(StartPoint[0],StartPoint[1],StartPoint...原创 2017-06-09 09:20:18 · 2046 阅读 · 3 评论 -
VR 、SR 轴矢冠三个切面的显示
有时会在MPR图像上画出代表轴矢冠三个方向的轴线,如果拖动轴线,此时能在VR或SR图像上画出三方向轴线的切面,且与轴线对应,实时更新,可视化效果是相当好的。现将部分代码与最终结果记录如下:基本思路是生成并不断更新actor。用actor的VisibilityOff、VisibilityOn控制三个切面的显示与隐藏。初始化actor for (int i = 0; i < MPR_Ori原创 2017-06-16 19:52:30 · 1407 阅读 · 0 评论 -
vtkRenderer类的理解以及对该类中函数的解析
详见http://blog.csdn.net/zhz1993622/article/details/44177329转载 2017-05-07 16:20:17 · 565 阅读 · 0 评论 -
VR的Crop功能实现
1、处理数据:VTKImageData 2、功能描述:点击VRCrop按钮,在VR图像上出现一个立方体盒子,鼠标激活某一面,按住鼠标拖动,拖动过程中(move),便会对VR进行对应方位的裁剪。 3、实现过程: (1)搭建vtk管线:立方体由8点6面12线组成,我采用建6个面的actor,12个线的actor(为避免视觉错乱,隐藏看不到的3根线。所以分隐藏组与显示组),1个VR actor。 ...原创 2017-02-19 18:01:53 · 1007 阅读 · 1 评论 -
VTK 长方体隐藏视觉后面的三根线
1、长方体由8点6面12线构成,使用vtk画矩形,需生成面与线的actor,因为要隐藏部分直线,所以直线的actor分成两组,一组隐藏一组显示。 设置actor隐藏的函数为VisibilityOff() 2、需要隐藏的三根线公用一点,该点的display坐标的z的值是最大的,所以只要在旋转过程中不断获取8个点中display坐标的z值最大的那个点,并不断更新需要隐藏的actor即可。 Rem原创 2017-02-19 18:29:31 · 1667 阅读 · 0 评论 -
体绘制(VR)图像的阈值调节
1、体绘制(R)与面绘制不同,VR是给原始VTKImageData的不同像素赋予不同的颜色与透明度,使图像不同组织更加清晰,更有立体感。 2、VR阈值调节是指通过在VR图像滑动或拖动鼠标右键的方式调节像素的透明度调节图像信息的显示情况。因为像素的不透明度是0的时候,该图像完全透明,只显示背景色,不透明度是1时,完全显示该像素对应的颜色。所以,通过改变图像不透明度为0对应的最大像素值的大小即可实现这原创 2017-02-19 16:53:10 · 1118 阅读 · 0 评论 -
vtkPolydata转换成QPixmap
vtkWindowToImageFilter的作用是将vtkWindow中的数据转换成各种格式的图像,比如我想将vtkPolydata显示在基于Qt的Panel的任意一个位置,如果选择将vtkPolydata按照可视化管线的流程显示,效果会很好,还可以互动,但是实现起来非常麻烦,有的时候只是想简单的看一下Vtkpolydata的缩略图,此时可以用vtkWindowToImageFilter将数据转换原创 2017-07-03 10:33:14 · 658 阅读 · 0 评论 -
VTK的Reader与Writer
VTK对不同格式的文件的读写使用不同的类。 一:Reader **QString.toLocal8Bit.data()连着写有问题,要先QByteArray qbTemp = QString.toLocal8Bit(),然后 const char filename = qbTemp.data();* 使用之前应包括相应的头文件,如#include <vtkPNGReader.h&...原创 2017-03-05 16:22:23 · 3072 阅读 · 0 评论 -
vtk 图像创建
数字图像文件内容主要由两部分构成:图像头信息和数据,头信息定义了图像的基本信息,包括起点位置(Origin)、像素间距(Space)和维数(Dimension)。所以创建图像,分为上述两部分即可。 以下是vtkImageData的创建示例 vtkSmartPointer<vtkImageData> ImageData = vtkSmartPointer<vtkImage原创 2017-06-25 20:53:19 · 805 阅读 · 0 评论 -
医疗软件Pan、Zoom、Rotation的实现原理
Pan、Zoom、Rotation调节的实现其实都是修改vtkCamera的参数,具体为Pan 修改的是相机的焦点参数,Zoom修改的是相机的位置参数,Rotation修改的是相机的ViewUp参数。 以下是对vtkCamera的一点介绍: 观众的眼睛就好比三维渲染场景中的相机,VTK则是用vtkCamera类来表示三维渲染场景中的相机。vtkCamera负责把三维场景投影到二维平面,如屏幕、图原创 2017-07-30 18:08:11 · 1640 阅读 · 0 评论 -
不同显卡下的vtkLineSource显示宽度不同
在做项目的过程中遇到这种情况: 用vtkLineSource生成actor显示成一条直线,在调节线的宽度的时候发现不同显卡下的宽度是不同的,在DIA下宽度增大到一定程度下就不再变化了,而AMD则没有这种现象,所有最后用vtkCylinderSource来表示直线了,此时一切正常。 现在遇到的生成**直线**actor的方法,总结如下: 1、手动构建vtkPolydata,即...原创 2017-08-15 09:06:42 · 1075 阅读 · 2 评论 -
vtkImagedata与vtkPolydata的减采样
1、vtkImagedata:vtkImageShrink3D vtkSmartPointer<vtkImageShrink3D> pImageShrink3D = vtkSmartPointer<vtkImageShrink3D>::New(); pImageShrink3D->SetShrinkFactors(2, 2, 2);//x、y、z三方向均减采样1/2 pImageS原创 2017-08-07 09:20:16 · 2237 阅读 · 0 评论 -
VTK ICP配准
ICP 全称为vtkIterativeClosestPointTransform,也是vtk经典配准算法之一,输入为vtkdataset,需指定迭代次数,配准效果优于Landmark配准,但效率低于landmark 示例代码如下: vtkSmartPointer<vtkIterativeClosestPointTransform> icpTransform = vtkSma原创 2017-07-18 09:57:24 · 2781 阅读 · 2 评论 -
VTK Landmark配准
1、Landmark是vtk中比较经典的配准算法之一,输入为两个点集(点数相等),做线性变换,适用于粗配准,优点是效率高。示例代码如下: vtkSmartPointer<vtkLinearTransform> transform = LandmarkReg(pointsTreated, pointsNontreated); DxMatrix4x4 matrix = TransformAc原创 2017-07-18 09:42:44 · 3013 阅读 · 0 评论