pacs传图ct图像后处理技术变小了

影响PACS的相关因素_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
影响PACS的相关因素
上传于||暂无简介
阅读已结束,如果下载本文需要使用0下载券
想免费下载更多文档?
定制HR最喜欢的简历
下载文档到电脑,查找使用更方便
还剩3页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢君,已阅读到文档的结尾了呢~~
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
CT的图像传输与PACS系统.doc
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口君,已阅读到文档的结尾了呢~~
广告剩余8秒
文档加载中
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
PACS系统中图像数据传输完整性的保证
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口图形图像(29)
C#编程(11)
基于HTML5的PACS HTML5图像处理(7)实现客户端JS调整窗宽窗位
要查看此系统更多的图像处理功能请参考:
区域医疗移动医疗影像解决方案--基于HTML5的PACS--HTML5图像处理
在此之前,此系统是结合DICOM的WADO标准,在里通过javascript操作返回的JPG图片。这种服务器端解析,客户端展现的方式,对实现图像的移动、缩放、旋转、测量等图像操作能够实现实时的交互。但这种方式存在着几个弊端:
1.获取图像上的CT值(钙化值)信息的时候,要频繁的和服务器进行交互。
2.调整图像的窗宽窗位或者对图像进行反色,也要和服务器进行频繁的交互。
3.对图像进行测量(长方形测量,椭圆测量等)只能获取到面值和周长的简单的信息,这对于医生的诊断没多大的用处,实际运用中需要知道所测量的区域的最大值、最小值、方差值、均值等测量信息。
&以上的缺点归结为一点:即本地没有处理像素信息的操作。但是HTML5对于像素级处理的能力已经支持得很好,完成可以实现客户端对像素信息的操作。所以为了解决以上问题最近对系统做了一次比较大的升级。即客户端端直接操作DICOM的像素数据进行JS端图像的生成以及JS端实现窗宽窗位的调整。
获取dicom中的像素数据,可考虑以下两种方式:
A:服务器端直接以字节流的方式返回DICOM文件,客户端用JS来接收字节流,并负责解析DICOM中的图像数据,这种方式不仅要根据DICOM的传输语法()Transfer Syntax UID,还要根据 &()Samples per pixel、()Photometric Interpretation,()Rows,()Columns,()Bits Allocated,()Pixel Representation等标签来确定像素数据的结构,复杂点的可能还会用到查找表来查找(()Photometric
Interpretation的值等于==PALETTE&COLOR)。对于非压缩的显示VR或者是隐形VR,()Photometric Interpretation等于MONOCHROME1或者MONOCHROME2来说JS解析出像素数据确实很方便,但是DICOM文件各式各样,要写出包罗给种传输语法以及各种像素结构的JS文件确实很费劲。还要考虑到多帧动态图像,如果多针图像很大整个文件下载下来解析估计会彻底奔溃。所以觉得这种方式不太可行。(虽然这过程中实现了显示VR的DICOM文件的JS解析,但是中途考虑到复杂性和难度还是放弃了)。
B:从服务器端获取DICOM文件的像素数组,既然目前基于C/S模式的PACS已经相当成熟,各式各样的第三方开源的dicom解析工具如DCMTK,DCM4CHE,MDCM,OPENDICOM等也相当的多,用开源的DICOM解析工具获取到像素数据也相当的方便。所以在服务器获取到像素数据返回给JS端,让JS端直接操作像素数据来生成要显示的图像。对于多帧图像也可以按需按帧的从服务器下载像素数据。
言归正传,目前此系统是基于第二种方式来实现。需要特别注意的是:做窗宽窗位调整的时候要先做Hounsfield 值的转换。&
HU[i] = pixel_val[i]*rescaleSlope+&rescaleIntercept。窗宽窗位的调整使用了线性的window-leveling算法针对CT/MR等图像,或者是非线性的gamma算法针对DX图像(即当windowWidth比较大的时候要考虑非线性的gamma算法,因为线性算法中每windowWidth/255个原始密度会压缩成一个显示灰度,windowWidth很大的时候损失可能会很大)
= (2*windowCenter
- windowWidth)/2.0&-&0.5;&
= (2*windowCenter
+ windowWidth)/2.0&-&0.5;
04.4&for&(var
i != nNumP i++){
05.5&&&&&showPixelValue
= (pixelHuValue[i] - min)*255.0/(double)(max
= (2*windowCenter
- windowWidth)/2.0&-&0.5;&
= (2*windowCenter
+ windowWidth)/2.0&-&0.5;
10.10&for&(var
i != nNumP i++){
11.11&&&&&showPixelValue
Math.pow(pixelHuValue/(max-min),&1.0/gamma);
如下代码展示JS端如何用后台获取到的像素数据生成图像。其中用到了查找表的概念。
010.10&var
018.18&function
createImageCanvas(windowCenter,windowWidth,bitsStored,rescaleSlope,rescaleIntercept){
019.19&&&&&var
lookupObject=new&LookupTable();
020.20&&&&lookupObject.setData(windowCenter,windowWidth,bitsStored,rescaleSlope,rescaleIntercept);
021.21&&&&&lookupObject.calculateHULookup();
022.22&&&&&lookupObject.calculateLookup();
023.23&&&&
024.24&&&&&var
imageCanvas=document.createElement('canvas');
025.25&&&&&imageCanvas.width
026.26&&&&&imageCanvas.height
027.27&&&&&imageCanvas.style.width
028.28&&&&&imageCanvas.style.height
029.29&&&&&var
tmpCxt = imageCanvas.getContext('2d');
030.30&&&&&var
imageData = tmpCxt.getImageData(0,0,width,height);
031.31&&&&&var
032.32&&&&&for(var
yPix& yPix++)
033.33&&&&&{
034.34&&&&&&&&&for(var
xPix&xPix++)
035.35&&&&&&&&&{
036.36&&&&&&&&&&&&&var
offset = (yPix * width + xPix) *&4;
037.37&&&&&&&&&&&&&var
pixelValue=lookupObject.lookup[pixelBuffer[n]];
038.38&&&&&&&&&&&&&imageData.data[offset]=&&&
039.39&&&&&&&&&&&&&imageData.data[offset+1]=pixelV
040.40&&&&&&&&&&&&&imageData.data[offset+2]=pixelV
041.41&&&&&&&&&&&&&imageData.data[offset+3]=255;
042.42&&&&&&&&&&&&&n++;
043.43&&&&&&&&&}
044.44&&&&&}
045.45&&&&&tmpCxt.putImageData(imageData,&0,0);
046.46&&&&
047.47&&&&&return&imageC
053.53&function
LookupTable()
055.55&&&&&this.bitsS
056.56&&&&&this.rescaleS
057.57&&&&&this.rescaleI
058.58&&&&&this.windowC
059.59&&&&&this.windowW
060.60&&&&
061.61&&&&&this.huL
062.62&&&&&this.
065.65&LookupTable.prototype.setData=function(wc,ww,bs,rs,ri)
066.66&{&&&
067.67&&&&&this.windowCenter=
068.68&&&&&this.windowWidth=
069.69&&&&&this.bitsStored=
070.70&&&&&this.rescaleSlope=
071.71&&&&&this.rescaleIntercept=
074.74&LookupTable.prototype.setWindowingdata=function(wc,ww)
076.76&&&&&this.windowCenter=
077.77&&&&&this.windowWidth=
080.80&LookupTable.prototype.calculateHULookup=function()
082.82&&&&&var
size=1&&this.bitsS
083.83&&&&&this.huLookup
=&new&Array(size);
084.84&&&&&for(var
inputValue=0;inputValue&inputValue++)
085.85&&&&&{
086.86&&&&&&&&&if(this.rescaleSlope
== undefined &&&this.rescaleIntercept
== undefined) {
087.87&&&&&&&&&&&&&this.huLookup[inputValue]
088.88&&&&&&&&&}&else&{&&&&&&
089.89&&&&&&&&&&&&&this.huLookup[inputValue]
= inputValue *&this.rescaleSlope
+this.rescaleI
090.90&&&&&&&&&}
091.91&&&&&}
098.98&LookupTable.prototype.calculateLookup=function()
099.99&{&&&
100.100&&&&&var
size=1&&this.bitsS
101.101&&&&&var
min=this.windowCenter-0.5-(this.windowWidth-1)/2;
102.102&&&&&var
max=this.windowCenter-0.5+(this.windowWidth-1)/2;
103.103&&&&&this.lookup=new&Array(size);
104.104&&&&&for(var
inputValue=0;inputValue&inputValue++)
105.105&&&&&{
106.106&&&&&&&&&if(this.huLookup[inputValue]&=min){
107.107&&&&&&&&&&&&&this.lookup[inputValue]=0&;
108.108&&&&&&&&&}else&if&(this.huLookup[inputValue]&max){
109.109&&&&&&&&&&&&&this.lookup[inputValue]=255;
110.110&&&&&&&&&}else{&&&&&&&&&&&&&&&
111.111&&&&&&&&&&&&&var
y=((this.huLookup[inputValue]-(this.windowCenter-0.5))/(this.windowWidth-1)+0.5)*255;
112.112&&&&&&&&&&&&&this.lookup[inputValue]=
parseInt(y);
113.113&&&&&&&&&}
114.114&&&&&}
115.115&};
鼠标调整窗宽窗位的时候JS端生成图像+绘制图形的速度。
1.512 X 512大小的CT图像调整窗宽窗位速度
&2.512 X 512大小的彩色CT图像调整窗宽窗位速度
&3.512 x 512大小的MR图像调整窗宽窗位速度
&4.2057 X 1347大小的CR图像调整窗宽窗位速度
5.有了像素信息后就可以在客户端实时的获取到CT值了。
6:有了像素信息后测量也可以获取到测量区域的最大值、最小值、方差值、均值等测量信息了
进测试,调整窗宽窗位时HTML5上绘制图形的时间还是很快的,总的绘制时间在10毫秒的数量级,而且发现绘制时间还可以变少,这绘制时间包括了图像边角上的文字信息,但是HTML5绘制文字的信息效率明显比绘制图像的效率要底,所以不必每次刷新都绘制文本信息,可以加以参数控制在图像切换或者调窗宽窗位的时候也就是文本信息变化的时候才绘制文字信息。关于图像的生成时间,发现图像的生成时间和图像的宽X高成正比,图像越大所需时间越长,对于CT/MR等图像时间大概在几十个毫秒级。对于的CR图像时间大概在400毫秒级,对于多的DX图像生成图像的时间就有点卡顿了,要1秒-2秒左右。。。这速度还得想办法优化有木有。。。。。还有对于DX图像调整窗宽窗位虽然使用了gamma算法,但是出来的图像,我总感觉得没有用第三方工具比如RadiAnt上看见的光滑,噪声有点大。所以在没得到更好的解决方案前,目前DX的图像只能特殊化即保留原来的方式在服务器端直接生成JPG让客户端直接绘制,希望会DICOM图像算法的大神们看到此文章后能给小弟我一点关于DX调窗宽窗位的意见,是不是还要用到别的算法啥的?。先谢谢了。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:29725次
排名:千里之外
转载:70篇
(4)(1)(4)(4)(3)(15)(11)(3)(9)(2)(5)(7)(10)(3)PACS基础知识_图文_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
评价文档:
PACS基础知识
上传于||暂无简介
大小:3.20MB
登录百度文库,专享文档复制特权,财富值每天免费拿!
你可能喜欢}

我要回帖

更多关于 ct图像重建 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信