基于cornerstone.js的dicom醫(yī)學(xué)影像查看瀏覽功能
最近由于項目需求,需要醫(yī)學(xué)影像.dcm文件的預(yù)覽功能,功能完成后,基于原生Demo做一個開源分享。
心急的小伙伴可以先看如下基于 原生js 的全部代碼:
一、全部代碼
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <script src="https://unpkg.com/hammerjs@2.0.8/hammer.js"></script> <script src="https://unpkg.com/cornerstone-core@2.6.1/dist/cornerstone.js"></script> <script src="https://unpkg.com/cornerstone-math@0.1.10/dist/cornerstoneMath.min.js"></script> <script src="https://unpkg.com/cornerstone-wado-image-loader@4.1.3/dist/cornerstoneWADOImageLoader.bundle.min.js"></script> <script src="https://unpkg.com/cornerstone-web-image-loader@2.1.1/dist/cornerstoneWebImageLoader.min.js"></script> <script src="https://unpkg.com/cornerstone-tools@6.0.7/dist/cornerstoneTools.js"></script> <script src="https://unpkg.com/dicom-parser@1.8.13/dist/dicomParser.min.js"></script> </head> <body> <!-- 用于加載圖片的div區(qū)域 --> <div id="dicomImage" style="width: 512px;height: 512px;"></div> </body> <script> // 注冊并掛載cornerstone及其cornerstoneTools,固定操作 cornerstoneTools.external.cornerstone = cornerstone; cornerstoneTools.external.cornerstoneMath = cornerstoneMath; cornerstoneTools.external.Hammer = Hammer; cornerstoneWADOImageLoader.external.dicomParser = dicomParser; cornerstoneWADOImageLoader.external.cornerstone = cornerstone; // imageId就是cornerstone要求的.dcm圖片地址,例如:var imageId = "wadouri:http://127.0.0.1:6699/ctdcm1.dcm"; var imageId = "wadouri: http://http://127.0.0.1:6699/media/dicm/0a291d1b12b86213d813e3796f14b329_haAJH2K.dcm"; // 初始化cornerstoneTools工具 cornerstoneTools.init(); // 獲取要用于加載圖片的div區(qū)域 var element = document.getElementById('dicomImage'); //激活獲取到的用于圖片加載的區(qū)域 cornerstone.enable(element); // 從cornerstoneTools庫中獲取窗寬,窗高工具 const WwwcTool = cornerstoneTools.WwwcTool; //添加獲取到的窗寬,窗高工具 cornerstoneTools.addTool(WwwcTool); // 綁定工具操作功能到鼠標(biāo)左鍵 cornerstoneTools.setToolActive('Wwwc', { mouseButtonMask: 1 }) //使用loadAndCacheImage()方法加載并緩存圖片,然后使用displayImage()方法顯示圖片。 cornerstone.loadAndCacheImage(imageId).then(function (image) { cornerstone.displayImage(element, image); }) </script> </html>
二、基于源碼片段的解釋
1、基于以上源碼片段,做一下分段介紹。如下:
<script src="https://unpkg.com/hammerjs@2.0.8/hammer.js"></script> <script src="https://unpkg.com/cornerstone-core@2.6.1/dist/cornerstone.js"></script> <script src="https://unpkg.com/cornerstone-math@0.1.10/dist/cornerstoneMath.min.js"></script> <script src="https://unpkg.com/cornerstone-wado-image-loader@4.1.3/dist/cornerstoneWADOImageLoader.bundle.min.js"></script> <script src="https://unpkg.com/cornerstone-web-image-loader@2.1.1/dist/cornerstoneWebImageLoader.min.js"></script> <script src="https://unpkg.com/cornerstone-tools@6.0.7/dist/cornerstoneTools.js"></script> <script src="https://unpkg.com/dicom-parser@1.8.13/dist/dicomParser.min.js"></script>
如上代碼主要為引入所需js庫代碼:
第一行中引入hammer.js庫,hammer.js是一款開源的移動端腳本框架,它可以完美的實現(xiàn)在移端開發(fā)的大多數(shù)事件,如:點擊、滑動、拖動、多點觸控等事件。這里用在pc端,也可以有很好的鼠標(biāo)拖動等效果的實現(xiàn)。
第二行中引入cornerstone.js庫,Corenerstone 是一個旨在搭建一個完全基于web的醫(yī)學(xué)影像平臺的開源項目。Cornerstone Core組件是一個在支持HTML5 canvas元素的現(xiàn)代瀏覽器上顯示醫(yī)學(xué)影像的輕量級的JavaScript庫。
第三行引入cornerstoneMath.min.js庫,該庫主要包含對醫(yī)學(xué)影像文件的一些操作的技術(shù),例如使用cornerstone工具庫中的測量工具時,就需要該庫文件提供數(shù)學(xué)計算支持。
第四行中引入cornerstoneWADOImageLoader.bundle.min.js庫,主要用于對DICOM醫(yī)學(xué)影像文件的支持。
第五行引入cornerstoneWebImageLoader.min.js主要用于對于非DICOM醫(yī)學(xué)影像文件的網(wǎng)絡(luò)圖片的支持。
第六行引入cornerstoneTools.js庫,該庫時基于cornerstone的工具庫,具備畫線測距,測量夾角,改變色差,拖動影像等醫(yī)學(xué)影像基礎(chǔ)常用功能。
第七行引入dicomParser.min.js庫,該庫主要用于對DICOM醫(yī)學(xué)影像文件圖片及圖片信息進(jìn)行解析。
<!-- 用于加載圖片的div區(qū)域 --> <div id="dicomImage" style="width: 512px;height: 512px;"></div>
2、這里就是一個用于將DICOM醫(yī)學(xué)文件在頁面展示的區(qū)域。
// 注冊并掛載cornerstone及其cornerstoneTools,固定操作 cornerstoneTools.external.cornerstone = cornerstone; cornerstoneTools.external.cornerstoneMath = cornerstoneMath; cornerstoneTools.external.Hammer = Hammer; cornerstoneWADOImageLoader.external.dicomParser = dicomParser; cornerstoneWADOImageLoader.external.cornerstone = cornerstone;
3、這里是對cornerstone庫及dicom文件渲染其相關(guān)庫文件的注冊掛載,固定格式,不要更改。
// imageId就是cornerstone要求的.dcm圖片地址,例如:var imageId = "wadouri:http://127.0.0.1:6699/ctdcm1.dcm"; var imageId = "wadouri: http://http://127.0.0.1:6699/media/dicm/0a291d1b12b86213d813e3796f14b329_haAJH2K.dcm"; // 初始化cornerstoneTools工具 cornerstoneTools.init(); // 獲取要用于加載圖片的div區(qū)域 var element = document.getElementById('dicomImage'); //激活獲取到的用于圖片加載的區(qū)域 cornerstone.enable(element); // 從cornerstoneTools庫中獲取窗寬,窗高工具 const WwwcTool = cornerstoneTools.WwwcTool; //添加獲取到的窗寬,窗高工具 cornerstoneTools.addTool(WwwcTool);
4、這里就是注釋中說的那樣,就是一些固定步驟。
imageId:官方文檔規(guī)定的.dcm圖片地址,也就是需要展示的DICOM醫(yī)學(xué)影像文件的網(wǎng)絡(luò)地址。
dicomImage:這里就是在html代碼中自己定義的用于將DICOM醫(yī)學(xué)文件在頁面展示的區(qū)域。
其他的就是一些固定操作。
// 綁定工具操作功能到鼠標(biāo)左鍵 cornerstoneTools.setToolActive('Wwwc', { mouseButtonMask: 1 }) //使用loadAndCacheImage()方法加載并緩存圖片,然后使用displayImage()方法顯示圖片。 cornerstone.loadAndCacheImage(imageId).then(function (image) { cornerstone.displayImage(element, image); })
5、這是最后的兩步。1~4行代碼,用于將前面寫的‘獲取窗寬,窗高工具’功能綁定到鼠標(biāo)的左鍵,用于在圖片上按住鼠標(biāo)左鍵時,可以實現(xiàn)拖動改變色差的效果。
setToolActive():該方法用于激活并綁定某功能到某個操作鍵?! ouseButtonMask: 1:該含義為綁定到鼠標(biāo)左鍵。
loadAndCacheImage():該方法用于加載并緩存DICOM圖片及圖片的數(shù)據(jù)。最大緩存為1GB
displayImage(element, image):該方法用于在我們設(shè)定的網(wǎng)頁區(qū)域展示解析后的DICOM圖片
6、至此,我們已經(jīng)完成了所以代碼。
注意:(1)由于我們用的是在線Js庫文件,所以需要等待后在能看到圖片效果.
(2)imageId 是博主自己設(shè)置的本地服務(wù)器的dcm圖片地址,請?zhí)鎿Q為你自己服務(wù)器的dcm圖片地址。如果對node.js有了解的大佬,可以使用http-server本地服務(wù)器包,自己快速搭建本地服務(wù)器用于測試,但是需要注意跨域問題??梢允褂茫?a href="http://www.dbjr.com.cn/article/256661.htm" target="_blank"> http-server --cors 命令替代“http-server”命令解決跨域問題。
到此這篇關(guān)于基于cornerstone.js的dicom醫(yī)學(xué)影像查看瀏覽功能的文章就介紹到這了,更多相關(guān)cornerstone.js dicom醫(yī)學(xué)影像查看瀏覽內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
JSQL 基于客戶端的成績統(tǒng)計實現(xiàn)方法
JSQL應(yīng)用案例 基于客戶端的成績統(tǒng)計,下面我把整個example的代碼貼出來,歡迎拍磚2010-05-05Webpack中l(wèi)oader打包各種文件的方法實例
這篇文章主要給大家介紹了關(guān)于Webpack中l(wèi)oader打包各種文件的相關(guān)資料,其中包括處理css文件、less文件、scss文件、url地址以及ES6高級語法的方法,需要的朋友可以參考下2019-09-09javascript應(yīng)用:Iframe自適應(yīng)其加載的內(nèi)容高度
javascript應(yīng)用:Iframe自適應(yīng)其加載的內(nèi)容高度...2007-04-04JavaScript 繼承 封裝 多態(tài)實現(xiàn)及原理詳解
這篇文章主要介紹了JavaScript 繼承 封裝 多態(tài)實現(xiàn)及原理詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2019-07-07uniapp開發(fā)小程序?qū)崿F(xiàn)滑動頁面控制元素的顯示和隱藏效果
這篇文章主要介紹了uniapp開發(fā)小程序?qū)崿F(xiàn)滑動頁面控制元素的顯示和隱藏效果,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-12-12微信小程序?qū)崿F(xiàn)Timeline時間線效果
這篇文章主要為大家詳細(xì)介紹了微信小程序?qū)崿F(xiàn)Timeline時間線效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-05-05