自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(71)
  • 资源 (4)
  • 收藏
  • 关注

原创 005:VTK世界坐标系中的相机和物体

VTK中vtkCamera类对应右图中的相机,可以通过vtkCamera来设置相机在世界坐标系中的位置,焦点(对准三维坐标系中的那个位置),相机的正方向,相机的最近和最远裁减平面(在最近和最远平面内的物体才会被渲染)等;三维坐标系中的物体,对于目前我们的例子来说就是要渲染显示的DICOM图像,也就是存储在vtkImageData中的数据,通过vtkImageData origin参数可以设置其在三维坐标系中的位置,当然也可以通过旋转矩阵对vtkImageData的数据进行旋转或平移。

2024-09-06 23:16:19 806

原创 004: VTK读入数据---vtkImageData详细说明

对于医学图像来说,vtkImageData是使用频率非常高的类,因为医学图像通常为较为规则的矩形或容积类型(三维),而vtkImageData类主要就是用于存储此类数据的,vtk中相关算法(比如阈值、缩放等)的输入和输出也是vtkImageData类,熟练掌握vtkImageData类非常重要。

2024-09-06 11:37:54 1108

原创 应用开发---VTK放大镜(区域放大)功能实现

通过封装(wxMagnifierAcotor类)和继承 (wxInteractorStyleImage类)来实现了图像局部放大镜的功能,放大镜的主要功能在wxMagnifierAcotor类中实现,主要用到的知识点为纹理贴图、规范化视口坐标,图像裁减和放大;交互主要由wxInteractorStyleImage类来实现,增加了放大镜事件ID,和启动、结束,放大的事件。简单总结了下放大镜功能实现的管线。熟悉VTK的朋友通过阅读代码即可掌握,对于刚接触VTK的朋友,详细的内容请阅读下篇博文。

2024-09-05 21:27:07 1533

原创 003: Visual Studio 配置 VTK 开发环境的方法与比较

介绍了两种再项目中配置VTK的方法,其实严格来说就是一种方法,不过相比较而言,第二种方法导出props文件后,后面所有要使用VTK的项目,直接通过属性框导入props文件即可,不用在去费劲添加路径和lib文件,想比较而言,更加的方便快捷。

2024-09-05 15:45:43 963

原创 002:显示DICOM图像(替换掉 vtkImageViewer2 )

在第000章节VTK的安装中,我们运行了第一个例子,来显示DICOM图像,从而让我们可以快速的看到输入、输出和交互,建立学习兴趣,在该例子中使用vtkImageViewer2来显示DICOM图像,在实际开发中我们基本不会用vtkImageViewer2,因为该类对很多内容进行了封装,使用起来不够灵活,同时也使得我们无法深入理解如何来显示一张DICOM 图像,从这一章开始,我们将完整的熟悉VTK的渲染管线。

2024-09-04 22:10:02 1022

原创 001:VTK的学习资料与方法

本节主要介绍学习VTK的一些资料和学习方法,仅供参考,可以根据自己的实际情况来调整。学习资料主要以VTK官网提供的资料为主,不管对于入门还是深入研究都足够了;

2024-09-04 11:05:17 997

原创 000:VTK的安装(VTK 编译 + 运行第一个例子)

VTK-医学图像处理,主要基于VTK来显示医学图像,并进行必要的处理。在显示医学图像的过程中讲解背后的计算机图形学知识,理解VTK背后的行为基础。本节为该系列文章的第一节,主要是VTK的编译和配置。

2024-09-03 22:16:34 1140

原创 004:Direct 2D离屏渲染(Qt中实现)

用QT开发图像显示的小程序,需要一些标注工具,由于用的是opengl渲染,所以就在内存中进行绘制,然后纹理贴图贴出去,发现Qt绘制的效果太差,且速度一般,于是就想着用direct2d来绘制需要的纹理图像。

2023-11-29 10:24:20 1094

原创 VTK: 转化DICOM ST 数据为vtkPolyData显示

