亚洲有码Av一区二区三区_国产高清啪啪免费视频_69色视频国产_国产成人人人爆出白浆_国产精品自在线拍国_一本久久伊人热热精品无码_午夜性刺激在线看免费带字幕_助力高品质欧美狂喷水_亚洲精品日韩无码_精品无码一区二区三区蜜臀_麻豆高清国产AV_熟妇人素无码中文字幕_亚洲a级片在线观看_国产欧美日韩三区_99国产成人高清在线观看

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運營的一線實戰(zhàn)洞察。

醫(yī)療數(shù)字閱片實戰(zhàn):從OHIF-Viewers到Cornerstone.js渲染鏈路拆解

醫(yī)療數(shù)字閱片實戰(zhàn):從OHIF-Viewers到Cornerstone.js渲染鏈路拆解 醫(yī)療數(shù)字閱片實戰(zhàn)從 OHIF-Viewers 到 Cornerstone.js 渲染鏈路拆解前陣子項目組接到一個任務(wù)要把傳統(tǒng)的膠片閱片流程搬進瀏覽器做一套輕量級的數(shù)字閱片工具。技術(shù)選型階段我們幾乎沒怎么猶豫就鎖定了 OHIF-Viewers 這套開源框架因為它的底層渲染依賴的是 Cornerstone.js——準確說是 cornerstone-core 這個核心庫。這套組合在醫(yī)學(xué)影像前端領(lǐng)域算得上是事實標準了Viewers 負責(zé)界面編排和業(yè)務(wù)邏輯Cornerstone.js 專門干渲染這檔子事。今天就從我實際動手折騰的視角把這套東西從架構(gòu)拆解到具體實例整個聊一遍尤其重點說說 cornerstone-core 的渲染管線是怎么一回事以及怎么通過 Cornerstone Examples 快速跑通一個能用的閱片 demo。這篇內(nèi)容適合誰看如果你是打算做醫(yī)學(xué)影像 Web 端項目的開發(fā)者或者想在 OHIF-Viewers 基礎(chǔ)上做二次開發(fā)又或者純粹是想搞明白 Cornerstone.js 這套渲染庫到底怎么運作那這篇應(yīng)該能幫你省下不少摸索的時間??赐昴阒辽倌芨闱宄讉€最要命的問題imageId 是什么、加載器怎么注冊、為什么一個 DICOM 文件要轉(zhuǎn)成 ImageData 才能上屏以及怎樣用最小代價寫一個能用的 Cornerstone 自定義應(yīng)用。先說結(jié)論Cornerstone.js 這套架構(gòu)的核心思想就八個字——職責(zé)單一插拔加載。它把影像解碼、傳輸、渲染、交互全部拆開各自做成獨立模塊再通過一套約定好的接口把它們串起來。理解了這個后面所有代碼都好辦了。1. 先從 OHIF-Viewers 說起它到底解決了什么問題1.1 為什么不是自己擼一個影像查看器你要真去啃一遍 DICOM 標準會發(fā)現(xiàn)那是一個能把人活活看吐的龐然大物。光是文件頭里那幾百個 tag什么患者姓名、檢查號、序列號、窗寬窗位、像素間距、Modality、SOP Instance UID……真要自己從零開始解析再把灰度圖像映射到 Canvas 上沒有一兩個月拿不下來而且做出來大概率是漏洞百出。這里我不打算展開 DICOM 標準的細節(jié)但要記住一個關(guān)鍵點醫(yī)學(xué)影像不是普通圖片它包含大量 meta 信息而且像素數(shù)據(jù)往往不是直接可以顯示的灰度值需要做 modality transform模態(tài)轉(zhuǎn)換和 VOI transform窗寬窗位變換才能真正在屏幕上展示出來。OHIF-Viewers 做的事情就是把這一整套復(fù)雜流程封裝成現(xiàn)成的頁面級應(yīng)用。它提供了一系列 viewer 頁面組件比如 CornerstoneViewport 用于顯示圖像測量工具、標注工具、播放器、序列瀏覽等一應(yīng)俱全。你拿來改一改接入自己后端的 PACS 服務(wù)或者本地 DICOM 文件一個能用的影像閱片系統(tǒng)就立起來了。1.2 OHIF 與 Cornerstone 的分工邏輯OHIF-Viewers 不是從頭到尾自己包辦它對底層渲染庫做了抽象??此囊蕾囮P(guān)系就能發(fā)現(xiàn)真正干活的是 cornerstone.js 系列的三個包cornerstone-core是核心渲染引擎cornerstone-tools提供交互工具和測量注釋功能cornerstone-wado-image-loader負責(zé)解碼和加載 DICOM 圖像。此外還有 cornerstone-math 做幾何計算支撐。OHIF 就像是坐在這些基石上面的總調(diào)度它管理數(shù)據(jù)集、元數(shù)據(jù)、工作流而真正把 DICOM 像素變成屏幕上的影像的是 cornerstone-core 在做。這個分工邏輯其實很好理解。打比方說OHIF 像是一家餐廳的前廳和后廚管理負責(zé)點單、傳菜、按照顧客需求配餐而 Cornerstone.js 是灶臺和廚師負責(zé)把食材加工成能上桌的菜。后廚只管烹飪不管顧客是誰、賬單怎么結(jié)所以 Cornerstone.js 本身非常純粹——它不關(guān)心你從哪兒拿到圖像數(shù)據(jù)只負責(zé)把拿到的圖像數(shù)據(jù)渲染到 canvas 上。2. Cornerstone.js 實例拆解基石庫的工作原理2.1 cornerstone-core 的幾個核心概念要玩轉(zhuǎn) Cornerstone.js有四個坎必須得邁過去imageId、Image Loader、Image 對象、渲染循環(huán)。這四個概念環(huán)環(huán)相扣是 Cornerstone.js 實例中反復(fù)出現(xiàn)的核心要素。先講 imageId。你可能會想我直接傳一個 DICOM 文件路徑給它不就行了不行。Cornerstone.js 采用的是 URL 約定機制每個可被加載的圖像資源都必須有一個全局唯一的 imageId格式通常是這樣的dicomweb://www.example.com/studies/1/series/2/instances/3或者wadouri://path/to/file.dcm也可以是自定義協(xié)議如my-loader://some-id。imageId 的作用有兩個第一作為加載器的調(diào)度憑據(jù)Cornerstone 看到 imageId 就會找到對應(yīng)注冊的 loader第二作為圖像的緩存鍵渲染后圖像會被緩存起來下次再訪問同一個 imageId 就直接命中緩存不用重新解碼。然后是 Image Loader圖像加載器。Cornerstone-core 本身不內(nèi)置任何加載器它只定義了一套接口約定。加載器負責(zé)接收 imageId去網(wǎng)絡(luò)、本地文件系統(tǒng)或內(nèi)存中取數(shù)據(jù)解析圖像最終返回一個 Image 對象。常用的 cornerstone-wado-image-loader 就是加載器的具體實現(xiàn)它內(nèi)部使用 dcmjs 解析 DICOM用 web worker 做像素數(shù)據(jù)的解碼解碼完以后封裝成 cornerstone 需要的 Image 對象上拋。Image 對象是 cornerstone 渲染的最小單元。它長什么樣簡單來說就是一個普通 JS 對象里面包含 width、height、minPixelValue、maxPixelValue、slope、intercept、windowCenter、windowWidth 等屬性還有一個最關(guān)鍵的方法 getPixelData()返回一個 unpacked 的像素數(shù)組。Cornerstone 只認這個結(jié)構(gòu)只要你的加載器能產(chǎn)出合法的 Image 對象它就能渲染不管你背后是 DICOM、JPEG、PNG 還是直接從內(nèi)存拿的像素數(shù)據(jù)。渲染循環(huán)則是 cornerstone 內(nèi)部干的活它拿到 Image 對象根據(jù)當(dāng)前 viewport 的窗寬窗位、縮放比例、插值算法等參數(shù)把像素數(shù)據(jù)映射到 canvas 的顯存上最終呈現(xiàn)出來。這個映射過程涉及醫(yī)學(xué)影像顯示中非常重要的VOI LUT像素值到灰度值的映射表適配和modality LUT模態(tài)變換處理后面細說。2.2 從 DICOM 文件到屏幕上圖像數(shù)據(jù)流的走向我在本地寫了一個最小實例來驗證完整的數(shù)據(jù)流你也可以照著跑一遍。假設(shè)你有一個本地的 DICOM 文件名字叫example.dcm放在服務(wù)器 static 目錄下。那么頁面里創(chuàng)建一個 canvas 元素調(diào)用cornerstone.enable(element)把這個 canvas 注冊成為一個可渲染的 cornerstone 元素。注冊加載器告訴 cornerstone 說wadouri這種協(xié)議的 imageId 歸我管。調(diào)用cornerstone.loadAndCacheImage(wadouri:/path/to/example.dcm)這時 cornerstone 會從緩存里找找不到就調(diào)用加載器的loadImage方法。加載器內(nèi)部會用dicomParser解析文件把 DICOM 里的像素數(shù)據(jù)解出來封裝成上面說的 Image 對象返回。cornerstone 拿到 Image 對象后調(diào)用cornerstone.displayImage(element, image)把圖像渲染出來。這個流程最關(guān)鍵的一步在于第 4 步像素數(shù)據(jù)的封裝。DICOM 的像素數(shù)據(jù)可能是經(jīng)過壓縮的JPEG Lossless、JPEG 2000、RLE 等也可能是未壓縮的原始數(shù)據(jù)像素位數(shù)可能是 8 位、16 位還可能是帶符號整數(shù)。Image 對象里的 getPixelData 返回的是一個 Canvas 可以直接使用的一維數(shù)組通常是 Uint8Array 或 Uint16Array。16 位像素數(shù)據(jù)是關(guān)鍵因為 CT、MR 這類模態(tài)的圖像動輒 4000 多的像素值范圍不用 16 位根本存不下動態(tài)范圍。我去翻了 Cornerstone Examples 倉庫的代碼它里面有個專門演示本地文件加載的例子核心邏輯就是上面這條鏈路代碼不長但把協(xié)議注冊和加載兩個關(guān)鍵動作都體現(xiàn)了import * as cornerstone from cornerstone-core; import * as cornerstoneWADOImageLoader from cornerstone-wado-image-loader; // 1. 初始化加載器必須 cornerstoneWADOImageLoader.external.cornerstone cornerstone; cornerstoneWADOImageLoader.external.dicomParser dicomParser; cornerstoneWADOImageLoader.init(); // 2. 在 DOM 上啟用一個渲染容器 const element document.getElementById(viewport); cornerstone.enable(element); // 3. 使用 wadouri 協(xié)議加載本地或遠程 DICOM 文件 const imageId wadouri:https://example.com/dicom/example.dcm; cornerstone.loadAndCacheImage(imageId).then(image { cornerstone.displayImage(element, image); });這段代碼看著簡單但有幾個容易踩的坑注意一下。首先external.cornerstone的賦值必須在 loadImage 被調(diào)用之前完成否則加載器內(nèi)部依賴的 cornerstone 實例是 undefined。其次enable只能調(diào)用一次重復(fù)調(diào)用會導(dǎo)致 canvas 被重復(fù)包裹事件監(jiān)聽渲染時可能出現(xiàn)圖形錯亂。再者如果你的 DICOM 文件本身沒有窗寬窗位信息顯示出來可能一團黑或者一團白這不是渲染 bug而是你沒有做 VOI 適配后續(xù)要手動設(shè) windowWidth 和 windowCenter。2.3 cornerstone-tools 的交互工具只是錦上添花嗎很多人會糾結(jié)是不是必須引入 cornerstone-tools 才能做交互其實不是純 cornerstone-core 也能手動監(jiān)聽鼠標事件來改 viewport 的縮放和平移但工作量不小而且要處理坐標換算、Canvas 像素對齊這些雜事。cornerstone-tools 幫我們把這些常見交互封裝成了一個個可插拔的 tool比如 WindowLevelTool窗寬窗位調(diào)整、PanTool平移、ZoomTool縮放、LengthTool測量等等。這些工具本身也是通用的OHIF-Viewers 正是大量使用了 cornerstone-tools 的這套機制來實現(xiàn)閱片工作流的交互功能。但從 Cornerstone.js 實例學(xué)習(xí)的角度看我建議你先把 core 玩熟再碰 tools不然后面排查問題會分不清是渲染問題還是工具疊加問題。tools 只是給 core 套了一層交互殼它最終還是調(diào)用 cornerstone 的 setViewport 接口去改渲染參數(shù)。3. 實操一個 Cornerstone 最小應(yīng)用本地 DICOM 文件渲染3.1 環(huán)境準備與依賴安裝我用 Vite 搭建了一個最簡單的純前端項目npm 安裝一下就完了比之前用 webpack 配 loader 省事太多。安裝這么幾個包就夠了npm install cornerstone-core cornerstone-wado-image-loader dicom-parser有個坑是cornerstone-core的包名和cornerstonejs/core是兩回事。前者是老的 Cornerstone.js 經(jīng)典版本現(xiàn)在仍在多數(shù) OHIF 版本中使用后者是 Cornerstone3D 的新一代 API。我們現(xiàn)在關(guān)注的 OHIF-Viewers 老架構(gòu)和大量線上項目用的都是經(jīng)典版本所以裝包的時候看仔細了別裝了新一代的包然后對著舊 API 調(diào)接口十個有九個要翻車。如果你用的是 Vite還可能要處理一下cornerstone-wado-image-loader里對window和document的引用問題常見做法是使用vite-plugin-global-this或者手動在 HTML 里注入 polyfill這里不展開遇到再說。3.2 完整的最小代碼三步實現(xiàn) DICOM 渲染我把上面說的數(shù)據(jù)流用最精簡的方式落地寫了這么一版可以直接在瀏覽器里跑的代碼。為了方便演示我直接從一個公開的 DICOM URL 加載文件省去本地上傳的步驟import * as cornerstone from cornerstone-core; import dicomParser from dicom-parser; import * as cornerstoneWADOImageLoader from cornerstone-wado-image-loader; // 初始化注入依賴 cornerstoneWADOImageLoader.external.cornerstone cornerstone; cornerstoneWADOImageLoader.external.dicomParser dicomParser; cornerstoneWADOImageLoader.init(); // 創(chuàng)建一個全屏的 canvas 容器 const element document.getElementById(dicomImage); cornerstone.enable(element); // 這是一個公開的測試 DICOM 文件你也可以換成自己的文件地址 const imageId wadouri:https://raw.githubusercontent.com/cornerstonejs/cornerstoneWADOImageLoader/master/test/images/CTMONO2_16.dcm; cornerstone.loadAndCacheImage(imageId).then(image { // 拿到 image 對象后設(shè)置初始窗寬窗位避免圖像發(fā)黑 const viewport cornerstone.getDefaultViewportForImage(element, image); cornerstone.displayImage(element, image, viewport); }).catch(err { console.error(加載 DICOM 圖像失敗, err); });這段代碼跑通后你就成功邁過了 Cornerstone.js 最核心的一道坎——把一個醫(yī)學(xué) DICOM 影像顯示在網(wǎng)頁 Canvas 上。如果你用的是本地文件在瀏覽器里可以通過創(chuàng)建Blob或File對象再用URL.createObjectURL生成 URL 傳給wadouri:協(xié)議。需要注意的一點是Cornerstone 對跨域資源有要求如果你的 DICOM 文件和前端頁面不在同一個域要在服務(wù)器上配置好 CORS 頭否則fetch會被瀏覽器攔截。在實際項目中我通常不會直接硬編碼 imageId而是封裝一個loadAndDisplayDicom(element, file)函數(shù)來接收 File 對象內(nèi)部先把 File 對象轉(zhuǎn)成 object URL再拼接成wadouri:協(xié)議傳給 cornerstone。這樣代碼更好復(fù)用用戶可以拖拽文件進來就顯示。3.3 我實際跑通后看到的性能數(shù)據(jù)跑通以后我順手測了一下性能數(shù)據(jù)用的是上面那個公開的 CT 單幀圖像文件。這個文件是一個標準的多層 CT 掃描導(dǎo)出中間層畫幅 512x51216 位灰度單幀顯示模式。從點擊加載按鈕到圖像出現(xiàn)在 Canvas 上總共耗時大概在 280ms 左右其中網(wǎng)絡(luò)下載占了大概 150msDICOM 解析加像素數(shù)據(jù)封裝占了 80ms剩下的時間是渲染。這個數(shù)據(jù)在本地測試環(huán)境下還湊合但如果是實際 PACS 系統(tǒng)里的圖像文件大小往往翻幾倍加載時間會線性上升。優(yōu)化手段一般是開 web worker 做解碼或者用 WADO-RS 走 dicomweb 協(xié)議在服務(wù)端做轉(zhuǎn)碼返回已經(jīng)抽好幀的圖像。關(guān)于優(yōu)化策略后面問題排查里我會提到。4. 窗寬窗位在實例里怎么用才順手4.1 為什么圖像顯示出來是灰蒙蒙的很多初學(xué)者第一次跑通上面的 demo會發(fā)現(xiàn)圖像顯示出來灰蒙蒙的對比度很差或者整個一片白、一片黑。這絕對是個高頻問題根源就在窗寬窗位Window Width / Window Level沒設(shè)置好。CT 圖像像素值范圍通常在 -1024 到 3071 之間而屏幕顯示灰度只有 0 到 255 的 8 位范圍如果直接把整個像素范圍線性映射到灰度那大部分軟組織細節(jié)都會擠在很窄的灰度區(qū)間里肉眼根本看不出來差別。所以 Cornerstone 在做渲染時要做一個映射你會定義窗寬和窗位比如窗寬 400、窗位 40意思是像素值 40-200 這個范圍映射到屏幕灰度 0-255小于 40 的顯示為黑色大于 200 的顯示為白色。這樣軟組織的細微密度差異就能被放大顯示出來了。乳腺鉬靶這種高分辨率圖像通常要配合固定的窗寬窗位顯示否則病灶區(qū)域很容易被淹沒在背景里。4.2 手動調(diào)整窗寬窗位的代碼實現(xiàn)在 Cornerstone.js 里調(diào)整窗寬窗位有兩種思路一種是通過cornerstone.setViewport直接改 viewport 對象的 windowWidth 和 windowCenter 屬性另一種是調(diào)用 cornerstone-tools 里的 WindowLevelTool 做鼠標拖拽交互。我先寫第一種簡單直接const viewport cornerstone.getViewport(element); viewport.voi { windowWidth: 400, windowCenter: 40 }; cornerstone.setViewport(element, viewport); cornerstone.updateImage(element); // 觸發(fā)重繪很多人會疑惑為什調(diào)用setViewport之后還要再調(diào)一次updateImage不調(diào)行不行在不同版本的 cornerstone 中表現(xiàn)不一致有些內(nèi)部會觸發(fā)重繪有些不會所以為了穩(wěn)妥起見setViewport 之后顯式調(diào)一次updateImage保險。這個已經(jīng)是我踩過無數(shù)遍的坑了。如果你希望用鼠標拖拽來交互那就要引入 cornerstone-tools 并激活 WindowLevelTool核心代碼大致是這樣import * as cornerstoneTools from cornerstone-tools; cornerstoneTools.init(); cornerstoneTools.addTool(cornerstoneTools.WindowLevelTool); cornerstoneTools.setToolActive(WindowLevel, { mouseButtonMask: 1 });注意cornerstone-tools 的初始化必須先于激活任何工具之前完成而且如果你是用了自定義的 cornerstone 實例還需要做 external 依賴注入和 wado-image-loader 是同樣套路。4.3 預(yù)設(shè)置窗寬窗位不同模態(tài)的顯示策略實際閱片系統(tǒng)里不同檢查類型的圖像需要不同的顯示參數(shù)。CT 頭部一般用窗寬 80、窗位 40CT 腹部用窗寬 400、窗位 40肺部用窗寬 1500、窗位 -600。這些預(yù)設(shè)置在 Cornerstone 實例中如何落地一般做法是在加載完 image 對象后讀取 DICOM 標簽里自帶的窗寬窗位或者根據(jù) modality 去查一個預(yù)設(shè)表。這兩種方法都可以在影像工作流里同時實現(xiàn)可以根據(jù)后端返回的元數(shù)據(jù)做判斷。我個人的做法是在loadAndCacheImage的 then 回調(diào)里先判斷圖像類型如果是 CT 就查預(yù)設(shè)表如果是 MR 就優(yōu)先使用 DICOM 自帶的窗寬窗位因為 MR 的像素值不像 CT 有標準化的 Hounsfield 單位每個序列的窗寬窗位差異很大用統(tǒng)一預(yù)設(shè)反而可能顯示不好。MR 圖像如果沒有 DICOM 自帶的窗寬窗位直接做一個 min-max 歸一化把它撐滿到 0-255 顯示。5. 從單幀渲染走向序列閱片Viewport 與 Stack 管理5.1 Stack 是什么為什么要管理它醫(yī)學(xué)影像閱片的核心場景不只是看單張圖而是要看一個序列的幾十張、幾百張圖像比如一個 CTA 檢查可能包含幾百幀血管造影序列。OHIF-Viewers 里就是通過 Cornerstone Tools 的 Stack 機制來管理多幀圖像的——你可以把一組 imageId 按順序放進去然后通過StackScrollTool翻頁或者拖拽滾動條來切換當(dāng)前顯示的圖像。Stack 不僅僅是數(shù)組它還維護了當(dāng)前幀索引、每個圖像加載狀態(tài)、以及圖像是否已緩存。Cornerstone 內(nèi)部有個 LRU 緩存機制超過緩存上限的圖像會被自動清理下次再顯示時需要重新加載。這個設(shè)計保證了瀏覽器內(nèi)存不會被無限拉高但也意味著如果序列特別長翻頁回看前面圖像時可能會有短暫的白屏等待——這是緩存失效導(dǎo)致的不是 bug。5.2 用 cornerstone-tools 管理 Stack 的實例代碼使用addStackStateManager和addToolState來維護 stack 狀態(tài)是 cornerstone-tools 推薦的做法代碼大致如下import * as cornerstone from cornerstone-core; import * as cornerstoneTools from cornerstone-tools; // 在啟用元素上注冊 stack 狀態(tài) const stack { currentImageIdIndex: 0, imageIds: [ wadouri:https://example.com/dicom/1.dcm, wadouri:https://example.com/dicom/2.dcm, wadouri:https://example.com/dicom/3.dcm, // ... ] }; cornerstoneTools.addStackStateManager(element, [stack]); cornerstoneTools.addToolState(element, stack, stack); // 顯示當(dāng)前幀 const imageId stack.imageIds[stack.currentImageIdIndex]; cornerstone.loadAndCacheImage(imageId).then(image { cornerstone.displayImage(element, image); });翻頁的時候只需要更新 stack 里的currentImageIdIndex然后重新 load 顯示對應(yīng) imageId 的圖像。這里有一個性能優(yōu)化的技巧相鄰幀的圖像可以在后臺預(yù)加載。比如用戶正在看第 10 幀我可以同步發(fā)起第 11 幀的loadImage注意不是loadAndCacheImage不需要阻塞等待等用戶翻過去時圖像已經(jīng)緩存好了顯示就是即時的。這個技術(shù)我們在實際項目里叫prefetch一個很簡單的兩行代碼就能提升翻頁體驗一大截。5.3 從 Stack 到 Volume現(xiàn)代傾向如果你關(guān)注的是 OHIF 的后續(xù)版本會發(fā)現(xiàn)新一代的 OHIF基于 Cornerstone3D已經(jīng)全面轉(zhuǎn)向 Volume 渲染做 MPR、VR 三維重建等使用cornerstonejs/core的 Volume API 批量加載一整個序列的像素數(shù)據(jù)然后用 GPU 紋理做渲染。但這并不代表經(jīng)典 Stack 模式過時了——大量 PACS 閱片場景仍然是 Stack 顯示為主三維只是輔助。所以掌握 Stack 機制依然是最值得投入的學(xué)習(xí)路徑。6. 常見問題與排查技巧實錄6.1 Cannot read property getAttribute of undefined 這類報錯這個報錯非常經(jīng)典我在弄 Cornerstone Examples 時候沒少被折磨。它的來源通常是cornerstone.enable(element)傳入的 element 是 null 或者尚未掛載到 DOM。常見場景是你在 Vue 或 React 組件的某個生命周期鉤子比如created里調(diào)用了 enable但此時 ref 還沒綁定到真實 DOM。解決辦法很簡單確保 enable 在 DOM 掛載完成的時機調(diào)用比如 React 的useEffect或 Vue 的onMounted。另外一個隱藏原因是你調(diào)用了enable之后又在同一個容器上重新渲染了 DOM導(dǎo)致原有監(jiān)聽丟失此時應(yīng)該先cornerstone.disable(element)再重新enable。6.2 圖像一直加載不出來控制臺也沒有報錯這個問題排查思路比較固定。首先確認 imageId 的協(xié)議前綴是否和已注冊的 loader 對應(yīng)。Cornerstone 查找 loader 是按協(xié)議前綴匹配的如果你 imageId 寫的是wadouri:但注冊的是dicomweb:它匹配不上直接返回 undefined。其次確認網(wǎng)絡(luò)請求有沒有發(fā)出去打開 Network 面板看那個 DICOM 文件的請求是否成功了注意是不是被 CORS 攔了。最后看一眼 wado-image-loader 的初始化代碼有沒有被正確執(zhí)行尤其是external.cornerstone和external.dicomParser的注入順序不能反。6.3 處理 16 位灰度圖像時的像素偏移問題有些 DICOM 圖像的像素值是帶符號的比如 CT 的像素值有負值空氣通常是 -1000。如果你在做像素處理時直接把它當(dāng)成無符號數(shù)讀比如new Uint16Array(buffer)那 -1024 會被讀成 64512整個圖像會變成一片雪花或者出現(xiàn)嚴重的偽影。這類問題是我在實際開發(fā)中遇到的最容易忽視又最耽誤時間的坑。解決辦法是在解析像素數(shù)據(jù)時根據(jù) DICOM 標簽0028,0103中的 Pixel Representation 判斷是有符號還是無符號然后對應(yīng)使用Int16Array還是Uint16Array。另外有一個經(jīng)驗?zāi)憧梢韵葯z查一下 image 對象的minPixelValue和maxPixelValue屬性如果 minPixelValue 是個很大的正數(shù)那大概率讀取方式出了問題。6.4 在 Vue/React 里集成時注意銷毀機制框架集成時最常見的錯誤就是在組件銷毀時沒有調(diào)用cornerstone.disable(element)??蚣芙M件銷毀后canvas 從 DOM 上被移除但 cornerstone 內(nèi)部對元素的引用和事件監(jiān)聽還在輕則內(nèi)存泄漏重則下一個組件創(chuàng)建時因為 canvas 被復(fù)用而出現(xiàn)渲染錯亂。我建議你在組件卸載鉤子里顯式調(diào)用 disable并且把之前設(shè)置的工具狀態(tài)一起清理干凈。React 里類似這樣useEffect(() { const element viewportRef.current; cornerstone.enable(element); // ... 加載圖像 return () { cornerstone.disable(element); }; }, []);還有一個 Vue 項目里的坑如果在v-if控制的組件里使用 cornerstone 渲染建議先判斷 target 元素確實存在再 enable否則 Vue 渲染時機稍微一偏差就報錯。穩(wěn)妥的做法是nextTick之后再調(diào)用相關(guān)方法。7. 寫在最后這一路走下來我的體會是 Cornerstone.js 這套架構(gòu)之所以能扎根這么多年靠的不是花哨的功能而是對邊界拿捏得極其克制——它只做渲染把加載、解碼、交互全部交給外部模塊按需組合。正是這種可插拔的設(shè)計讓它既能支撐 OHIF-Viewers 這種重量級框架也能安安靜靜地躺在一個簡單的 HTML 頁面里渲染一張圖。如果你正準備在項目里落地醫(yī)療數(shù)字閱片別急著把 OHIF-Viewers 整個拽進來先花一兩天把 Cornerstone Examples 里的核心示例順序跑一遍從單幀渲染到多幀 Stack再疊加窗寬窗位交互和測量插件。把這些土地打扎實了再看 OHIF 的代碼你會發(fā)現(xiàn)它再復(fù)雜也只是對這些原語做了一層又一層精心的組織而已。等基礎(chǔ)設(shè)施理順了再考慮上 Cornerstone3D、Volume 渲染這些新花樣也不遲。最后再分享一個實用技巧調(diào)試時可以在瀏覽器控制臺直接拿到cornerstone.getViewport(element)返回值手動改兩個字段然后調(diào) updateImage實時看顯示效果。這種方式對于快速驗證窗寬窗位和顯示參數(shù)比改完代碼再刷新整個頁面高效得多。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
欧美丝袜中文字幕07在线| 男人把坤坤插入女人的下体| 粉嫩国产精品久久粉嫩| 强乱老妇中文字幕| 综合色图亚洲欧美| 另类 日韩 熟女| 亚洲综合色在线| 中国一区二区亚洲人妻| 丝袜足交视频| 亚洲日本天堂| 色婷婷在线视频| a片自拍直播视频| 欧美的性爱网站免费| 99色日| 日本狂喷奶水在线播放212| 97就爱干| 国产av高清版| 玖玖97综合| 国产超碰| 国产亚洲美日韩Aⅴ中文字幕无码成人| 毛片麻豆91糖心精品毛情片| 日韩 成人 有码| 一区二区三区四区五区高清无码永久视频 | 成人性爱视频在线看| 超碰91在线| 日日黄色三级网站| 婷婷在线播放| 伊人久久88国产女| 精品久久人妻成人网| 最新av网站在线观看| 婷婷超| 另类老少妇| 99久久久无码| 夜夜中出国产| 9热9热综合网| 亚洲精品欧美专业| 狠狠狠一区二区三区| 伊人久久婷婷| 国产精品免费美女视频| 操操逼视频| 国产色精品午夜大片| 思思热国产在线视频| 亚洲男人电影天堂| 91精品人妻一区二区三区蜜桃| 后入式视频国产自| 青青操日韩| 天天躁狠狠躁av| 国产乱子伦一区二区三区免看| 91 丝袜在线| 国产精品久久久久久夜夜夜| 丰满少妇高潮无码| 大吊色| 熟妇熟女视频一区二区三区| 欧美伦乱| 亚洲av成人精品一区| 日韩欧美性吧婷婷乱伦大香蕉| 色97欧美| 久久9精品| 久草线上视频免费看| 综合欧美日韩在线| 欧美,日韩,中文,另类| 欧美日韩亚洲少妇寂寞影院正在播放 | 久久精品亚洲婷婷| 综合婷婷| 99re视频在线观看这里只有精品| 一二三啪啪专区| 青青草日韩无码| 曰本特级特黄特色黄色A级网站高清在线免费看| 综合啪啪| 久精品无码av一区二免费国产在线观看| 亚洲高清无毛一区二区| 人人艹亚洲| 欧美日综合| 人妻AV在线| 91国产精品熟女| 97AV在线免费观看| 女沟厕偷窥piss小便| 巨爆乳一区二区爆乳区| 99性爱视频| 超碰97玖玖爱| 97干在线| 这里只有精品视频在线| 人妻插插人妻人| 国产免费一区| 啊啊啊快操我视频| 日韩欧美~中文字| 91中出视频| 亚洲一区二区三区在线激情| 久久精品国产96精品亚洲拳交| www.狠狠| 欧美高清91| 91搡老女人老妇女老熟女歌词翻译| 欧美狠狠干| 国产精品岛国片在线观看| 911粉嫩人妻| 91在线美女| 超碰 欧美| 操www| 亚洲人妻中文高清| 操b网站亚洲无码| 2017,超碰| 亚洲伊人a线观看视频| 色网在线视频观看免费| 久久111| 大香交| 91亚洲欧美| 日韩午夜啪啪视频| 亚洲熟妇白浆无码AV| 人妻一二三区| 日韩草久视频| 四虎精品永久在线播放| 少妇特黄一区二区三区| 国产欧美日韩一区二区三区| 99啪啪| 偷拍亚洲情色| 丁香激情网| 亚洲天天自拍| 狠狠狠狠狠干| 97香蕉网| 国产精品网站www| 欧美日韩插逼视频| 96AV精品| 香港澳门日本三级网站| 大香蕉欧美伊| 人妻干天天| 97综合在线观看| 午夜性刺激视频免费观看| 亚码激情| 香港澳门日本三级网站| 97在线观视频免费观看| 午夜福利免费福利视频| 九九AV| 久操综合在线| 亚洲色婷婷久久91| 亚洲一区亚洲天堂| 手机在线中文字幕国产 | 国产精品乱码久久| 天天色播| 日本视频在线中文字幕| 97久久免费| 久久久久久国产无码精品| 久久精彩视频9| 超碰亚洲97| 欧美v亚洲v综合v国产v妖精| 丝袜翘臀后入欧美校园亚洲自拍另类小说一区中文字幕少妇诱惑 | 精品妇女一区二区三区| 国产亚洲福利第一页丝袜| 欧亚性爱视频免费看| 黄久久| 夜夜嗨一区二区| 亚洲影院无码在线| 日韩欧美三级| 99re8超碰| 熟女六十路| 免费观看一区| 免费成人在线熟妇网| 国产高清MV操逼视频| 日韩91网站| 精品一区二区三区蜜桃臀赵总 | 淫荡网址| 91 国产丝袜在线播放-百度| 国产超碰国产97| 一区操逼| 密臀视频三区免费网站| 日韩丝袜高跟制服在线观看| 五月婷婷六月天| 一级做a爰片性色毛片久久| 国产九九九九九九| 久久一二三四不卡 | AV无码久久久精品| 成人97人人超碰人人| 97视频在线免费| 欧美少妇第一页| 九热视频| 久久精品国产亚洲AV片多多 | 日韩AV片| 东京日日夜夜| 国产高潮AA片免费看| 国产日韩色综合| 91丝袜美女视频| 大干人妻| 91天美免费| 九九九久久久久| 91在线美女| 色色婷婷五月| 去干网最新版| 上特色A在线| 久欲AV| 屌妞视频久久久久久久久久久久| 1区2区3区在线视频| 91人妻Pr| 全免费a敌肛交毛片免费| 精品一区二区三区国产| 国产精品自拍视频| 天天综合亚洲综合| 人人操人人摸人人骑| 清纯唯美第一页| 91激情国产| 人妻人妻天天碰| 欧美色997| 玖玖爱综合| 偷拍欧美激情| 久久久亚洲精品电影免费看| 91人人爽人人爽| 国产欧美日韩在线观看麻豆传媒公司| 色色99| 亚洲 欧美 手机在线观看| 丰满岳乱妇一区二区三区| 国产高清视频无码在线| 亚洲欧美综合区自拍另类 | 亚洲永久永久永久永久一级一级一级精品 | 午夜精品久久久久久久男人的天堂 | 久久久久13| 五月丁香| 欧美老熟另类| 亚洲少妇在线影音| 毛片麻豆91糖心精品毛情片| 玖玖大干人妻| 久久免费9| 亚洲激情片| 97亚洲精品| 亚洲乱码精品一区二区| 久久久久久电影| 91操人| 国产成人在线观看综合| 99热精品免费| 天天综合网久久ww| 98超碰日本| 色欲av国内精品久久久久久| 国产三级资源在线观看| 伊人影院综合是一个与深夜成人在线| 亚洲国产日韩欧美熟妇在线| 日韩丝袜人妻AV| 欧美亚洲日韩16色| 六月丁操逼| 欧美91丝袜| 麻豆一区二区三区在线看| 日韩少妇无码| www.色婷婷色综合| 亚洲色图a| 国产中文日韩欧美一区二区三区人妻丝袜美腿 | 午夜男女爽爽大片免费观看| 亚洲最大成人a毛毛片| 久久婷色| 牛牛久久国产精品视频一二三 | 久久九九视频九九视频| 日本欧美韩国国产在线| 国产人妻精品久久久一区二区三区 | 在线洲亚线| 九九九九热| 国产精品干干干| 95人妻爽爽人人做人人澡| 天天综和| 国产99999| 性影在线视频| 伊人久久国产免费观看视频| 中国和日本人色哪个不下载能放| 欧美性爱18观看| 啊视频在线| 亚州久久9| 深夜国产福利| 十八禁视频网站| 婷婷丁香一区二区三区| 熟女人妻一区二区三区| 国产美女mm131爽爽爽爽| 中文字幕在线观看第二页| 亚洲交换| 爽极品影院| 日韩情色视频| 色吧91| 久久ww| 囯产精品强| 男人天堂黄片| 狠狠爱大香蕉| 91+欧美| 中文字幕第9页萱萱影音先锋| 伊人五月天婷婷| 乱欲一区二区| 超碰98综合网| 天天躁日日躁AAAAXXXX国产| 国产传媒1234区| 亚洲欧美情色| 91美女中出| 久久久免费高清中文视频| 亚洲免费成人在线高清无码视频| 国产suv精品一区二区四区999| 蜜臀va69| 亚洲欧美成人在线| 男人的天堂com| 自拍偷拍2025在线观看| 欧美最大综合网| 亚洲精品人妻在线| 久久AV色| 熟女露脸激情自拍视频| 亚洲黄色网址视频| 啊啊啊啊啊啊啊在线| 精品国产丝袜一区二区三区乱码| 搞中出视频在线观看| 强奸乱伦AV一天堂网| 日韩二三区| 欧美黄色手机在线观看| 亚洲AV资源| 日本人妻伦在线中文字幕| 伊人久久国产免费观看视频| 超碰精品国产无码| 欧美人妻中出| 国产精品99久久久www| 夜夜夜夜爽| 在线观看中文av字幕| 死我十八禁| 中国亚洲呦女专区| 91视频综合网| 日韩精品作爱导航| 五月天社区| 26uuu最新| 素颜老阿姨乱情色| 日韩不卡av一二三| 日本操逼视频免费| 男人精品天堂一区| 九九aV| 日日骚中文字幕| 欧美精品丝袜久久久中文字幕| 欧美探花网| 中文字幕av一区二区三区人妻少妇| 色999五月色| 久久精品国产亚洲AV清纯| 999综合色| 久草福利在线资源站| 熟妇熟女视频一区二区三区| 污污汅18禁网站在线永久免费观看| julia ann久久| 亚洲美女精品| 久久艹逼视频| av在线免费一区二区| 亚洲美女AV无码| 超碰98综合网| 人人手机欧洲亚洲国产人妻| 大屁股xxxxx| 国产婷婷综合在线观看| 国产精品97超碰| 欧美综合站| 91艹B视频| 97综合国产| 久久6热精品99视频| 麻豆天美国美国产AV| 日本日逼高清| 国产免费黄色一级大片| 欧美少妇高潮| 91影视亚洲| 操九九九九九九| 女人爽到高潮潮喷18禁网站 | 日韩Va亚洲va欧美Ⅴa久久| 欧美草草高清日韩视频| 久久综合久色欧美综合狠狠| 中文字幕在线观看第二页| 国产三级电影免费观看| 三级激情网站| 久久久久久电影| 欧美精品97| 中文一区二区| 果冻传媒一区二区三区| 免费成人在线熟妇网| 性欧美另类高清| 97婷婷色| 成功精品影院| a在线观看| 久草福利在线资源站| 操逼www.| 91强热人妻| 九九久久一区二区伦理| 热久久国产| 日本欧美中文字幕| 另类图片欧美激情综合| 一级性爱视频免费在线| 国产老太乱伦一区| 草草电影院| av黄图片在线观看| 97视频在线看| 亚洲无码偷拍| 久艾草在线精品视频在线观看| 999综合网| 97亚洲在线| 1区2区3区视频| 久久少妇| 青娱乐淫乱1314| 91看黄片| 亚洲天堂一区二区久久| 日韩亚洲中文有码视频| 一级特级aaaa毛片免费观看| 黑人黄片在线免费观看| 这里只有精品久久| 男女91| 亚洲 欧美 小说| 亚州色图欧美| 伦理日韩国产久久| 啊啊啊好大好深| 亚洲开心网| 91久久免费视频互動交流| 亚洲欧洲日韩天堂av| 精品一区二区综合熟妇| 色婷婷综合久久久久中文国产精品一区中文字幕,国产福利电影一区二区三区 | 超碰精品国产无码| 性色av蜜臀av色欲aV| 国产浮力影院第1页| 四虎影院成年人片| 裸体女人草逼视频播放一区,二区,三区,四区,五区 | 日韩熟女无码| 国产高清在线观看欧美| 97久久视频| 国产不卡片| 欧美精品 - 91爱爱| 国产精品乱码久久久久久| 97色欧洲| 日韩操逼HD| 91碰碰碰| 91挑色欧美| 老司机香蕉| 91一区二区三区蜜桃| 亚洲 日韩 丝袜 熟女 变态| 少妇二级| 国产精品午夜福利| 天天上日日上日韩精品| 少妇滛荡视频| 国产精品网站免费| 久久久精精精| 麻花豆传媒剧国产MV出差| 伊人久久婷婷| 免费成人在线熟妇网| 欧中美三级一区二区三区| 免费无码婬片AAAA片直播色戒| 93人人操人人| 人妻在线臀日韩| 精品女同一区二区三区| 欧美精品日韩久久久九| 大香蕉宗合网在线| 清纯唯美综合亚洲| 日本免费人成视频播放120秒| 五月婷婷激情综合| 九九九九97| 久久 国产 无码| 91Chinese在线| 青青青艹在线视频| 国产探花日韩援交| 欧美一区二区三区大综合| 深爱伊人影院| 18禁超污无遮挡无码免费网| 亚洲熟女乱色一区二区三区久久久| 午夜超碰| 久久丁香| 中文字幕丝袜| 美日韩成人| 91AV国产精品| 久久HD| 色偷偷超碰亚洲| 成人无码在线超碰网| 99国内精品| 蜜臀一区二区三区亚洲最新章节在线观看 - 高清蜜臀一区二区三区亚洲全集播放 | AV老汉| 97爱亚洲| 国产精品老熟女一区二区| 精品国产综合久久福利,热99这里有精品综合久久,99热这里只有免费国产精品,精 | 人妻精品综合中文字幕在线 | 国产免费一区2区3区| 亚洲激情AV| 91操熟女视频| 超碰99热| 91亚洲欧美激情| 欧美色五月| 超碰吊日色| 2020国产精品| 嗯嗯啊啊啊好爽| 久久激情视频| 亚洲97在线观看| 天天添天天干电影| 翔田千里A片一区二区| 91亚州日韩高清| 欧美在线91| WWW4虎| 丰满美女一级毛片在线播放| 激情终合网| 精品国产91av一区二区三区| 日韩八十路老熟女| 97色婷| 日韩猛交| 欧美性爱一区| 天天干天天操天天干天天操| 亚洲色图8| 久久三区四区| 999久久久久久久精| 岛国黄片网站| 国产精品大屁股999| 99精品久久| 午夜国产综合视频在线观看| 青木玲在线不卡| 在线视频日韩欧美国产| 久久久久久久9| 国产日韩精品一区二区三区| 亚洲高清无码在线桃色| 亚洲丝袜少妇在线| 久久久久9999妇女| 亚洲色诱惑| 草草电影院| 91成人久久| 99久热| 翔田千里无码一区| 欧美性少妇| 97色冈| 亚洲一欧洲中文字幕在线| 蜜桃久久一区| 成人综合视频久久| 日韩无码专区| 久操网无码在线| 亚洲欧美伦综合| 日本久久综合| 精品妇女一区二区三区| 99热99在线播放激情| 亚洲 欧美 第一页| 亚洲伊人久久精品影院| 91AV老熟女视频| 久久精品店| 曰韩人妻中文字幕在线| 日产精品久久久一区二区| 国产夜夜操| 国产超碰在线| 在线人人人人人人精品超| 精品九九| 91色欧美| 91精品丝袜在线观看| 美女被啪到深处抽搐视频| 亚洲综合大片| 九九九久久久久| 懂色AV一区二区三区| 92人人操人人| 约操熟妇| 久久五月天婷婷丁香中文字幕| 中文字幕三四五区| 人妖欧美一区二区| 欧美亚洲厕所精品偷拍91| 99999精品视频| www.婷婷五月天| av天堂手机版追回| 91爆操视频| 国产精品网址| 成人av影院在线观看| www.av家庭乱伦| 亚洲丝袜综合| 91伊人| 国产一线二线三线av| 亚州五月| 超碰9 7女人| 后入式999| AV男人天堂网| 亚洲校园激情| 91精品久久久久| 91热热色| 天天日天天干少妇日| 极品色综合| 大香蕉淫人网| 另类图片综合| 国产欧美日本亚洲精品| 亚洲国产一区二区日韩专区| 涩涩涩综合| 看大黄色大片原件| 熟女精品va中文字幕| 亚洲AV噜噜狠狠网址蜜桃动漫| 日韩在线性爱免费视频| 国产aⅴ无码片毛片一级网站| 脫衣舞一区二区三区| 亚洲欧美自拍偷拍| 91干熟女| 97天天爽| 91丝袜在线视频| 国产精品久久久久久久久久二区三区| 二级毛片| 亚洲欧美综合| 国产精品亚洲天堂网址| 手机在线观看不卡无码av| 日韩久久激情精品| 91亚洲人电影| 97精品国产手机| 久久久久极品| 屁股久久久久久| 亚洲精品白浆高清久久久久久| 密乳无码| 爽爽淫人网| 91色图片| 五月天日日操夜夜操| 亚洲无992tv| 国产av强奸美女| 九热视频| 久久久中文版| 九九九九精品视频| 高潮的A片激情扒开一区| 成人亚欧免费视频| 9999免费精彩视频| 亚州色站 日韩电影| 日韩人妻丝袜美腿中文| 一起草在线视频| 精品国产一区二区三区四区在线看| 免费在线观看国内色片网站网址| 亚州伊人色综台| 啊啊啊要高潮了| 欧美性夜| 欧美精品久久| 国产91影院| 3p国产欧美99热| 亚洲中文制服诱惑| 亚洲激情深爱文学小说网站| 亚欧高清| 亚洲国产精品久久久久久久久久| 91AV天堂| 国产综合日韩伦理| 亚洲成人网站在线观看| 内射卯月麻衣| 肉动漫无遮挡h在线观看| 欧美一级黄色18片免费看| 97激情97激情| 97干在线视频| 秋霞视频一区二区| 亚州欧美一区| 成人av影院在线观看| 中文字幕av色| 亚洲Av诱惑| 日韩不卡av一二三| 青青青草伊人精品| 爽极品影院| 亚洲AO在线| 2017亚洲天堂| www五月| 欧美偷偷网| 成在线人在线观看视频| 第四色亚洲色图| 国产一级内射高清视频| 婷婷久久综合| 欧美热图99| 99日精品欧美国产| 极品一区二区三区免费| 秋霞蝌科网日本一区| 91AV天堂| 双插性欧美一二三区| 91色图片| 天天躁日日躁AAAAXXXX国产 | 中文字幕欧美日本乱码一线二线 | 双插在线| 啪啪啪东京| 啊啊啊啊二区好大| 天天操人人操狠狠插| 亚洲AV无码久久精品蜜桃小说| 久96热在线观看视频| 91蜜臀熟女| 日韩无码极品| 亚洲第一页欧美| 日韩极品无码B| 欧美人妻色| 95自拍视频在线观看| 国桃视频产巨乳精品一区二区在线| www.伪伪| 97精品视频在线| 99精品在线观看| AV中亚| 真实高潮91| 翔田千里一区二区三区奶水| 中字一区| 大香蕉综合网| 84YTCOM性无码| 97天天操天天干| caoni国产亚洲av| 国产精品一区二区麻豆| av天天在线观看| 欧美性爱第一页久久| 欧洲与亚洲欧美精品中文字幕| 男人高清无码一区二区| 久久亚洲一区女同性恋中文字幕| 亚洲熟妇极品| 无码国产Av| 男人天堂导航| 久久这里精品国产99丫e6| 国产一区自拍欧美日韩| 亚洲AV永久无码精品成人调教| 大奶啊啊好爽 | 国产情色第一第二页在线观看| 欧美劲爆视频一区二区| 婷婷五月天激情四射| 91总综合网| 日韩999| 亚洲av无码国产精品字幕| 久久成人午夜狠狠| 日本有码久久| 国产AV激情无码久久无码| 神马午夜久久| 一二三四视频在线社区中文字幕| 久久女婷| 亚洲精品无码成人久久久99| 伦理第一页| 亚州男人的天堂| 亚洲 图片 综合91| 人人操人人摸人 | 岛国黄色大片网站| 91一区二区三区蜜桃| 日韩日韩日韩-国产乱码精品一区二区| 日本亚洲vr欧美不卡高清专区| 黄色小视频日本txt| 免费在线看黄片av| 成人日本片久久久蜜桃| 中文字幕97色| 美女啊啊啊啊啊啊啊| 妺妺跟我一起洗澡没忍住| 91人精品妻入口| 啊啊啊爽爽| 99精品无码| 2026国产精品视频| 国产SV一线| 999久久久精品国产| 欧美黄片欧美黄片xxx| 中文字幕黄片在线| 男人兔费天堂| 日韩,欧美,中文在线| 免费一级性爱久久| 欧美视频一| 天天噜| 少妇贴图| 中文字幕第二页| 97视频在线免费播放| 躁躁日曰躁2020| 嗯阿好爽好紧| 男人的天堂.com| 校园春色制服丝袜中文字亚洲| 亚洲成人久久美女| 女人被添高潮免费视频| 91强奸乱轮| 自拍大香蕉乱插| 久草网站免费在线观看| 亚洲熟女性高潮久久久| 99这里只有精品国产| 在线中文字幕| 三级精品三级在线观看| 日韩人妻一区二区| 九九碰九九爱97超碰| 日韩性色| 成年人黄色| 日韩精彩免费| 九九九网页| 视频不卡中文字幕| 综合色图,成人综合网| 去干网最新版| 人人干人人搞人人摸| 黄色片A级一区二区三区| 欧美日韩1234| 九九九九九九视频免费| 丰满人妻-区二区三区免费| 在线黄页看毛片| 69XX一中文字幕人妻91| 在线洲亚线| 大香蕉十区| 97干色天堂| 天天爱综合网| 99无码| 亚洲操操| 九九热九九热| 欧美色997| 国产AV线| 电家庭影院午夜69久久夜色精品国产69乱| 日本韩国五十路六十路七十路老熟女作爱视频网站 | 夜夜操美女| 久久久久久综合久久伊人蜜月| 老熟女综合网| 国产精品女aA片爽爽视频| a片偷拍视频| 中日韩久久久| 四虎影视在线| 色情婷婷久久五月天| 校园春色美腿丝袜 | 男人天堂站| 亚洲熟妇综合久久久久久| 久久久久久久久9| 无码人妻精品一区二区三区99不卡| 亚洲无无码αⅴ每日更新| 色综合色欲色综合色综合色综合| 欧美天天谢综合网| 97操97干| 18禁的网站在线| 色91综合网| 97在线观| 成人性爱电影一区二区| 韩国女主播青草在线| 欧美天天搞| 操逼网站地址| 日韩黄色小说| 黄色在线网站| 黄色不卡视频| 欧美日韩电影成人在线| 97天天爽| 亚洲色图欧美一区二区不卡| 人妻AV 中文字幕的| 加勒比海人人操超碰在线| 亚洲精品中文字幕一区在线视频| 麻豆伊人网| 日韩操逼HD| 国产精品天干天干综合网麻豆| www亚洲免费| 久操操| 欧美aa一级片| 91熟女少妇| 2018色综合天天操| 美欧色综合| 人人手机欧洲亚洲国产人妻| 欧美精品23| 久久久少妇诱惑精品视频| 日韩人妻一区二区精品| 亚洲一区二区av| 天天操天天射青青草| 熟女激情综合网| 校园春色中文字幕AV| 大香蕉乱伦视频网| 国产高清成人免费视频| 日韩ab网| 亚洲日本韩国极品一区二区| 伊人网青青| 天天欲望网| 91伊人影视综合| 美女啊啊啊啊pc| 99久在线精品99re8蜜桃| 国产一区二区欧美日本| 欧美 熟女 日韩| 色婷婷激情| 男人的天堂.com| 曰韩精品视频一区二区| 日产精品久久久一区二区| 水澄无码AV| 无码高清专| 亚欧色图在线激情| 久久人妻无码毛片A片麻豆| 精品人人| 日韩欧美亚欧在线视频| 伊人97超碰| 欧美视频一区二区在线| 91被操| 天堂性色| 人妻第一页| 婷婷五月天色网| 97频视在线| 骚熟女吞| 欧美亚洲宗合色性图| 超碰在线人妻不卡| 久久婷婷国产一区二区色| 国内毛片免费h片在线| 屁屁影院一区二区三区国产| 久久精品国产欧美日韩亚洲欧美日韩中文久久国产一区 | 中国熟女91| 日本高清熟女久久一区| 国产亚洲色婷婷99精品91| 香一区二区三区| 九九热超碰97亚洲最新香蕉 | 丁香五六月啪啪| 99人妻碰碰碰久久久久禁片| 2023天天操夜夜操| 免费久久一级毛片大黄| 91伊人久| 精品超碰国产| 五月丁香色婷婷| 99re6国产精品99re在线| 色妺妺在线视频| 国产农村妇女精品一二区| 裸体美女久久久| 少妇蹲下买菜露大唇0| 一区二区三区看视频| 乱欲视频| 国产视频一区二区免费| 欧美午夜精品久久久久久3D| 蜜桃久久久久久久| 蜜臀久久精品久久久久视频| 91美女视频直播| 国产偷人伦激情在线观看| 国产网站在线播放| 极品色社| 大香蕉手机在线| 成人毛片免费| 午夜福利成人免费视频| 精品97精品97| 亚洲操操操无码| 18禁精品网站在线看| 免费视频无码| 少妇熟女视频一区二区三区| 2017av无码免费无线播| 国产一级黄色片在线观看| 九九九九88| 无码78| 国模精品娜娜一二三区| 久久久中文版| 呦呦影院| 日韩无码嘿咻黑热久| 欧美在线大香999| 蜜乳AV一区二区三区四| 天天影视射综合网| 影音先锋日本一区二区| 丝袜美腿欧美| 男人久久天堂| 欧美黑人性猛交91| 亚洲色人阁| 久久久精品国产亚洲伊人| 国产suv精品一区二六| 日本激情免费大片| 国产精品乱码久久久、久久| 日本熟女免费視颖| 色天堂综合| 国产一级操B视频| 2026国产精品视频| 日本Xx性爱| 91美女视频直播| 开心五月深爱五月| 夜夜嗷嗷一区二区| 人人贴人人摸| 午夜精品人妻二区三区| 国产精品一二三在线看| AV天黑人| 亚洲国产精品乱码在线观看| 成人av性爱电影在线观看| 一区二区三区 丝袜高跟| 中日韩久久久| 天天综合色图| 国产福利夜| 性色av婷婷久久一区二区点复制| 亚洲Av诱惑| 少妇与黑人高潮在线| 26uuu性物| 另类欧美综合| 欧美综合制服在线| 人人扣人人操| 麻豆国产97在线| 四季av一区二区凹凸精品小说| 男人的天堂2010| 精品亚洲国产成人av网站| 中日韓欧美高清| 91丝袜在线视频| 日韩另类色图| 制服乱伦| 黄在线| 78久久| 男女性扦B| www.一本大99| 黄色AV影视| 九九香蕉网| 99久久精品无码一区二区| 亚洲午夜未满十八勿入网站日本又色又爽又黄| 蜜臀亚洲综合一二三四区| 国产精品乱人伊人网| 久久老子无码午夜伦不卡| 操操操日本的逼| 亚洲图片色图欧美另类| 色色毛片| 69少妇一区二区| 亚洲第一男人天堂| 婷色五月| 手机在线A片| 亚州免费啪啪视频| 久久riav中文精品| 一类无码操逼视频| 国产精品无码av在线| 亚洲欧综合另类无码一区| 青椒国产97在线熟女| 思思热影视| 欧美丰满熟妇XXXX性ppX人交| 91xingse| 熟女啪啪视频| 2020视频1区2区3区| 午夜精品探花| 狠狠爱AV| 欧美极品少妇| 亚洲男人天堂网久久| 亚洲AV成人精品网站在AV| 欧美片第一页| 手机看片91人妻| 自拍偷拍草一草| 亚洲人妻中文在线视频| 伊人骚琪琪亚洲天堂网站| 日本布卡一区二三区| 久久精品高清无码一区| 人人九九精| 日本操逼无码| 91精品久久久| 精品色色| 亚洲色9| 中文字幕精品专区搜索结果91| 欧美日综合| 国产精品久久久久久亚洲色欲| 国产 热久久久久国产精品| 婷婷五月影院| 久久爽爽精品| 亚洲色婷婷综合久久一区二区三区| 蜜臀一区二区三区在线 | 国产精品视频麻豆入口| 九九无码视频| 欧美爆操91| 熟女少妇视频| 亚洲精品中文字幕一区在线视频| 欧美日韩99精品麻豆传媒| 久久久久久久六六| 色欲久久久久综合网| 国产精品久久久三级无码| 蜜桃精品视频一区| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区 | 国产精品视频自拍在线| 无码又爽又硬又激情免费视频| 神马影院午夜福利久久久| 亚洲国产综合图区中文字幕| 色人久久| 超碰无码五月97| 2018天天干在线视频| 97视频620| 国产午夜福利专区综合| 超碰公开久久网| 亚洲色图图片| 成人AV在线电影| 国产精品播放| 国产视频三区四区| 思思热一热婷婷热一热| 美国三级日本三级久久99| 少妇人妻好深太紧了vr91| 日本不卡二三区| 风流老熟女一区二区三区l| 欧色性第一页| ?亚洲伊人伊成久久人综合网| 干b网| 黄色区免费观看中文字幕| 久草久日| 在线观看AV不卡| 久热影视| 色97综合中文字幕| 99操视频| 日韩欧美成人午夜福利| 91蜜臀人妻中文字幕在线| 日本久久久久久久久| av在线观看不卡网站| 久久97视频| 天美传媒AV国产在线| 综合色色网| 免费无码国产精品v片在线观看| 成人草草视频| 久久综合女优| 欧美极品女人的天堂| 精品高清一区二区三区三州| 熟妇色99| 日韩中文9| 亚洲图片欧美制度| 超碰91在线| 天堂а√在线最新版在线 | 亚洲少妇诱惑| 国产树林里野战在线看| 日本乱人伦片中文三区| 99热线麻豆| 天天干夜夜肏| 欧美97日韩| av天天在线观看| 最新欧洲欧美日本激情网站| 伊人五月天激情| 亚洲国产奇米影视久久| 91伊人久| 国产对白刺激视频| 无码精品久久久久久亚洲| 色噜噜国产精品视频一区二区| 尤物视频新赏网鲜网色诱网| 亚州色国| 亚洲国产青青| 青青草玖玖爱| 亚州 综合 色图| 欧美一级专区免费大片| 97色碰| 2020中文字幕在线| 少妇激情AV| 男人天堂东京热| 婷婷爽人人婷婷爽视频| 91高潮| 亚洲国产91精品一区二区久久| 91在线秘 男同| 3P乱轮视频| 七久久久| 婷婷美人网| 亚洲色图日韩丝袜制服一区二区五月在线 | 欧美96在线|欧| 夜色91| 亚洲欧美一区二区三区一猛片| 日韩精品一区二区三区色欲| 五月天精品| 国产又大又粗又长视频在线| 色一区二区三区综合| 久久久精品网| 精品人妻av在线播放| 精品丰满人妻一区二区三区免费观| 日本一区二区三区精品| 97在线青| 亚洲日韩在线a不卡99精品| 亚欧国产无码精品在线| 亚洲综合小说另类图欧美视频激情小说色五月天 | 嗯嗯嗯啊啊啊干死我吧| 亚洲国产精品无石码久久| 在线国产福利网址导航| 日日狠狠久久偷偷色综合免费| 天堂伊人久久| 欧美呦呦性爱| 99热婷婷| 久久激情视频| 欧美精品久久久久久久久88| sss视频华人在线| 国产精品伦理| 九九综合色| 91在线观看,天天综合| 精品人妻一区二区三区在| 亚洲成人久久美女| 中文字幕精品三级久久久| 日本成人A片网站| 日本 免费 一区二区三区 久久香蕉| 搡老女人老91二区| 97精品国产97久久久久久免费| 后入福利| 欧美激情综合| 国产9区| 超碰亚洲欧美日韩无| 无人区高清电影免费观看一区二区三 www.qmcai2.com | 五月婷婷激情综合| 奇米狠999| 欧美色吧综合| 五月婷婷六月色| 99re99在线视频| 91 刺激在线| 91深夜夜| 人人妻人人爽人人精品| 伊人五月天青青草婷婷| 国模无码人体一区二区三| 欧美 亚洲 91| 色播五月丁香| 色色毛片| 亚洲国产精品久久久久婷婷老年| 青青操青娱乐| 九月激情婷婷| 国产日韩怡红院| 操死我了嗯嗯嗯| 国产馆极品诱惑| 欧美日韩性爱无码| 亚洲毛片基地专区| 欧美亚洲清纯| 日韩 成人 有码| 91精品久久久久久77777| 亚洲在线网站| 啊啊啊草死我| 久久亚州大香蕉| 插老姨肥穴| 亚洲欧美精品91| 一块操欧美| 亚洲国产高清福利视频| 曰韩人妻中文字幕在线 | 老熟妇91| 欧美亚州综合网图片| 国产精品久久久九九九| 人妻在线中出视频| 日日夜夜天天| 看一级黄色视频| 91精品无码人妻系列| 国模不卡| 国产激情在线观看| 亚洲各类熟们中文字幕|