在浏览器上调整医学图像窗宽和窗位的方法
技术领域
本发明涉及医学图像处理技术,尤其是涉及一种在浏览器上调整医学图像窗宽和窗位的方法。
背景技术
医学图像分辨率较高,像素灰阶值通常不低于12位(bit)4096级,而普通显示器由于动态范围有限,并受到操作系统限制,只能提供8位256级灰度。并且,由于各种人体组织的医学图像有相对稳定的取值,进行图像分割处理时只对特定范围内的像素值感兴趣,因此,医学图像处理系统必须能根据研究者的需要而显示特定像素值,屏蔽其它范围的像素值。一般而言,该功能通过调节窗宽和窗位实现。
在调窗处理中,窗宽(Window center)是指需要显示图像的范围,调节窗宽主要是影响显示对比度,窗宽越大,图像灰度层次多,组织对比度减少,细节显示差。窗位(Window center)表示显示区域的中心位置。
调节窗宽和窗位是医学图像处理中用以观察不同密度的组织结构或病变的一种显示技术。调窗处理的原理是根据预知的窗宽和窗位值,获得需要显示的窗口的大小(窗宽)和中心位置(窗位),从而将窗口内的像素点的灰阶值转换成显示时的最亮和最暗范围内的值,高于窗口灰度范围的部分置为最亮,低于窗口灰度范围部分设为最暗。
调窗处理在数学表达上就是图像灰度值与显示值的转换,具体转换公式如下:
其中,V为图像数据,G(V)为显示器的显示值,gm为显示器的最大显示值,W为窗宽,C为窗位。
医学图像因其特殊性一直在浏览器上得不到很好的应用,数字影像和通信标准(DICOM,Digitalimaging and Communications in Medicine)提出了WADO协议(其中,WADO协议是DICOM 标准的一部分(Supplement 85 / DICOM 2004 Part 18),同时 WADO协议也是ISO 国际规格(ISO/WD1.14),所以,WADO协议是作为 DICOM 服务器和电子病历之间的共通标准接口的重要内容)用于在web上访问DICOM对象,通过向http服务器传递指定参数来获得调整好窗宽窗位的jpg格式图像。但是,在浏览器上进行显示和调整窗宽窗位时需要安装AxtiveX控件或Java Applet控件。如果没有浏览器插件(如ActiveX控件、Java Applet等)的辅助,则Web上无法处理原始的DICOM医学图像。
由于现有医学图像在浏览器上进行显示和调整窗宽窗位时需要安装AxtiveX控件或Java Applet控件,从而降低了医学图像的处理速度,加大了用户使用的难度和实施的复杂度。
发明内容
本发明所要解决的技术问题是提出一种在浏览器没有插件支持的条件下,在浏览器上调整DICOM医学图像的窗宽、窗位的方法。
本发明采用如下技术方案实现:一种在浏览器上调整医学图像窗宽和窗位的方法,其包括步骤:
A、浏览器加载DICOM医学图像;
B、浏览器拦截通过鼠标移动调整DICOM医学图像的窗宽和窗位的鼠标事件;
C、浏览器根据鼠标事件实时生成向服务器发送请求参数的请求消息;
D、浏览器使用AJAX技术将请求消息发送给服务器;
E、服务器将DICOM医学图像调整成请求消息中的请求参数所指定窗宽和窗位的JPG图像;
F、服务器将JPG图像发送给浏览器进行显示。
其中,所述步骤A具体包括:
浏览器创建一个图像元素,通过WADO协议计算图像元素的URL;
将URL的不变部分(url_prefix)赋值给图像元素的src属性;
由服务器通过URL的不变部分(url_prefix)查找指定的DICOM医学图像,加载后解析出图像数据。
其中,浏览器在加载DICOM医学图像时使用默认的窗宽和窗位。
其中,所述步骤B具体包括:
通过DOM为DICOM医学图像定义鼠标功能函数来记录鼠标移动;
记录鼠标动作,当鼠标停止事件发生时,计算出鼠标在x方向和y方向移动的距离;
根据鼠标在x方向和y方向移动的距离,计算通过鼠标移动调整DICOM医学图像后的新窗宽和新窗位。
其中,所述步骤C具体包括:
将新窗宽、新窗位作为请求参数重新组装为请求消息;
定义变量url_new来保存请求消息的地址。
其中,所述步骤D具体包括:
将url_new 赋值给浏览器中图像元素的src属性;
由浏览器会根据图像元素的src属性向服务器请求新图像。
其中,所述步骤E具体包括:
服务器接收到请求消息后,解析请求参数得到新窗宽和新窗位;
服务器将DICOM医学图像按新窗和新窗位进行调整,并转换生成JPG图像。
其中,所述步骤E还包括:
服务器将生成的JPG图像通过HTTP协议返回给浏览器;
浏览器加载返回的JPG图像并显示。
与现有技术相比,本发明具有如下有益效果:
本发明在浏览器没有安装任何插件下完成,通过浏览器端AJAX技术实时向服务端发送请求,服务端生成相应窗宽、窗位的图像给浏览器显示,因此,本发明不需要安装客户端或无需在浏览器上安装任何插件,即可实现DICOM医学图像的浏览和图像窗宽、窗位的调整,且实现过程更简洁,用户使用更方便。
附图说明
图1是本发明一个具体实施例的流程示意图。
具体实施方式
本发明的核心思想是:不需要在浏览器安装任何插件,直接通过AJAX(Asynchronous JavaScript and XML,异步JavaScript和XML)技术实时向服务端发送请求参数,参数包含指定的窗宽、窗位,由服务端根据所述请求参数生成相应图片,然后传给浏览器显示。
为便于理解本发明,先对AJAX技术进行简要介绍。
AJAX用来描述一组技术,它使浏览器可以为用户提供更为自然的浏览体验。在AJAX之前,Web站点强制用户进入提交/等待/重新显示范例,用户的动作总是与服务器的“思考时间”同步。AJAX提供与服务器异步通信的能力,从而使用户从请求/响应的循环中解脱出来。借助于AJAX,可以在用户单击按钮时,使用JavaScript和DHTML立即更新UI,并向服务器发出异步请求,以执行更新或查询数据库。当请求返回时,就可以使用JavaScript和CSS来相应地更新UI,而不是刷新整个页面。最重要的是,用户甚至不知道浏览器正在与服务器通信:Web站点看起来是即时响应的。采用AJAX后,可以缩短Web站点的响应时间,提高服务的处理速度。
在一个优选实施例中,前端为浏览器,后端为运行了FastCGI程序(FastCGI程序是一个常驻型的公共网关接口(CGI,Common Gateway Interface),还支持分布式的运算,FastCGI 程序可以在网站服务器以外的主机上执行并且接受来自其它网站服务器来的请求)的Web服务器(以下简称“服务器”)。FastCGI程序主要通过Web服务器转发由浏览器发送的请求参数以生成相应的图像返回给浏览器。
在实际应用过程中,用户一般通过鼠标的滑动来调整窗宽和窗位,所以我们根据用户的鼠标操作来计算请求参数,然后通过浏览器来显示参数对应的图像。如图1所示,本发明具体步骤如下:
步骤S1、浏览器加载DICOM医学图像。
浏览器创建一个图像(image)元素,id为imgid,然后通过WADO协议,计算图像元素的统一资源定位地址(URL, Uniform / Universal Resource Locator)。浏览器在第一次加载DICOM医学图像时使用默认窗宽和窗位,请求参数包含请求的DICOM医学图像StudyUID、SeriesUID、ImageUID、窗位wndCenter、窗宽wndWidth。
我们定义变量url_prefix来记录URL的不变部分,假设服务器的访问路径为“/wado.cgi",根据WADO协议的要求:
url_prefix="/wado.cgi?RequestType=WADO&Studyuid="+StudyUID+"&seriesuid="+SeriesUID+"&imageuid="+ImageUID,从而将url_prefix赋值给"img"元素的src属性(在HTML语言中,图片所用标签<img>、<img>的src属性用来指定图片位置),浏览器就会显示src对应的URL图像。
服务器首先通过请求的url_prefix查找指定的DICOM医学图像,加载后解析出图像数据,然后调整成默认的窗宽和窗位,返回给浏览器。其中,DICOM医学图像加载后,解析出图像数据保存在内存中,以快速响应后续请求。
步骤S2、浏览器拦截调整DICOM医学图像的窗宽和窗位的鼠标事件。
加载DICOM医学图像后,通过DOM(Document Object Model,DOM)API(Application Programming Interface,API)为DICOM医学图像定义功能函数,这里我们定义了鼠标键按下消息OnMouseDown、鼠标键弹起消息OnMouseUp和鼠标移动函数OnMouseMove,并定义变量bStart来记录动作开始。当鼠标键按下时,检测按下的键,记下鼠标在X和Y方向的坐标位置(startX,startY);并设置bStart为true,当鼠标停止事件event发生时,记录下当前鼠标在X和Y方向的坐标位置(clientX,clientY)。则在鼠标移动的过程中,由鼠标移动函数OnMouseMove计算出鼠标在x方向和y方向移动的距离offsetX和offsetY:
offsetX = event.clientX – startX,
offsetY = event.clientY – startY。
然后计算请求参数(即新窗宽、新窗位):
wndWidth(新窗宽)= wndWidth + offsetY,
wndCenter(新窗位)= wndCenter + offsetX。
并且,每次鼠标移动函数OnMouseMove执行完之前要重新记下鼠标在X和Y方向的坐标位置,即startX = event.clientX;startX = event.clientX。
步骤S3 、浏览器根据鼠标移动函数产生的鼠标移动消息实时生成向服务器发送请求参数的请求消息。
将请求参数重新组装为请求消息,并定义变量url_new来保存请求消息的地址:
url_new=url_prefix+"&windowcenter="+wndCenter +"&windowwidth="+wndWidth。
步骤S4、由浏览器使用AJAX技术向服务器发送所述请求信息以请求新图像。
将请求消息的url_new 赋值给浏览器中图像(image)元素的src属性,浏览器会自动根据image中src属性向服务器请求新图像。
var image=document.getElementById(imgid);
image.src=url_new
步骤S5、服务器根据请求参数将DICOM医学图像调整为指定窗宽和窗位的JPG图像。
服务器接收到请求参数后,解析请求参数得到新窗宽和新窗位,将第步骤S1保存在内存中的图像数据按新窗和新窗位调整,然后生成JPG图像。
S6、服务器将生成的JPG图像发送给浏览器进行显示。
服务器生成JPG图像后,通过HTTP协议返回给浏览器,浏览器加载返回的JPG图像显示给用户。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。