Cornerstone.js使用相关

官网地址:https://github.com/chafey/cornerstone
前端

简介:git

Cornerstone is an open source project with a goal to deliver a complete web based medical imaging platform. This repository contains the Cornerstone Core component which is a lightweight JavaScript library for displaying medical images in modern web browsers that support the HTML5 canvas element. Cornerstone Core is not meant to be a complete application itself, but instead a component that can be used as part of larger more complex applications. See the OHIF Viewer for an example of using the various Cornerstone libraries to build a simple study viewer.github

Cornerstone Core is agnostic to the actual container used to store image pixels as well as the transport mechanism used to get the image data. In fact, Cornerstone Core itself has no ability to read/parse or load images and instead depends on one or more ImageLoaders to function. The goal here is to avoid constraining developers to work within a single container and transport (e.g. DICOM) since images are stored in a variety of formats (including proprietary). By providing flexibility with respect to the container and transport, the highest performance image display may be obtained as no conversion to an alternate container or transport is required. It is hoped that developers feel empowered to load images from any type of image container using any kind of transport. See the CornerstoneWADOImageLoader project for an example of a DICOM WADO based Image Loader.web

基石是一个开源项目,目标是提供一个完整的基于网络的医学成像平台。该存储库包含Cornerstone核心组件,它是一个轻量级的JavaScript库,用于在支持HTML5 canvas元素的现代Web浏览器中显示医学图像。Cornerstone Core并不意味着是一个完整的应用程序自己,而是一个能够用做更大更复杂应用程序的一部分的组件。有关使用各类Cornerstone库构建简单的学习查看的示例,请参阅 OHIF Viewercanvas

Cornerstone Core与用于存储图像像素的实际容器以及用于获取图像数据的传输机制无关。事实上,Cornerstone Core自己没法读取/解析或加载图像,而是依赖于一个或多个ImageLoaders来运行。这里的目标是避免限制开发人员在单个容器和传输(例如DICOM)中工做,由于图像以各类格式(包括专有)存储。经过提供关于容器和运输的灵活性,能够得到最高性能的图像显示,由于不须要转换到替代容器或运输。但愿开发人员有权使用任何类型的传输从任何类型的图像容器加载图像。api

这是关于Cornerstone的简介,简单来讲,这并非一个应用程序,只是一个js的插件,也就是一个库,简称基石。。 基石实际封装好了一些列Dicom图像的操做,但关于获取图像,解析图像等都依赖于基石库种的其余.js文件。跨域

开始正文:浏览器

      最新一个新的需求就是:在canvas上绘制Dicom图像,以前的图像都是jpg或者png的。咱们的网站是一个医疗的网站,医生上传Dicom图像,经过第三方Dicom解析工具将dicom图像解析还原为jpg,从而绘制在画布上。我认为思路实际上是同样的,都是解析dicom像素的每个信息,而后再绘制画布。可是涉及到两个问题:1.图像逐像素解析 2.当发生交互时,频繁的与后台进行数据交换,例如调节窗宽窗位,前端传递数值,后台根据wwwc算出响应的显示值,再传给前端,在绘制。以上这个流程是当发生交互时使用的dicom转jpg的思路,若是没有交互,只是显示,那么直接后台解析dicom而后转jpg便可,可是如今须要调节窗宽窗位,大小缩放等等,就须要在canvas上直接绘制Dicom图像(还有一种方法,窗宽窗位百度了一下原理,调节像素灰度值,咱们能够根据窗宽窗位直接调节灰度jpg的像素灰度便可,可是公式?例如窗宽窗位 600/1000,那么对应图像的灰度应该多少?对于Ddicom图像窗宽窗位的调整是有公式的,jpg灰度对应窗宽窗位的值的对应关系尚未找到,http://blog.csdn.net/lifegame/article/details/6388609,这个连接是调节图像灰度的,里边给出了一套公式,但并不具有科学依据,产品最终是给医生用的,必需要准确(连接不知道怎么整动态的,直接复制粘贴))。网络

    本身解析Dicom而后进行像素操做有难度,开始查一些相关的资料,有一些公司在作这方面,作得比较好的,并且乐于分享技术的 微云影像,虽然说分享的技术太深,而且太少难于理解,可是仍是找到了一些答案——CornerStone.js app

    微云的技术文档:http://www.weiyunyingxiang.com/artical8.htm。没有什么具体的分享,可是有一个大概的思路。后来开始看cornerstone的Github连接,网上没有什么这方面的资料,看了一些网站都是用这个库作的,这个库并不能知足需求,其中的一些例子只是一些操做,可是如何把dicom绘制到canvas上并无找到,有个例子,他是把dicom图像直接解析成Base64编码,直接一个字符串显示好几十行的编码,并无解析显示的具体操做,后来偶然间点击到了另一个库,也是基石相关的,可是能够解决实际问题 。

cornerstoneWADOImageLoader

 https://github.com/chafey/cornerstoneWADOImageLoader具体的能够本身去看,可是几点遇到的问题在这里说明一下:

1.imageids,图像的惟一标识,原文是根据不一样的id调用不一样的imageloads,最开始理解是要根据本身的id去找适配的imageload,最后发现其实基石已经作好了适配,你只要提供id,他会根据你的id自动使用对应的图像加载器。id:url,相对路径,绝对路径等。注意一个问题,就是跨域的问题,我最开始用他的例子,https的页面,去请求一个http协议的dicom,报错了,跨域的问题,最终用到我本身的项目中,没有跨域,因此没有问题。

2.服务端使用,本地使用是会报错的,由于本地是没有域的概念存在的,因此同一域也不存在,报各类错误,在服务端正常运行。

3他的几个例子代码相对逻辑不复杂,可是若是你要深究源码的话,那我估计是不可能的,个人项目调用了大约6.7个js,每个js都有上万行的代码,先不说代码量,代码里边没有注释,随便定义的一个变量,都搞得很复杂,我认为不须要了解具体实现,只要调用接口api。

具体的东西不能所有说完,须要本身去看,看懂流程,再去测试。有问题留言 我会随时看的

相关文章
相关标签/搜索