放疗的靶区等勾画数据通常会存储为DICOM-RT文件,该文件通常存储勾画点坐标数据。新的需要中DICOM-RT中存储了一个固定模版,需要进行3D打印,因此需要对其格式进行转化,以便进行三维渲染、编辑、保存和打印功能。

2022-09-26 11:41:17 1345 1

原创 003:D2D 性能测试-绘制不同对象的帧率变化

D2D性能测试,目的是了解D2D特性,为后续系统设计确定技术路线。主要对D2D绘制不同对方的速度进行测试,测试的对象包括:图像、文本、椭圆和矩形,测试绘制不同对象对帧率的影响。测试结果表明:以帧率下降速度最快排列,绘制文本帧率下降最快,其次是椭圆、矩形,影响最小的是图像。

2022-09-15 12:18:30 695

原创 002:CWnd类中采用D2D绘制,并测试帧率

在001中,D2D绘制的代码直接放在了对话框类中,实际使用过程中,通常是继承CWnd来实现显示窗口,因此本例子实现在CWnd子类中采用D2D进行绘制,并测试FPS,后续会与GDI和GDI+的绘制帧率进行对比。

2022-09-08 23:22:00 684 5

原创 001:你好Direct 2D! 在对话框中初次使用D2D

​对于如何提高2D的绘制效率,一直在进行着尝试。基于OpenGL的纹理贴出做过一些二维图像处理的工作,但相对麻烦些,需要由GDI/GDI+绘制后,在贴出去,麻烦,且由于OpenGL停止了更新,不支持多线程等原因,慢慢的继续做下去的动力就不足。无意间看到MSDN中关于Direct 2D的结论(现有GDI代码将继续在 Windows 7 下正常工作。 但是,编写新的图形呈现代码时,应考虑Direct2D,因为它更好地利用新式 GPU。),故而打算写一序列的博客,记录下学习和测试Direct2D编程和性

2022-09-08 16:26:43 660

原创 DCMTK findscu 查询信息

使用DCMTK提供的可执行文件中的findscu,查询服务端的患者的影像数据信息。

2022-07-26 17:13:41 1252

原创 微血管血流速度标注

舌下与结膜微血管血流速度检测是药物反应和疾病诊断的重要指证,但由于红细胞族之间的间隔随着血流的流动会发生聚合或分离,导致在序列时空图象上血流速度检测的困难,拟采用深度学习方法,在序列时空图象上准确检测微血管血流速度。由于现有的软件进行标注不方便、效率低,所以自己开发了个小的标注软件。采用C#编写。......

2022-07-06 15:33:20 203

原创 从源码 编译 Conquest DICOM software 1.5.0b,并汉化

Conquest DICOM Server是开源的服务端程序,可用于DICOM通讯的验证和作为自用的图像归档系统,来收集和存储数据。其界面用delphi开发,调用C++开发的DICOM解析库和服务进程来实现其功能。

2022-06-29 11:58:47 789

原创 VTK:自定义直线和椭圆工具

摘要: VTK没有提供椭圆工具,所以自己写了个绘制二维椭圆的类,随便也把直线工具也重新写了下。

2022-03-27 17:17:18 1049

原创 VTK:去除阈值分割中的小的连通区域-噪点去除

目的:阈值分割的结果中,通常包含有很多小的、孤立的区域,这些小的区域采用手动方式去除比较耗时,可通过三维连通区域,计算各个连通区域的大小,然后将小于一定阈值的区域去掉。基于vtkImageConnectivityFilter类实现。性能:512*512*400的数据,连通域计算无法达到实时; 512*512*400的数据中的肺动脉,经过三维裁剪,可以达到实时的效果。若果要提高到2S内,需要改进vtkImageConnectivityFilter中的算法。...

2022-03-18 16:56:01 1473 1

原创 VTK三维裁剪:体绘制任意裁剪 和面绘制任意裁剪(对vtkImageData和vtkPolyData进行裁剪)

