一种利用gpu加速cr/dr/ct图像显示及图像处理的方法及专用设备的制作方法

文档序号:6577560阅读:270来源:国知局
专利名称:一种利用gpu加速cr/dr/ct图像显示及图像处理的方法及专用设备的制作方法
技术领域
本发明属于医学图像显示领域,是一种用于PACS客户端利用图形处理器 GPU (graphics processing unit)的加速CR/DR/CT图像显示及处理的方法及专 用设备。
背景技术
现有PACS系统,因为图像显示采用的是早期的图形设备接口 GDI(Graghic Deice Interface),由于GDI在功能上有限制,无法实现在PACS客户端上医 生常用的图像操作的硬件加速;在原先CR/DR/CT图像显示及图像处理技术 中,使用PC的CPU进行图像处理,然后传送的显存,等待显示,但由于CPU 同时还负担其他进程的运行,而医生常用的CR/DR图像数据量较大,CPU因 此处于满负荷运作,降低了出片的速率,影响医生的工作效率;另外,原先 技术中的系统固定管线所默认的光照处理,显示速度较慢,对医生阅片会产 生负面干扰;原先技术中的显示体位置设置,缺乏灵活性,且不利于后期扩 展自定义操作。

发明内容
本发明要解决的技术问题是提供一种利用GPU加速CR/DR/CT图像显示及 图像处理的方法及专用设备,利用GPU的处理能力,加速CR/DR图像的显示, 利用GPU完成CR/DR图像的縮放、旋转、局部放大、窗宽窗位调整等处理工 作,达到加速处理日常阅片工作的目的;同时,提供相应的接口,让自行编写 的处理程序能够应用在已显示图像上,达到高速实验图像分割、配准等函数功 能的目的。为了解决上述技术问题,本发明提供提供一种利用GPU加速CR/DR/CT图 像显示及图像处理的方法,包括以下步骤
a) 从PACS系统的图像服务器或者CR/DR/CT的工作站获取10位无符号的 DIC0M医学图像数据;
b) 将获取的10位无符号的DICOM医学图像数据,转换为GPU所使用的 R10G10B10A2—UINT格式16位图像纹理数据;
c) 判断图像纹理数据的大小是否为2n倍,如果是,则不调整图像;否 则,将图像大小调整为大于原始尺寸的最小2n倍图像;
d) 判断当前系统DIRECTX版本,如果小于DIRECTX 10版本, 一张纹理不 能存储CR/DR的图像,将纹理切分为多块小纹理阵列,根据切分的纹理阵列, 设置面片阵列,将小纹理切片分别贴于对应的面片上;如果是DIRECTX 10或 者DIRECTX IO以上版本, 一张纹理能够存储CR/DR的图像,设置单块面片, 将图像纹理贴于表面;
e) 根据GPU的处理能力,具体显示体的设置,对纹理图像数据用基于GPU 的像素处理程序进行实现医学图像窗宽窗位的设置,医学图像的负片处理;或 者对现实的医学图像,利用基于GPU的顶点处理程序实现医学图像的移动、 医学图像的縮放、医学图像的旋转、医学图像的翻转。
为实现上述方法,需要专门的设备,包括a) PC电脑一台,安装有支持 DX10标准的显卡及驱动,WindowsXP操作系统或者WindowsVista Professional版本操作系统,具备DX10功能;软件部分包括有医学图像数 据读取模块,基于GPU的数据图像预处理模块,显示体设置模块,基于GPU 的图像滤波模块,基于GPU的图像纹理设置模块,基于GPU的图像处理模块; b) CR/DR工作站或者PACS服务器;其中,PC电脑链接着CR/DR工作站或者 PACS服务器。
采用上述这种利用GPU加速CR/DR/CT图像显示及图像处理的方法,由于 PC电脑软件中,包括了医学图像数据读取模块,基于GPU的数据图像预处理模块,显示体设置模块,基于GPU的图像滤波模块,基于GPU的图像纹理设 置模块,基于GPU的图像处理模块;其中,GPU (Graphic Processing Unit, 图形处理器)是相对于CPU的一个概念,在现代的计算机中,特别是在图像 工作站,部分游戏的发烧友的家用电脑中,图形的处理变得越来越重要,需 要一个专门的图形的核心处理器。GPU是显示卡的"心脏",也就相当于CPU 在电脑运行中的核心作用,它决定了该显卡的档次和大部分性能,同时也是 2D显示卡和3D显示卡的区别依据;2D显示芯片在处理3D图像和特效时主要 依赖CPU的处理能力,称为"软加速";3D显示芯片是将三维图像和特效处 理功能集中在显示芯片内,也即所谓的"硬件加速"功能,初期的GPU只是 硬件上简单支持T&L (Transform and Lighting,多边形转换与光源处理) 的显示芯片,随着显示技术的飞速发展,GPU的功能己经不再是固定管线, shader概念的提出,让GPU可以依据制定的程序对顶点和像素进行处理,而 发展到SM4.0 (shader model)规格的DX10级别的显卡,更是以统一渲染架 构将顶点渲染器和像素渲染器整合在一起,对程序指令的最大数目从512条 增加到了 64000条;暂存器数量也从原先的32个增加到t^人的4096个,让 GPU可以处理更多原本需要CPU处理的程序,也让软件工程师能够以更便利 的方式利用GPU处理非图形数据。而对纹理的支持也达到了最大8096*8096, 己经超过了 CR/DR图形的尺寸,使得以一张纹理存储CR/DR的图像成为可能。 为了便于操纵GPU的特殊指令,出现了一些列的高级描影语言,这些语 言工具能够让用户编写类似C的代码,随后编译转换成GPU的shader指令。 这些工具整合了可以直接映射到GPU的简单数据并行编程构造;经GPU存储 和操作的数据被形象地比喻成"流"(stream),类似于标准C中的数组;核 心(Kernel)是在流上操作的函数,在一系列输入流上调用一个核心函数意 味着在流元素上实施了隐含的循环,即对每一个流元素调用核心体。在线性 代数求解、快速傅立叶转换、光线追踪这些问题的处理上,利用GPU的处理 能力,在相同高速缓存、相同CPU指令优化条件下,速度提升高达7倍之多。本发明的实施,取代了传统的CPU对图像数据的操作,通过将CR图像数据 直接传送给GPU,使GPU能更有效的处理数据.本发明的实施减少了总线通信 量CPU的负载,縮短了 CR图像显示级变换操作呈现的时间。
其中,限定具体的图像数据以及转换的纹理数据的具体要求,是将10位 无符号的DIC0M图像数据,转换为GPU所使用的R10G10B10A2—UINT格式纹理 数据,因为医学图像的特殊性,数据以10位无符号数存储,为了保证其细节 不被遗漏,在上述方案中,所有数据均存储为DXGI一FORMAT一R10G10B10A2一UINT 格式纹理,通过上述具体的限制,能保证图像数据的合理转换。
图像纹理的组织是采取单张纹理存储图像或多张纹理分别存储部分图像 的方式,并同时决定图像纹理所依附的方形面片数量及其组织,能保证图像 纹理不被系统默认的采样函数误处理,在程序的运行过程中,均抛弃固定管 线中的投影变换、矩阵变换和光照变换,采用自定义的vertex shader和pixel shader对图像移动、縮放、旋转、反转操作所需的顶点变换和窗宽窗位调整、 负片调整等操作所需的像素处理进行处理。
自定义的像素处理程序(pixel shader),对图像的窗宽窗位,负片操作 进行处理,能加快显示速度,同时取代系统固定管线所默认的光照处理,防 止对医生阅片产生负面干扰,用pixel shader取代了传统的基于GDI显示的方 案中负责处理图像数据的CPU的工作,有利于提高系统整体效率。
具体显示体的设置,使用的是自定义的顶点处理程序(vertex shader) 处理医学图像的移动、縮放、旋转、翻转等常见操作;因为采用了高度灵活 的shader程序,可以后期扩展入更多自定义的操作,如图像边缘强化,图像 区域分割,图像伪彩色显示等功能,可以作为扩充函数的实验平台。


