DICOM与图像压缩

对于写DICOM HTML5 Viewer技术揭秘系列文章,我们原本是想为广大的想了解医学影像技术的朋友、以及医疗IT相关的人士写一些DICOMHTML5相关的科普类文章,便于大家了解从技术角度上讲什么样的软件才能称之为DICOM HTML5 Viewer,怎样评价一个DICOM HTML5Viewer的实现的好坏。随着文章的不断的深入讲述,这个系列的文章内容似乎越来越多的向着医疗IT的技术方向延伸。我们只能尽量以非IT技术的角度去给大家继续讲述DICOMHTML5结合后的是非,尽量不以一个IT人士或者程序员教程的角度去讲述。

    闲话不多说,回到今天的主题:DICOM与图像压缩的相关问题。我们知道DICOM标准本身就规定了支持的一系列的图像压缩的算法,那么在适用于HTML5的环境下,图像压缩又有哪些变化和发展呢?且听我们慢慢为你说来。


DICOM标准中的图像压缩

熟悉DICOM标准的朋友应该都知道,DICOM标准里有个很重要的概念TransferSyntax,中文常直译做传输语义。顾名思义,Transfer Syntax就是指图像在进行网络传输时使用的传输的协议,也就是Transfer Syntax规定了传输图像时传输的是使用了何种图像压缩算法压缩后的图像数据。除此之外,Transfer Syntax在生成和读取DICOM文件时也具有非常重要的作用,Transfer Syntax定义DICOM文件中图像数据是何种压缩算法压缩后的数据。

如果大家对DICOM协议特别是TransferSyntax想要有更多的了解的话,推荐大家去这个网址看看:http://www.dicomlibrary.com/dicom/transfer-syntax/。这里列出了所有DICOM标准里规定了的Transfer Syntax。纵观这些Transfer Syntax,除去默认的4种原始的无压缩的Transfer Syntax外,剩下的基本上就是会对图像进行压缩的Transfer Syntax了。

众所周知,原始的图像是一组2维的像素值的数组,如果不对图像进行压缩的话,图像的数据量较大,带来了传输速度慢、存储占用空间大等一系列问题。这也是为什么DICOM标准中规定了一系列的压缩算法。由于算法实现的兼容性问题和某些算法(JPEG2000)的潜在的版权问题,以及图像压缩带来很长的解压缩的时间和计算量,并且DICOM图像一般都要求进行无损的压缩(即解压缩后的图像和原始图像应该一致),而无损压缩算法的压缩率一般都不大,因此在DICOM的世界里图像压缩应用的不是特别多和重要。你只要告诉和你通信的DICOM伙伴你只支持原始的Transfer Syntax,他们就需要把压缩图像解压缩后再传给你了。

DICOM HTML5 Viewer里的图像压缩

DICOM HTML5 Viewer是一个图像显示和处理的软件。在DICOM Viewer中,图像一般是以非压缩的形式参与图像的显示和处理过程的。因此通俗的讲DICOM HTML5Viewer中的图像压缩,可能更多的是讲在DICOM HTML5Viewer和服务器进行通信的过程中启用的图像压缩协议。这个部分的内容可能和我们在本系列文章中的第四篇“DICOM HTML5Viewer技术揭秘系列之四-图像加载与缓存”在内容上有重叠的部分,我们在这里也争取尽量多讲以便大家更好的理解。

通俗的讲,DICOM HTML5 Viewer能够启用压缩和解压缩的主要是三种技术方案:

  • 使用原始DICOM的图像压缩方式:这种技术方案的DICOM HTML5Viewer一般都是直接从服务器上下载下来一个DICOM文件,而这个DICOM文件中的TransferSyntax可以是某一个压缩的Transfer Syntax。在这种方案中,一般使用JavaScript解析DICOM文件并且解压缩图像。但是由于JavaScript脚本语言的性能低下以及低级数据操作能力较弱的问题,一般不能使用压缩率比较高的压缩算法的Transfer Syntax。前文给大家介绍过的oviyam即使用了这种方案,算的上是从传统的医学影像工作站直接生搬硬套过来的技术方案。

  • GZIP压缩传输流的传输方式:我们知道图像是一组2维的像素值的数组,传输图像可以不用直接传输原始的DICOM文件而是直接传输DICOM文件中的图像像素数组即可。而DICOM HTML5 Viewer一般都是使用HTTP协议和服务器进行通信的。所以这种方式就是直接将图像的像素数组直接通过HTTP传输,而在HTTP传输过程中启用GZIP压缩,这样在既能在浏览器端直接看到原始的图像像素值,又能在传输过程使用了压缩从而获得较小的传输数据量。这种技术方案算的上是一种比较简单可靠并且浏览器端的性能也不错的技术方案,并且gzip压缩算法对图像像素值的压缩率还不错。这种技术方案常见于一些新兴的DICOM HTML5 Viewer

  • 压缩图像传输方式:DICOM HTML5 Viewer最重要的一份即是把图像传输到浏览器中进行展示,但是在HTML5的环境下,浏览器一般只支持bmpjpgpng等有限种类的图像压缩格式,因此在DICOM HTML5 Viewer中,可以将DICOM文件的图像抽取出来并且压缩成特定的文件格式,直接通过HTTP将压缩后的图片传输到浏览器中,再在浏览器中再使用JavaScript或其他的技术手段对图像进行解压缩,然后再将解压缩后的结果参与窗宽窗位调整等图像处理运算。这种技术方案图像的压缩率比较高,并且也比较简单高效,但是需要解决解压缩的性能问题等问题。

Dodo DICOM HTML5 Viewer的压缩方案

又到了揭秘时间了。这章我们就来说说微至云动云影像的Dodo DICOM HTML5 Viewer采用的图像压缩的技术方案。从理论上来讲,我们的Dodo DICOM HTML5 Viewer可以算作是采用了上文中的第三种技术方案,即把图像数据从DICOM文件中抽取出来并压缩成特定的图像文件格式,然后再直接传输到浏览器中。只不过我们压缩成特定的图像文件格式时使用了微至云动云影像自定义的一系列和原始的压缩算法不同的变形算法,从而实现了不同的图像质量和压缩率的三种图像压缩算法:

  • 超高压缩率有损压缩算法, 10-20倍压缩率

  • 超高图像质量有损压缩算法,5-10倍压缩率

  • 无损图像质量压缩算法,2-3倍压缩率

 

除此之外,在浏览器端对压缩图像进行解压缩的过程中,我们的Dodo DICOM HTML5 Viewer也大量的使用了HTML5标准的新特性和新方案,大大的提高图像加载和解压缩的性能,并且也大大的提高了对图像进行调窗等操作时的性能。距离来说,对于一般原始大小8M左右的X光影像,Dodo DICOM HTML5 Viewer不光能做到压缩到几百K大小进行压缩,同时解压缩和显示图像的操作时间能控制在1秒以内,单纯调整窗宽窗位的操作时间能控制在10毫秒以内。


 

更多信息敬请关注微信/新浪微博:@微至云动云影像。 或请访问微至云动云影像的官方网站http://www.weiyunyingxiang.com