在体绘制和面绘制中,经常需要对非感兴趣部位进行裁减,以减少遮挡等。目前实现了两种方法:第一种方法速度比较慢;第二种方法可以达到实时;详细见参考文献。详细内容后面整理,先记录下。一、体绘制裁减二、面绘制进行裁减参考:https://blog.csdn.net/a15005784320/article/details/119204925 https://blog.csdn.net/gorecording/article/details/83781923htt...

2022-02-13 11:11:31 3854 3

原创 VTK: 选取区域裁剪(vtkAreaPicker + vtkInteractorStyleRubberBandPick )

简介:1、vtkAreaPicker:获取裁剪平面2、vtkClipClosedSurface:完成裁剪完成代码:#include <vtkActor.h>#include <vtkAreaPicker.h>#include <vtkDataSetMapper.h>#include <vtkDataSetSurfaceFilter.h>#include <vtkExtractPolyDataGeometry.h>.

2022-01-22 12:10:53 2510 2

原创 VTK: 选取区域(vtkAreaPicker + vtkInteractorStyleRubberBandPick )

目的:显示对直接体绘制和网格数据的任意裁剪。根据VTK官网的例子,显示了下面的矩形区域选取。下一步实现任意区域的选取与裁剪。VTK官网例子:https://kitware.github.io/vtk-examples/site/Cxx/Picking/HighlightSelection/注意:按下键盘< r >进行模式切换,#include <vtkActor.h>#include <vtkAreaPicker.h>#include &l.

2022-01-22 10:48:29 3187 3

原创 VTK: vtkImageData 转 vtkPolyData

简介:勾画的数据通常带有多个标签(多个组织),以vtkImageData存储,用vtkDiscreteMarchingCubes 可以将其转化为网格数据vtkPolyData。下图为转化的效果。详见代码,内有注释 vtkImageData* pMaskData = m_pMaskImage->GetSrcMaskData(mLabel); double origin[3]; pMaskData->GetOrigin(origin); pMaskData..

2022-01-21 21:56:55 2065

原创 VTK小结:展示勾画-STL转Mask-Mask转STL-勾画

2022-01-21 01:11:29 871 1

原创 VTK: vtkPolyData 裁剪(1)

熟悉vtkClipClosedSurface 对vtkPolyData 进行裁剪;重点在于如何构建裁剪平面,需要注意的是裁剪平面的法向量指向的会被保留,其它会被裁剪掉。难点就是如何构建重建平面组合;

2022-01-20 10:56:19 1797

原创 VTK: STL (vtkPolyData) 转 Mask(vtkImageData)

