CornerstoneCore基本概念(一)CornerstoneCore,这是一个轻量级的JavaScript库,用于在支持HTML5canvas元素的现代网络浏览器中显示医学图像。CornerstoneCore本身并不意味着是一个完整的应用程序,而是一个可以用作更大、更复杂应用程序的一部分的组件。下面将介绍CornerstoneCore中的基本概念和API,以便后面了解CornerstoneCore的使用。启用的元素在Cornerstone中,启用的元素是HTMLElements(通常是div),我们在其中显示交互式医学图像。constelement=document.getElementById("dicom_container");cornerstone.enable(element);图像ID基石图像ID是标识基石要显示的单个图像的URL。也是图片的唯一标识,所有的操作都是根据这个唯一标识来标识的。Cornerstone使用图像Id中的URL方案来确定调用哪个图像加载器插件来实际加载图像。该策略允许Cornerstone同时显示使用不同协议从不同服务器获取的多个图像。imageLoader通过识别scheme名称来选择加载器,commonimageId://wadouri-HTTPGETconstwadouriImageId="wadouri:http://localhost:3333/wado?requestType=WADO&studyUID=1.3.6.1.4.1.25403.166563008443.5076.20120418075541..6.1.4.1.25403.166563008443.5076.20120418075541.2&objectUID=1.3.6.1.4.1.25403.166563008443.5076.20120418075557.1&contentType=application%2Fdicom&transferSyntax=1.2.840.10008.1.2.1";//dicomweb-HTTPGETconstdicomwebImageId="dicomweb:http://localhost:3333/wado?requestType=WADO&studyUID=1.3.6.1.4.1.25403.166563008443.5076.20120418075541.1&seriesUID=1.3.6.1.4.1.25403.166563008443.5076.20120418075541.2&objectUID=1.3.6.1.4.1.25403.166563008443.5076.20120418075557.1&contentType=application%2Fdicom&transferSyntax=1.2.840.10008.1.2.1";//wadors-RESTful风格HTTPGETconstwadorsImageId="wadors:https://api.hackathon.siim.org/dicomweb/studies/1.3.6.1.4.1.14519.5.2.1.7777.9002.198875685720513246512710453733/series/1.3.6.1.4.1.14519.5.2.1.7777.9002.207203214132667549392101803048/instances/1.3.6.1.4.1.14519.5.2.1.7777.9002.327873213718058651550666129029/frames/1";//dicomfile-本地文件constdicomfileImageId="dicomfile:1";Wadouri在CornerstoneWADOImageLoader上对scheme名称的判断:functiongetLoaderForScheme(scheme){if(scheme==="dicomweb"||scheme==="wadouri"){//如果是scheme,dicomweb或wadouri}elseif(scheme==="dicomfile"){//如果scheme是dicomfile,则使用本地文件加载方法returnloadFileRequest;}}ImageLoadersImageLoaders是一个JavaScript函数,负责获取图片的imageid,并返回该图像的相应图像加载对象到Cornerstone。ImageLoad对象包含解析为生成的图像的Promise。ImageLoaders的工作流程:ImageLoader向cornerstone注册以加载特定的ImageIdURL方案。ImageLoader是开放的,允许开发人员自定义这imageloader,但需要在cornerstone注册后才能使用。CornerstoneWADOImageLoader中wadouri和wadors的代码是关于注册的,是自动注册的:cornerstone.registerImageLoader('wadouri',loadImage);cornerstone.registerImageLoader('dicomfile',loadImage);//添加wadouri元数据提供者cornerstone.metaData.addProvider(metaDataProvider);}exportdefaultfunction(cornerstone){//注册wadors方案和元数据提供者cornerstone.registerImageLoader('wadors',loadImage);cornerstone.metaData.addProvider(metaDataProvider);}自定义加载器注册方法:functionloadImage(imageId){//解析imageId并返回可用的URLconsturl=parseImageId(imageId);constpromise=newPromise((resolve,reject)=>{//生成dicom请求数据constoReq=newXMLHttpRequest();oReq.open("get",url,true);oReq.responseType="arraybuffer";oReq.onreadystatechange=功能(oEvent){if(oReq.readyState===4){if(oReq.status==200){//请求成功后,创建图片对象constimage=createImageObject(oReq.response);解决(图像);}else{拒绝(新错误(oReq.statusText));}}};oReq.send();});return{promise,};}//注册myCustomLoader对应loadImage函数cornerstone.registerImageLoader("myCustomLoader",loadImage);//通过imageId获取图片cornerstone.loadImage("myCustomLoader:http://example.com/image.dcm");视口每个启用的元素都有一个视口,描述图像应该如何呈现constelement=document.getElementById("dicom_container");//获取当前视口对象constviewport=cornerstone.getViewport(element);//设置视口对象基石.setViewport(元素,视口);viewport对象包含的信息:属性名称描述valuescale类型图像的缩放因子。当它等于1时,不进行缩放,一个图像像素占一个屏幕像素。大于1时放大,小于1时缩小。Numbertranslation像素坐标中的平移距离,具有属性x和y的对象。Objectvoi窗口宽度窗口级别,具有属性windowWidth和windowCenter的对象。是否反转Objectinvert图像的颜色。BooleanpixelReplication放大图像时是否使用图像平滑。Booleanhflip图片是否水平翻转。Booleanvflip图片是否垂直翻转。Booleanrotation图像的旋转角度。由NumbermodalityLUT应用的ModalityLUT。用于ArrayvoiLUT应用程序的voiLUT。应用于Arraycolormap的伪彩色对象。Objectlabelmap将此图像渲染为labelmap,直接跳过modalityLUT和voiLUT。BooleandisplayedArea显示区域信息,具有属性tlhc、brhc(显示区域位于启用元素的坐标处)、columnPixelSpacing、rowPixelSpacing(像素间距)的对象。ObjectImages图像加载器返回图像对象。//在显示图像之前constimageId="dicomweb:https://tools.cornerstonejs.org/examples/assets/dicom/bellona/chest_lung/1.dcm";constimage=awaitcornerstone.loadImage(imageId);//在图像后显示constelement=document.getElementById("dicom_container");constimage=cornerstone.getImage(元素);图像对象包含信息:属性名称描述值类型imageId与此图像对象关联的图像Id。StringminPixelValue图像中存储的最小像素值,一般来自标签信息(0028,0106),如果不指定,将根据PixelData重新计算。NumbermaxPixelValue图像中存储的最大像素值,一般来自标签信息(0028,0107),如果不指定,将根据PixelData重新计算。Numberslope重新缩放斜率,将存储的像素值转换为模态像素值,通常来自标签信息(0028、1053),如果未指定则为1。Numberinterceptrescalingintercept用于将存储的像素值转换为模态值,一般来自标签信息(0028,1052),如果不指定,默认为0NumberwindowCenter图像的窗口级别,一般来自标签信息(0028,1052)1050)。NumberwindowWidth图片的默认窗口宽度,一般来自标签信息(0028、1050)。底层像素数据的NumbergetPixelData函数,返回灰度的整数数组和颜色的RGBA数组。Functionrows图像中的行数,一般是指图像的高度,一般来自标签信息(0028、0010)。Numbercolumns图片中的列数一般是指图片的宽度,一般来自标签信息(0028、0011)。Numberheight图片的高度,与行数相同。Numberwidth图像的宽度,与列值相同。Numbercolor是否为彩色图像一般来自标签信息(0028,0004),对值进行多次判断得到。BooleancolumnPixelSpacing垂直像素间距,一般取自标签信息(0028,0030),不指定则为1。NumberrowPixelSpacing水平像素间距,一般取自标签信息(0028,0030),不指定则为1。Numberinvert是否显示反之,一般来自标签信息(0028、0004)。如果值为MONOCHROME1,则为true,否则为false。BooleansizeInBytes用于存储此图像像素的字节数。Numberstats最后一次重绘图像的性能统计信息,主要是一些耗时的统计,比如:最后一次获取像素数据等。ObjectcachedLut图像的缓存信息主要是一些初始信息,比如:originalwindow宽度和窗口级别等对象