下面结合附图和实施例对本发明技术方案进一步说明
图1是本发明一种利用GPU加速CR/DR/CT图像显示及图像处理的方法的具体流程图2是本发明一种利用GPU加速CR/DR/CT图像显示及图像处理的方法需 要的专门设备的具体布置图。
具体实施例方式
如图l、图2所示,本发明一种利用GPU加速CR/DR/CT图像显示及图像 处理的方法需要的专门设备,包括a) PC电脑1一台,PC电脑1具有显示 屏幕11, PC电脑1中安装有支持DX10标准的显卡及驱动,WindowsXP操作 系统或者WindowsVista Professional版本操作系统,具备DXIO功能;软件 部分包括有医学图像数据读取模块,基于GPU的数据图像预处理模块,显示 体设置模块,基于GPU的图像滤波模块,基于GPU的图像纹理设置模块,基 于GPU的图像处理模块;b) CR/DR工作站21、 22或者PACS服务器31、 32、 33;其中,PC电脑1连接着CR/DR工作站21、 22或者PACS |艮务器31、 32、 33。
利用GPU加速CR/DR/CT图像显示及图像处理的方法,通过如下步骤实现
a) 从PACS系统的图像服务器或者CR/DR/CT的工作站获取10位无符号的 DICOM医学图像数据;
b) 将获取的10位无符号的DICOM医学图像数据,转换为GPU所使用的 R10G10B10A2—UINT格式16位图像纹理数据;
c) 判断图像纹理数据的大小是否为2n倍,如果是,则不调整图像;否 则,将图像大小调整为大于原始尺寸的最小2n倍图像;
d) 判断当前系统DIRECTX版本,如果小于DIRECTX 10版本, 一张纹理不 能存储CR/DR的图像,将纹理切分为多块小纹理阵列,根据切分的纹理阵列, 设置面片阵列,将小纹理切片分别贴于对应的面片上;如果是DIRECTX 10或 者DIRECTX IO以上版本, 一张纹理能够存储CR/DR的图像,设置单块面片, 将图像纹理贴于表面;e)根据GPU的处理能力,具体显示体的设置,对纹理图像数据用基于GPU 的像素处理程序进行实现医学图像窗宽窗位的设置,医学图像的负片处理;或 者对现实的医学图像,利用基于GPU的顶点处理程序实现医学图像的移动、 医学图像的縮放、医学图像的旋转、医学图像的翻转。
下面将按模块更为详细的描述本发明的技术方案
数据预处理模块
读取DICOM数据到内存,pDICOMImage[ilmagelndex]为指向存储图像内 容的指针数组,ilmagelndex为图像索引,取值为0到图像数目-1。当显示图 像为CR/DR时,ilmagelndex取0值,因为通常CR/DR—个序列只有一副图 像。ilmageHeight, ilmageWidth为当前显示图像的高度及宽度。
调用DirectX的IDirect3DDevice9: :GetDeviceCaps ( D3DCAPS9 * pCaps)函数获取当前GPU设备的最大材质尺寸。函数参数为指向D3DCAPS9 结构的指针。结构中的MaxTextureWidth和MaxTextureHeight成员变量为 当前设备支持的材质的最大尺寸。
比较条件 1 : ilmageWidth〈MaxTextureWidth , 条件 2 iImageHe i ght <MaxTextureHe i ght 。
条件1,条件2为真,真时调用CreateTexture2D建立大小为 MaxTextureWidth *MaxfextureHeight的2D纹理,其中每个纹理像素的RGB 分量均为DICOM文件的值,ALPHA分量为0。纹理图像大于DICOM部分以0填 充。同时建立1个四边形面片(RectPatch)。
条件1,条件2为真,假时调用CreateTexture2D建立大小为 MaxTextureWidth *MaxTextureHeight 的 2D 纹理,纹理数量为 ilmageheight/MaxTextureHeight+l, 同 时 建 立
ilmageheight/MaxTextureHeight +1四边形面片,面片纵向排列。编号为i 的子纹理块与编号为i的面片对应。I取值为0到 ilmageheight/MaxTextureHeight。条件1,条件2为假,真时调用CreateTexture2D建立大小为 MaxTextureWidth *MaxTextureHeight 的 2D 纹理,纹理数量为 ilmageWidth/MaxTextureWidth+l, 同 时 建 立
ilmageWidth/MaxTextureWidth+l四边形面片,面片横向排列。编号为j的子 纹理块与编号为j的面片对应。J取值为0到ilmageWidth/MaxTextureWidth。
条件1,条件2为假,假时调用CreateTexture2D建立大小为 MaxTextureWidth *MaxTextureHeight 的 2D 纹理,纹理数量为 ( ilmageWidth/MaxTextureWidth+l ) *
( ilmageheight/MaxTextureHeight+l ) , 同 时 建 立 (ilmageWidth/MaxTextureWidth+l)氺(ilmageheight/MaxTextureHeight+l 四边形面片,面片呈网格排列。编号为(j, i)的纹理与编号为(j, i)的面 片对应。J取值为0到ilmageWidth/MaxTextureWidth。 I取值为0到 iImagehe i ght/MaxTextureHe i ght 。
显示环境准备初始设置WorldMatrix世界变换矩阵,ViewMatirx视口 变换矩阵,ProjectMatrix透视变换矩阵,TransMatrix物体变换矩阵。建立 摄像机gCamera,其中gCamera. focus为摄像机初始位置,gCamera. Minfocus 和gCamera. Maxfocus分别为摄像机在摄像机方向上的最小位置和最大位置。 摄像机指向与面片法线方向相反。关闭固定管线的光照处理。设置 sampler—state的MipFilter = D3DTEXF—NONE; MinFilter = D3DTEXF—POINT; MagFilter = D3DTEXF_P0INT;
渲染场景,从系统读取用户输入,根据输入调用相应的功能函数。
旋转图像的实现图像旋转通过以下verex shader指令段实现
oPos = mul( Pos, TransMatrix);
oPos= mul( oPos, WorldMatrix);
oPos二 mul( oPos, ViewMatrix);
oPos二 mul( oPos, ProjectMatrix);oTex = Tex;
其中oPos为Vertex shader输出的顶点位置信息,其中oTex为Vertex shader输出的材质坐标信息,旋转图形不改变每个顶点的材质坐标。 WorldMatrix为世界变换矩阵,ViewMatirx为视口变换矩阵,ProjectMatrix 为透视变换矩阵,TransMatrix为物体变换矩阵,本发明中,将2维图像旋
转映射为面片绕z轴旋转,其格式为kose, sine, o, o; -sine, cose,
0, 0; 0, 0, 1, 0; 0, 0, 0, 1}
縮放图像的实现图像旋转通过以下verex shader指令段实现
oPos 二 mul( Pos, TransMatrix);
oPos二 mul( oPos, WorldMatrix);
oPos= mul( oPos, ViewMatrix);
oPos= mul( oPos, ProjectMatrix);
oTex 二 Tex;
其中oPos为Vertex shader输出的顶点位置信息,其中oTex为Vertex shader输出的材质坐标信息,旋转图形不改变每个顶点的材质坐标。 WorldMatrix为世界变换矩阵,ViewMatirx为视口变换矩阵,ProjectMatrix 为透视变换矩阵,TransMatrix为物体变换矩阵,本发明中,将2维图像旋 转映射为摄像机在朝向上的移动,其移动量为AD,再将其转换为面片的变 换矩阵,因为在本方案中,位移只发生在Z轴方向,TransMatrix格式为U, 0, 0, 0; 0, 1, 0, 0; 0, 0, 1, 0; 0, 0, -AD, 1}
窗宽窗位调整的实现
窗宽窗位的概念窗宽窗位技术是针对人眼对灰阶的分辨力有限这个缺
点,在实际工作中将不同的的放射强度(Raiodensity)重新映射到256种不同 程度的灰价,这些不同的灰价可以依窗宽的不同范围来重新定义衰减值。
用pixel shader实现调整窗宽窗位操作
Float fErr=0. 000005;Float4 r;
R=tex2D(samTexture, Tex ); If
((r. x+fErr<(WinLev—WinW/2))||(r. x-fErr<(WinLev—WinW/2)) )return {0, 0, 0, 0};
If ((r. x+fErr>(WinLev+WinW/2))||( r. x-fErr〈(WinLev-WinW/2)) return {256. 0, 256. 0, 256. 0, 0}; R=(r. xyz-(WinLev-WinW/2))*256. 0/WinW; Return r
其中ferr控制浮点预算中的误差;samTexture为采样的贴图,即设置为 纹理贴图的CR图像;R为对图像纹理的采样结果,即设置为纹理贴图的CR 图像中的一个像素值。
负片处理的实现
负片处理是交换图像中像素点的灰阶值。本发明中,遵照256级灰度的 规定,用调整后的像素值与256求补的方法进行负片操作。 首先用pixel shader实现窗宽窗位调整操作 具体处理过程同上。 负片的操作 R*-1+256;
其中R为操作6里面处理过的像素值。
对数学实验的支持本方案开放了程序内部使用的渲染参数变量值,让 使用者可以使用HLSL语言编写相应的shader程序,本方案内部通过 D3DXCreateEffectFromFile编译入使用这提供的shader程序,并通过将方 案内部的变量通过ID3DXBaseEffect::Se讨系列函数将状态值传递给shader 程序,从而实现对使用者快速验证GPU算法的需要。
权利要求
1. 一种利用GPU加速CR/DR/CT图像显示及图像处理的方法,其特征在于包括以下步骤a)从PACS系统的图像服务器或者CR/DR/CT的工作站获取10位无符号的DICOM医学图像数据;b)将获取的10位无符号的DICOM医学图像数据,转换为GPU所使用的R10G10B10A2_UINT格式16位图像纹理数据;c)判断图像纹理数据的大小是否为2n倍,如果是,则不调整图像;否则,将图像大小调整为大于原始尺寸的最小2n倍图像;d)判断当前系统DIRECTX版本,如果小于DIRECTX10版本,一张纹理不能存储CR/DR的图像,将纹理切分为多块小纹理阵列,根据切分的纹理阵列,设置面片阵列,将小纹理切片分别贴于对应的面片上;如果是DIRECTX10或者DIRECTX10以上版本,一张纹理能够存储CR/DR的图像,设置单块面片,将图像纹理贴于表面;e)根据GPU的处理能力,具体显示体的设置,对纹理图像数据用基于GPU的像素处理程序进行实现医学图像窗宽窗位的设置,医学图像的负片处理;或者对现实的医学图像,利用基于GPU的顶点处理程序实现医学图像的移动、医学图像的缩放、医学图像的旋转、医学图像的翻转。
2. —种利用GPU加速CR/DR/CT图像显示及图像处理的方法的专门设备,其特征在于,包括a) PC电脑一台,安装有支持DXIO标准的显卡及驱动,WindowsXP操作系统或者WindowsVista Professional版本操作系统,具备DX10功能;软件部分包括有医学图像数据读取模块,基于GPU的数据图像预处理模块,显示体设置模块,基于GPU的图像滤波模块,基于GPU的图像纹理设置模块,基于GPU的图像处理模块;b) CR/DR工作站或者PACS服务器;其中,PC电脑链接着CR/DR工作站或者PACS服务器。
全文摘要
本发明属于医学图像显示领域,是一种利用GPU加速CR/DR/CT图像显示及图像处理的方法及专用设备,包括PC电脑一台,CR/DR工作站或者PACS服务器,其中,PC电脑链接着CR/DR工作站或者PACS服务器,利用了新型GPU的通用计算能力,实现了CR/DR/CT图像的快速显示,图像的显示和图像处理功能均利用GPU完成,提出了将图像分割拼合的处理方法,对以往PACS使用的GDI二维加速不同,本方法充分利用了GPU的通用计算能力,从而将CPU从图像处理的繁重计算中解放出来,专心于数据通讯及数据安全的处理,提高了系统效率。
文档编号G06T1/00GK101520900SQ200910131429
公开日2009年9月2日 申请日期2009年3月30日 优先权日2009年3月30日
发明者何中市, 李志超, 健 王 申请人:中国人民解放军第三军医大学第一附属医院
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1