项目中需要将分割结果的STL转换成Mask,以方便用户对其进行必要的调整。vtkPolyData 转vtkImageData 的方法见VTK官网中有相关的例子。需要注意的几点:1、转换后结果的数据类型和参考数据相同,如下代码中的maskImage;2、 vtkPolyData 的数据原点(mask转polydata时)与maskImage必须相同;void Stl2Mask(){ double spacing[3] = {0.71875,0.71875,1.0}; do..

2022-01-16 15:41:11 1511

原创 VTK 灰度图像转RGB(非渲染):vtkWindowLevelLookupTable/vtkLookupTable/vtkImageMapToWindowLevelColors

简介:系统中提取读取序列图像中的一张,用VTK将灰度图像转换为GRB,然后用GDI+绘图。懒得直接做颜色查找表,直接用VTK中的vtkWindowLevelLookupTable/vtkLookupTable/vtkImageMapToWindowLevelColors,可完成灰度到RGB的转换。保存为RGB的文件如上图,代码如下:void Gray2ColorImg(){ m_Origin[0] = -m_Dim[0] * m_Spacing[0] * 0.5; m_Origin[..

2021-12-26 16:54:32 1207

原创 VTK生成直方图:vtkImageHistogram

简介:统计三维数据的直方图,用于作为阈值分割或直接体绘制的背景,指示用户进行调节。对于灰度图像,使用vtkImageHistogram就够了。SetHistogramImageScaleToLog() 结果SetHistogramImageScaleToLinear(); 结果SetHistogramImageScaleToSqrt() 结果代码:void ImageHistogram(){ m_Origin[0] = -m_Dim[0] * m_S...

2021-12-26 16:10:02 903

原创 VTK感兴趣勾画 方式二: vtkTexture实现

优点:可实现任意多个不同组织(不同颜色和不透明度)的勾画;缺点:感觉速度还需要再优化下

2021-12-25 11:16:16 607 2

原创 VTK 项目一:MPR和STL+感兴趣勾画

简介:用MFC做的简单的MPR实现和STL三维显示,MPR用vtkImageActor实现,特点就是简单,后续增加STL转掩码体数据,并实现编辑。后面慢慢贴出代码。

2021-11-24 11:15:06 1311

原创 VTK感兴趣勾画 方式一: vtkImageMask实现

使用vtkImageMask 实现

2021-11-19 16:44:43 1720 3

原创 (二) ICP配准方法存在的问题

简介:加深对ICP配准方法存在问题的理解。通过改变初始位置,直观的感受ICP算法对点云初始位置的依懒性;另外观察存在较多冗余信息是ICP配准的精度。存在问题:1、容易陷入局部最优解,可通过改变点云初始位置进行改善。图1 初始位置差异较大时,ICP的配准结果图2 改变初始位置后,ICP的配准结果2、存在较多冗余信息时,IPC配准精度不高整个牙冠在高度上扔没对齐,切牙区最为明显...

2021-09-06 11:21:50 2654 4

转载 (二)三维点坐标求解最优平面

(50条消息) 三维点坐标求解最优平面(法向量)_LucasZhang‘s Blog-CSDN博客

2021-09-03 10:24:33 630

原创 (一)PCL库 ICP配准

简介:通过ICP配准,对齐CBCT提取牙齿与口内扫描获取牙冠,结果失败。原因:可能是因为两者重叠点云数据少,而不重叠部分过多,待后续分析。1、CBCT提取牙齿 与口内扫描获取数据在同坐标系下显示2、PCL库调用ICP进行配准void registCTInteroral(){ char strST[256] = "E:\\CBCT\\lower.ply"; char strCT[256] = "E:\\CBCT\\lower-CT.ply"; pcl::Po.

2021-08-31 09:21:16 1147

原创 (一) 分割得到的掩码数据转换为点云数据

简介:对分割得到的牙齿掩码数据进行转换,转换采用VTK 实现,将掩码转换为PCL可以读取的PLY格式,以进行后续处理。1、掩码数据:采用深度学习方法对CBCT中的牙齿进行提取,结果保存为分析格式(hdr,img);2、将下颌中的牙齿掩码数据,转换为点云的PLY格式,采用VTK读取数据,并根据下颌牙齿掩码值进行提取,然后用vtkMarchingCubes提取表面,并保存为PLY格式; vtkMarchingCubes* marchingCubes = vtkMarchingCubes::N.

2021-08-30 22:13:48 1046 2

原创 (一)VTK 转换 STL 为 PLY 格式,PCL读取PLY格式

简介:由于PLY1.12版本IO模块提供了PCD和PLY两种格式的读取接口,因此需要用VTK进行格式转换,完成STL到PLY格式的转换,或掩码图像到PLY格式的转换,然后用PCL进行读取并进行处理。1、VTK 将STL转换为 PLY格式void stl2ply(){ std::string filename = "P:\\CBCT\\tooth\\upper.stl"; vtkSmartPointer<vtkSTLReader> reader = vtkSmartPoint

2021-08-30 17:58:42 2532 2

转载 (一)PLY 文件格式

PLY FormatPLY or Stanford Polygon format defines a flexible and systematic scheme for storing graphical objects that are described as a collection of polygons. A ".PLY" file is composed of 3 main mandatory sections plus optional ones thereafter. The firs

2021-08-30 15:29:29 817

原创 (一)PCL 1.12 + VS2019 环境配置

最近开始做口腔点云数据处理相关的工作,需要把CBCT数据中的结构转换为点云,因此选择了PCL,PCL在windows下环境的配置已经很简单了,直接安装配置即可使用,这里只对安装过程中遇到的问题和小技巧记录下来。 1、PCL1.12的安装过程可参考链接:(55条消息) PCL安装与配置(Windows10+VS2017 )_syz201558503103的博客-CSDN博客_pcl启动器。 2、安装完成后,需要去安装目录的 <PCL 1.12.0\3rdPart...

2021-08-28 11:01:20 1890 4

原创 原始数据到CT值的转换

用从DICOM文件中读取的rescaleslope值和rescale intercept值可以将每个像素的灰度值转换成CT值。Hu=pixel_val*rescale_slope+rescale_intercept;pixel_val是第i个像素的灰度值Hu是第i个像素的CT值CT 图象的CT 值反映组织对X 射线吸收值(衰减系数u),其单位为H

2017-03-15 09:57:05 12511 5

原创 RTK-fast circular cone-beam CT reconstruction 在Windows 系统下的编译

FFTW3.3.5 在Windows 下的安装1.下载FFTW,官网地址:http://www.fftw.org/;在Download页面,选择:Go here for Windows.分别下载32和64版本。2.生成lib文件,

2017-03-12 17:24:36 2825 4

转载 DCMTK 时间段查询

StudyDate[16];                // (0008,0020)DA 检查日期        字串     格式:YYYYMMDD    示例:20140506Dates and times use Range Matching, so for all dates after and including 2000-01-01 the syntax is "2

2016-06-18 10:16:09 865

原创 封装OpenGL渲染为DLL,C#做UI显示

C# 环境下OpenGL的渲染,有很多的开源库,如:The Tao Framework+.net、SharpGL、opengl4csharp、OpenGL.Net、CSharpGL等等,大体都是将OpenGL的API函数以DLL的方式引入,在进行封装,使得上手很快,对于普通的渲染来说,足够了,但对于像体渲染这样比较耗时的渲染来讲,我更喜欢直接将渲染部分封装到C/C++的DLL中,C#只负责显示;

2016-04-01 10:57:07 3120 5

基于VTK实现的放大镜(局部放大)功能,所有类都基于VTK进行封装和继承,很容易整合到自己的项目之中 资源包含所有源代码

基于VTK实现的放大镜(局部放大)在医学图像处理软件中是一个常用的功能,该功能主要涉及到交互和放大镜功能实现,具体实现过程中(源代码中),wxInteractorStyleImage类主要实现左键按下、移动到抬起这个过程中局部图像放大的交互;wxMagnifierAcotor类实现局部图像方法功能的实现和显示。021_Magnifier.cpp中是主函数和显示DICOM图像的例子。 压缩文件中没有sln文件,但有工程文件。可以直接添加到自己的项目之中;或自己新建工程后,将所有源代码拷贝到自己的工程之中使用。

2024-09-05

VTK-医学图像处理 博文中需要的DICOM测试数据

VTK-医学图像处理 博文中需要的DICOM测试数据

2024-09-05

OpenGL Programming Guide-V4.3

OpenGL Programming Guide-V4.3(英文):中文翻译为OpenGL编程指南,又称红宝书,目前翻译版本最新的是OpenGL3.3,而该文档是是4.3,个人看过OpenGL红宝书的Version2.1和3.3,对比之下发现4.3的改动真的很大,强烈建议看下英文原版的4.3.

2013-09-23

DICOM文件JPEG2000 解压缩与序列分类

可以利用该工具对JPEG2000压缩的DICOM文件进行解压缩,另外一个功能就是对一个文件夹内的不同序列DICOM文件按照序列进行分类,分类后文件目录结构为:病人--study-serial

2012-07-14

hl7 schema

POCD_MT000040就是CDA的消息模型,而CDA.xsd是对POCD_MT000040封装一个根元素。 其它的几个xsd文件,是HL7中的数据类型及编码术语的定义文件。

2011-03-17

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除