久久亚洲成a人片熟女精品色一区二区三区|国产精品视频第一精品视频|av天堂热无码手机版|亚洲?v无码久久无遮挡|国产精品偷伦视频免费观看国产|麻豆国产自产精品丰满熟妇|av无码av不卡一区二区|久久亚洲精品中文字

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——準(zhǔn)確說是 cornerstone-core 這個核心庫。這套組合在醫(yī)學(xué)影像前端領(lǐng)域算得上是事實標(biāo)準(zhǔn)了Viewers 負(fù)責(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 標(biāo)準(zhǔn)會發(fā)現(xiàn)那是一個能把人活活看吐的龐然大物。光是文件頭里那幾百個 tag什么患者姓名、檢查號、序列號、窗寬窗位、像素間距、Modality、SOP Instance UID……真要自己從零開始解析再把灰度圖像映射到 Canvas 上沒有一兩個月拿不下來而且做出來大概率是漏洞百出。這里我不打算展開 DICOM 標(biāo)準(zhǔn)的細節(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 用于顯示圖像測量工具、標(biāo)注工具、播放器、序列瀏覽等一應(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負(fù)責(zé)解碼和加載 DICOM 圖像。此外還有 cornerstone-math 做幾何計算支撐。OHIF 就像是坐在這些基石上面的總調(diào)度它管理數(shù)據(jù)集、元數(shù)據(jù)、工作流而真正把 DICOM 像素變成屏幕上的影像的是 cornerstone-core 在做。這個分工邏輯其實很好理解。打比方說OHIF 像是一家餐廳的前廳和后廚管理負(fù)責(zé)點單、傳菜、按照顧客需求配餐而 Cornerstone.js 是灶臺和廚師負(fù)責(zé)把食材加工成能上桌的菜。后廚只管烹飪不管顧客是誰、賬單怎么結(jié)所以 Cornerstone.js 本身非常純粹——它不關(guān)心你從哪兒拿到圖像數(shù)據(jù)只負(fù)責(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)置任何加載器它只定義了一套接口約定。加載器負(fù)責(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 只認(rèn)這個結(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)聽鼠標(biāo)事件來改 viewport 的縮放和平移但工作量不小而且要處理坐標(biāo)換算、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)境準(zhǔ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 單幀圖像文件。這個文件是一個標(biāo)準(zhǔn)的多層 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 做鼠標(biāo)拖拽交互。我先寫第一種簡單直接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ù)遍的坑了。如果你希望用鼠標(biāo)拖拽來交互那就要引入 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 標(biāo)簽里自帶的窗寬窗位或者根據(jù) modality 去查一個預(yù)設(shè)表。這兩種方法都可以在影像工作流里同時實現(xiàn)可以根據(jù)后端返回的元數(shù)據(jù)做判斷。我個人的做法是在loadAndCacheImage的 then 回調(diào)里先判斷圖像類型如果是 CT 就查預(yù)設(shè)表如果是 MR 就優(yōu)先使用 DICOM 自帶的窗寬窗位因為 MR 的像素值不像 CT 有標(biāo)準(zhǔn)化的 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 圖像一直加載不出來控制臺也沒有報錯這個問題排查思路比較固定。首先確認(rèn) imageId 的協(xié)議前綴是否和已注冊的 loader 對應(yīng)。Cornerstone 查找 loader 是按協(xié)議前綴匹配的如果你 imageId 寫的是wadouri:但注冊的是dicomweb:它匹配不上直接返回 undefined。其次確認(rèn)網(wǎng)絡(luò)請求有沒有發(fā)出去打開 Network 面板看那個 DICOM 文件的請求是否成功了注意是不是被 CORS 攔了。最后看一眼 wado-image-loader 的初始化代碼有沒有被正確執(zhí)行尤其是external.cornerstone和external.dicomParser的注入順序不能反。6.3 處理 16 位灰度圖像時的像素偏移問題有些 DICOM 圖像的像素值是帶符號的比如 CT 的像素值有負(fù)值空氣通常是 -1000。如果你在做像素處理時直接把它當(dāng)成無符號數(shù)讀比如new Uint16Array(buffer)那 -1024 會被讀成 64512整個圖像會變成一片雪花或者出現(xiàn)嚴(yán)重的偽影。這類問題是我在實際開發(fā)中遇到的最容易忽視又最耽誤時間的坑。解決辦法是在解析像素數(shù)據(jù)時根據(jù) DICOM 標(biāo)簽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 頁面里渲染一張圖。如果你正準(zhǔn)備在項目里落地醫(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
返回資訊列表
国产传媒操逼视频| 无码色| 亚洲少妇免费视频\| 狠狠干婷婷| 国产精品99精品视频网站| 99re在线观看| 97人肏| 老司机射| 欧美性爱91| 人妻精品一区二区三区| 校园春色AV天堂| 中文字幕人乱码中文字的预防方法 | 亚洲影院无码在线| 97视频免费播放| 2003天天干夜夜操| 97超碰欧美精品| 婷婷九月国产| 91AV天堂| 色妇91| 97激情97激情| 久久有碼| 五十路熟女工口 | 青青草日韩免费观看高清在线| 色色色综合网| 99热综合| 成人午夜视频免费播放| 亚洲美女自拍偷拍视频| 日本熟妇人妻中出视频| 操逼日韩无码 | 久久久久久久久久久免费精品| 亚洲 在线| 97久操| 久草老司机| 欧美亚洲20p| 艳美熟妇先锋一二三区| 日日夜夜骚| 亚洲综合有玛| 91殴美大片| A啊啊在线观看| 超碰天天操你比| 日本不卡码黄色| 夜色五月天| 91黑丝在线播放| 日韩一级片| 激情综合五月| 国产伊人自拍| 91操人| 亚洲国产亚洲天堂| 97色欧洲| 精品一级毛片在线观看| 人妻中文字幕精品无码| · —级AA伦aa坐爱午夜极速ⅴA一区天天噪天天噪天天噪 | 亚洲激情久久| 国产suv精品一区二区四| 久超碰在| 欧美色自拍| 久久机热| 色汉综合| 岛国片在线观看视频亚洲| 亚洲宅男天堂| 精品成人女人久久| 欧美78P| 亚洲无线观看久久| 日欧亚洲二三区大片不卡| 国产精品69人妻无码久久久| 九九色综合| 国内精品不卡无毒99999| 中文字幕大片三级狠狠干| 啊啊啊啊啊操我视频| 亚洲男人的天堂网| 亚洲密乳AV| 看一级特黄a大一片| AV九九| 97人人爱人人做人人乐| 国产一区二区在线看| 久久九色| 日韩在线观看字幕精品| www.操| 亚洲综合一| 东京太热男人的天堂久久久| 黑人美精品 A片| 日本色婷婷| 女生自91网站| 男人的天堂com| AV和黑人在线播放| 99国产精品久久久久久久成人热| 日本幼女18+| 9色国产精品一区粉嫩| 欧美日韩国产高清在线一二三区| 东京日日夜夜| 欧美亚洲天天| 日本熟妇人妻中出视频| 新97国产超碰| 色视频蜜乳| 狠狠干综合| 亚洲熟久久| 欧美懂色综合网| 变态乱伦伪娘灌肠一区二区| 欧美性猛交美女自慰91| 精品二区三四区五电影 | 亚洲色香| Av手机版天堂网| 大香蕉操久久| 国产三级片在线观看| 狠狠色综合网| 亚洲91射| 日本性爱网址| 男人天堂网手机版婷婷| 精品人体无圣光凹凸| 欧美色图片91| 亚洲男人综合| 欧美久久婷| 欧美色另类| 国产精品熟女乱伦| 人人澡人人澡人人| 在线观看黄色电话| 熟女熟妇一区二区三区视频| 欧美日韩91| 亚洲怡春院| 青娱乐久久艹| 狠狠入| 97色色婷婷| 妇女乱色二区| 亚洲乱熟女一区二区三区大香蕉| www.人人摸在线视频| 三级网色| 操老熟女AV| 久干9操| 色九九九综合| 日本五十路熟女一区二区| 久久视频少妇美女| 色五月av| 亚洲本色精品一区二区久久| 天天综合网入口~91| 国产精品人妻熟女aⅴ| 国产白丝在线| 久久精品店| 怡红院亚洲怡春院av| 大色综合网| 激情内射| 久久精品72| 日韩三A大片在线观看| 一区二区三区蜜桃成人撸久久东京热| 黄色电影在线播放综合网站 | 亚洲图片婷婷五月天| 自拍亚洲综合| 日韩有码免费视频| 午夜激情成人在线观看| 亚洲骚逼少妇| 国产13区| 国产呦精品一区二区三区下载| 青青草色AV| 精品国产嫩穴视频| 国产高清免费不卡av| 蜜桃臀一区二区aV| 日韩午夜国产| 国产女人成人精品视频| 丰满少妇精品一区二区| 亚洲成人无码影院| 国产久久久久久| 九九热男人天堂| 久草免费在线一区二区| 网友自拍第一页| 97色涩| 凹凸视频特色日本特黄| 综合久久久久久久久91| 九九碰九九爱97超| 青青草色AV| 神马久久网| 女人高潮抽搐喷水视频网站| 亚洲激情在线观看一区| 欧日韩一二三f区| 手机不卡视频不卡在线一二三区| 岛国精品视频在线观看| 久久久久亚洲AV无码专区少妇| 亚洲情色 自拍| 后入内射蜜桃臀| 激情视屏国产乱伦强奸| 无遮挡一级毛片视频免费的| 欧美99999| 日韩中文9| 日韩一级二级| 欧美成人一区二区三区在线播放| 99久久精品无码一区二区毛片免费| 亚洲人精品久久久| 牛牛久久国产精品视频一二三| 26uuu国产| 91日本在线观看| 思思热影视| 欧美爆乳精品一区二区| 丁香五月激情综合国产| 自怕偷自怕亚洲精品| 精品在线蜜臀| 密臀在线一区尤物| 97亚洲自在精品在线观看| 九九九九免费高| 特级大荫道BBwBBwBBW| 国产无马av| 在线人人人人人人精品超 | 日韩性爱网址| 国产精品成人蜜臀AV在线| 国产毛片毛片4p懂色| 久久亚洲日韩熟女精品| 丰满人妻一区二区三区蜜桃视频| 中国韩国明星一极片一区乱码毛片人妻熟女一区二区三区 | 人人爱人人乐人人操| 精人妻一区二区三区| 我想要啊 啊 啊| 激情黄色五月天| 欧美伦乱爱| 超碰97色色| 99久久综合| 国产AV天美| 97国产精品国| 嗯嗯啊啊视频一区二区三区| 人妻少妇三级| 精品国产一区二区久久| 操操操操操操| 亚av顶级裸体一区二区三区四区五区 | 国产久久日韩网站导航| 97天天综合网| 成人精品视频| 97在线欧| 九九碰九九爱97超| 日韩免费簧片| 粉嫩粉嫩一区性色AV片| 蜜乳av首页| 污啪啪啪视频| 欧美婷婷久久| 午夜经典| 欧州一区二区三区四区| 国产精品久久久久久照片| 无码人妻精品一区二区中文| 91快色色色色色| 超碰九色| 久久伊人青青草| 国产久久男人天堂| 国产精品日日摸天天碰| 91色交| 亚洲色图尤物视频| 国产成人无码久久精品| 国产人妻精品久久久一区二区三区 | 国精综合一二三区影视| 91 丝袜在线播放| 日韩黄片视频试看| 五月婷婷激情| 男人天堂免费| 成人免费性爱视视| 国产一级作爱毛片| 亚洲91av| 亚洲色图 91| 大JI巴好深好爽又大又粗视频| 翔田千里Av在线| av凤凰久久久| 久久国99999| 亚洲欧美清纯| 中国一级特黄大片护士| 男人的天堂2010| 少妇色| 亚洲国产奇米影视久久| 精品一区二区3区| 婷婷九月国产| 91精品人妻偷情| 国产在线精品偷| 色呦呦、国产精品| 欧美劲爆第一页| 亚洲AV秘 精品久久老牛影视| 欧美精品99久久久| 色97国产69香蕉| 色激情综合网站| 丁香九月激情| 偷窥自拍亚洲| 精品一区二区成人动漫| 啊啊啊啊二区好大| 一二三区操逼国产91| 日本肏逼视频在线观看| 人人搡人人肉久久精品| 亚洲色婷婷久久久综合日本| 99热这里只有精品9| 亚洲少妇自拍中文字幕懂色| 国产亚洲精品激情| 91欧美偷拍| 九九热精品视频六| 亚洲各类熟们中文字幕| 国产吹潮女在线观看| 欧美精品一区二区少妇免费A片| 99久久9| 男人的天堂com| 性爱av在线免费观看| 亚洲欧美精品久| 明星性猛交ⅹxxx乱大交| 99色在线| 91亚洲人| 欧美色图私拍91| 无码天堂| 韩日男人的天堂| 97超碰人妻| 伊人综合色网| 欧美人黑A片无码免视费| 玖玖超碰熟| 强奸乱伦免费网站| 97超碰中文字幕| 欧美强奸乱能| 中文字幕一区二区三区蜜桃视频| 日韩一区二区三区四区五区 | 人妻三级在线中文字幕| 青青色综合| 高清国产性猛交xxxx乱大交| 啊啊啊啊啊啊啊啊要喷了| 久久国产乱子伦精品免费女人| 久久久久久久久久黄色网 | 欧美色天堂网在线视频| 亚洲第一黄色av网站| 精国久久一区二区三区98| 久久毛卡| 亚洲色人阁| 97视频网站在线观看| 精品国产乱子伦一区二区三区,精品一| 立川理惠加勒比无码| 精品熟妇视频一区二区| 久久精品亚洲东京热色播| 亚洲精品乱码线路中文字幕| 蜜桃精品一区二区三区久在线| 国产精品视频白浆免费| 欧美性夜| 超碰天天操| 国产乱人伦AVA麻豆软件.| 精品人妻久久久久一区二区三区| 中文字幕人妻丝袜| 上海一级黄片| 九九九九九九综合| 丁香五月天久久精品视频一区二区三区| 日韩美女啪啪一区| 国产在线激情| 亚熟hd视频在线| 国产 丝袜 欧美中文 另类| 亚洲欧美黄| 成人热久久精品| 国产三区免费在线观看| 99999精品| 夜精品久无码| 99国内精品| 国产www色在线观看| 色色九区| 国产欧美黑人丰满在线| 色噜噜人妻av 中文字幕| 久久一级无码精品毛片6| 91一区二匹| 色综合久久夜色精品国产天堂| 曰韩av中文字幕专区| 色屁屁影院www国产| 色欲久久99精品久久| 久久97资源 网| 日韩AV一起草| av在线一区二区三区| 黄片免费看黄片免费看| 精品一级毛片在线观看| 久9久9久9久9久9久9| 久久视网78| 素人播放一区| 国产97色在线| 全免费a敌肛交毛片免费| 亚洲高清视频在线免费观看| 天天射天天色成人| 国产精品97超碰| 色偷偷色偷偷欧美日韩| 91美女在线精品视频| 强奸xx国产| 神马久久久久久伦理片| 国产老太乱伦一区| 亚洲AV无码乱码| 久久久999国产精品| 午夜后入| 青青草字幕AV| 色 亚洲 91| 爱爱动态试试看6 0秒| 国产少妇肉丝在线观看| 亚洲成人久久美女| 色婷婷综合网站| 伊人久久大香大香线蕉中文| 3p国产色噜噜一区| 综合一区中亚洲国产成人综合精品 | 色香天天| 天天肏视频| 九九精品网| 天天影视综合色| 男人天堂网手机版婷婷| 2019亚洲男人天堂| 精品二区三四区五电影 | 天天日天天色| 中文字暮97| 欧美性天天影视| 美女黄色一级A视频| 色婷婷狠狠18禁| 精品国产久热在线观看| 91精品大奶人妻| 国产福利第一视频| 欧美 中文字幕 一区| 国产原创精品| 60秒免费小视频| 大香蕉综合在线| 人妻超碰青青草98| 78操B| 精品一区二区三区国产| 国产精品久久久久久照片| 亚洲图片欧洲图片aⅴ| 亚洲第一无码播放立川理惠| 深爱激情五月天| 夜夜一区二区| 噜噜噜久久亚洲精品色情| 小骚逼被操的爽不爽| 久久精品人妻一区二区| 中文字幕乱码在线观看| 青草草免费网站av| 久久久夜夜嗨免费视频| 久久久久国产亚洲一区欧美色图日韩 | 尹人大香蕉视频在线| www.97在线| 伦在线97| 91五十路| 精品高清一区二区三区三州| 99综合网| 中文字幕女同在线| 欧美亚洲首页| 波多野结衣一级视频| 手机看片1024你懂的国产| 五月色综合| 国产五码丝袜屁眼| 网友自拍第1页 | 精品久久久久黄少妇| 日韩一级二级三级免费看完整版国语版| 精品无人区麻豆乱码1区2区图片 | 六六久久日韩不卡| 亚州熟妇精品| 亚洲av青草久久一区二区| 久久精品国产99精品亚洲蜜...| 91精品人妻电影| 伊人影院在线理论播放| 久久精品男人的天堂| 操逼操逼操| 乱伦日本色图AⅤ| 久久伊人在线五区| 久久精品国产97欧美精品亚洲 | 中文字幕亚洲热播人妻| 黄色小说亚洲| 亚洲成人贴图| 婷婷五月天久久久| 91影视亚洲| 天天视频黄| 色五月激情网| 97伦乱| 日韩综合无码色欲vv| 色97| 91丝袜美女视频| 国产成人精品日本视频| 嗯嗯啊好大| 人人操人人色网| 91久热| 97av,com| 欧美日韩精品一区二区三区高清| 密臀在线免费观看| 欧美激情久操网| 亚洲,欧美,春色,另类| 超碰97.com| 热99这里只有精品| 欲女人妻性色av| 九九精品99| 亚州精品丝袜-不卡成人免费| 亚洲欧美另类图片| 日韩精品国产精品五码一区二区| 久久久青草青青国产亚洲免观精品高清完整版_97久久综合区小说区图片区,国精品 | 久久久亚洲精品电影免费看| 久久久9999| 亚洲欧美精品一区天堂久久 | 人妻日日干| 成熟熟女国产精品一区二区| 国内毛片国产专区二| 日韩97视频| 老司机射| 91熟女丨91老女人| 九九九九久久久| 97超碰中文在线| 蜜桃传媒一区二区亚洲| 成人无码在线超碰网| 亚洲综合图文| 福利操逼| 精品人妻一区二区三区蜜桃视频| 日韩啪啪网| 97极品无码| 国产九九久久久精品| 美国日韩黄片| 亚洲一区二区 麻豆传媒| 日韩色欲久久一二三四区| 欧亚揄拍偷拍精品视频 | 干美女人妻| 婷婷五月天社区| 天天综合97| 青青草五月天| AV九九| 91人妻人人澡人人爽人人精品| 久久九七| 国产亚洲色婷婷久久99精品91葵花宝典| 男人的天堂三级| 99综合视频一体| 精品无码欧美三级| 蜜臀无码一区二区| 亚洲美乱| 午夜120视频在线观看| 久久成人东京热人妻| 精品妇女一区二区三区| 欧美日韩国产三级黄色| 亚洲高清综合网| 日韩精品熟妇| 9色在线| 无码137片内射在线影院| 97视频在线视频| 夜夜一区二区| AA特级绝黄| 日韩无码极品| 亚州五月| 九九九九九九成人| 嗯嗯嗯好爽| 亚洲 日韩 丝袜 熟女 变态| 国产精品96久久久久久| 智利AV在线网| 亚洲欧洲无码97久久精品| 色五月大香蕉| 欧美熟女操屄| 无码丰满熟妇一区二区浪潮AV| 久久久青青草| 中国的操老妇女| 玖玖爱综合| 囯产精品一区二区三区线|亚洲人成无码网WWW动漫|国产精品免费一级... | 久久久亚洲高清不打码| 97超碰超碰| 欧美日韩亚洲国产中文永久天天看| 97超碰色五月| 丁香九月婷婷| 久草免费在线一区二区| 日本免费一级AAA大片器 | 国产亚洲色婷婷久久99精品91| 久久男人精品| 日本性爱视频一级| 夜夜欢天天干| 国产sv美女内射| 亚洲情色综合网| 天天舔天天日天天射| 熟女在线视频| 日韩二三区| 亚洲一区二区三区久久 亚洲一区二区| 另类一区| 综合自拍| 8050午夜少妇无码| 色情乱伦AV| 欧美日韩性爱无码| 国产69精品久久久久99尤物| 18禁中文字幕| 日韩无码黄色片| 青娱乐欧美激情一区二区 | 日韩av熟女一区二区三区成人| 亚洲国产精品久久久久久久久久| 在线播放中文字幕| 这里都是精品在线观看| 乱色视频中文字幕| 五月色网| 亚洲第一页色| 男人的天堂在线有码| 天天射网| 亚洲色图欧美色图制服丝袜 | 最新国内自拍av免费| 成人26uuu| 91av一区二区在线观看| 国产精品人妻熟女aⅴ| 国产色综合亚洲色综合吹潮| 懂色中文一区二区三区| 亚洲免费在线探花| 91精品伊人久久久大香线蕉91| 国产日本久久免费精品| 色色婷婷五月天| 亚洲不卡AV在线| 射丝袜高跟鞋99| 色香在线| 少妇熟女视频一区二区三区| 久久加勒比| 一级性爱视频免费观看| 免费又黄又裸乳的视频| 久久‘黄片视频| 婷婷五月激情综合| 岛国小电影| 欧美激情色婷婷花野真衣一区二区 | 亚洲精品九九九| 国产精品直播在线观看直播| 国产欧美一级在线观看| 噜噜噜狠狠色综合| 国产传媒美日韩av| 亚洲精品久久久久久| 少妇高潮九九九九| 日韩av不卡在线看| 婷婷爱五月| 91l欧美在线| 天天影视综合色| 亚洲伊人久久综合97| 91人妻中文| 婷婷色导航| 妇女视频网站| 欧美色图欧美| 国产亚洲日韩在线三区黑人| 久久久无码国精品无码三区三区| 国产又大又粗又色生活片亚洲国产精品成人久久久综合免费 | 久久少妇| 婷婷中文网| 91暧暧| 亚洲AV无码乱码| 综合欧美日本三级| 黄总AV色图| 91制服丝袜中文字幕| 天天操天天干一区二区 | 一个国产在线综合网站| 又黄又爽在线观看视频| 欧美色图97| 成人免费视瓶| 日韩人妻精品久久久久| 蜜桃精品一区二区三区久在线| 97超碰碰| 九九色精品| 久操| 97人人操人人摸人人爱| 99xav| 国产精品人妻无码久久久互動交流| 国产亲戚伦亲在线| 欧美激情久| 一级人妻性爱视频| 爱射综合| 97色综合中文网| 97人人超| 久久有码视频| 无码 有码 国产18p| 欧美综合制服在线| 亚洲啪啪视频免费| 九九久久久久久爱| av激情亚洲五月天| oumeisetu综合| 丰满人妻-区二区三区免费看| 影音先锋中文字幕日本好一区二区| 亚洲限制级| 色黄污美女啪啪啪免费网站| 江都AV在线| 91操熟女| 久久国产视频专区一二三| 久久久久九九九| 操少妇很爽av| 免费人成毛片乱码| 91亚州欧美| 免费自拍三级综合| 免费亚洲国产精品久久一区| 懂色av色欲av蜜臀av| 亚州高清色综合| 美女尤物人人操| 欧美在线视频观看一二三四区高清| 99久久精品无码一区二区毛片免费 | 色色97爱| 天天添天天干电影| 日韩欧美性吧婷婷乱伦大香蕉| 欧美日韩国第一区| 秋霞操逼片| 欧美国产成人在线| av午夜影院在线播放| 中出20p| 五月天婷婷小说| 91香蕉国产尤物视频| 97一区二区蜜臀| 激情五月天插| 亚洲玖玖爱| 男人亚洲91首页在线| 人人操人人干xxx| 九九九九免费高| 欧美成人性爱视频大全| 亚洲天堂男人天堂网| 五月天伊人| 亚洲黄色网址视频| 91宗合网| 九草在线大香蕉| 免费a在线播放v| av激情亚洲五月天| 欧美亚洲国产日本在线,久久精品国产| 夜嗨影院| 久久久久久久唑| 二级久久网| 国产精品秘 福利姬在线观看| 欧美综合91| 青青草乱入乱欲视频在线观看| 丝袜熟女一区二区三区| 欧美亚洲激情| 久久综合久色欧美综合狠狠 | 啊啊啊草死我| 亚洲素人网| 人妻啊啊人妻啊啊| 国产不卡免费在线视频| 蜜臀久久99精品久久久久久-DVD原版全| 亚洲欧美另类少妇精品| 青青草天天亲夜夜操网| 高清国产无码av| 亚洲性综合11| 久久111| 97五月天| 欧洲一级性爱视频在线观看| 91久久久亚洲| 欧美瑟综合| 伊人精品视频| 好淫网一二三视区| 久久99精品视频| 男人的天堂VA| 先锋精品av色鲁| 久久女同性恋一二区| 欧美十八禁导航成人| 色偷偷2020免费视频播放| 麻豆区99999| 啊视频在线| av网站在线观看了| 九九综合九九综合| 97在线公开视频| 在线情色电影 91大 | 北约熟女超碰| 青草综合| 激情欧美97| 亚洲色图片区| 国产欧美日产一区二区三区 - 国产欧美日| 美女啊啊啊啊pc| 激情久久久| 欧美性生活综合| 夜间福利片1000无码| 天天谢天天干| 一个人免费视频观看在线WWW| 少妇蹲下露出大唇5| 乱操9999| 超碰综合97在线| 日本精品久久久久久久| 国产五码丝袜屁眼| 精品国产99| 激情图片亚洲色图| 素人美腿视频网站| 日本免费不卡二区| 人妻少妇蜜桃视频欧美一区| 91丨九色丨东北熟女| 亚洲国产激情国产av| 欧美特大黄一级片片免费| www成人啪啪18秘 免费| 日本精品高清一二区一本到| 国产剧情AV不卡在线观看| 欧美视频一区二区在线| 乱伦3P视频| 激情久久久| 中文字幕日本久久| 国产成人+综合亚洲+天堂| 日本在线不卡一二区| 国产免费一区在线观看| 激情四射五月天| 人妻少妇视频在线播放| 97精品国产97久久久| 欧美性爱一内片一区二区三区| 国产精品熟女AV中文字幕在线播放| 神马久久久久眼| 91jk色拍| 新视频sss国产| 男人天堂久久精品不卡| 国产一线二线三线av| 爱爱动态60秒| 国产在线观看91精品一区| www.黄色在线| 亚洲色诱惑| 99中出在线| 精品人妻一区二区乱码一区二区| 成人久久久精品| 亚洲中文字幕av| 在线午夜成人无码视频| 日韩国产欧美伦理在线 | 粉嫩久久久极品| 久久精品导航| 综合久久久久久久久91| 国产AV无码AV| 亚洲另类综合欧美| 欧美韩国你懂得在线| 亚洲玖玖爱| 日韩一级欧美一级国产一级台湾| 26uuu欧美日韩| 日本女人操逼| 裸模AV女优| 人妖欧美一区二区| 秋霞网无码| 国产亚洲精品美女久久久m| 精品久久一区二区三区四区五区| 今日头条成人一区二区三区四虎精品 | 大香蕉啪啪啪啪在线| 九九九偷拍| 超碰人人操97碰| 激情开心五月天| 牛牛久久国产精品视频一二三 | 日本色色色| 伊人一区二区三区| 亚州性色| 乱伦AVxx| 九九成人精品| 日韩有码中文字幕女同性恋| 日韩国产不卡在线视频| 午夜天堂精品久久久久91| 久久久九九九九| 极品销魂美女一区二区| 操婷婷逼| 超碰中文字幕人妻草一区| 久久在肏| 国产在线视视频有精品| 97天天操天天干| 超碰97久久| 丁香六月婷| 国产AV天美传媒一区二区三区 | 91痴汉| 日韩欧美午夜视频在线| 欧美永久激情一区二区| 国产精品乱码久久久久| 色色色999| 久久原创中文| 变态乱伦伪娘灌肠一区二区| 中文字幕 av v| 澳门色噜噜色噜噜色噜噜色噜噜色噜噜| 国产探花精品在线| 青草香蕉网| 欧美一级AAAAAAA| 丝袜六区| 欧美天天射| 99在线免费观看| av天堂加勒比| 久久99视频| 97ai亚洲| www.99在线| 91美女精品| 久久久久婷婷| av橘色网站| 国产成人精品日本亚洲语言| 久草久日| av凤凰久久久| 欧美97se| 五月天激情四射| 久久久久国色αv免费观看| 欧美性爱精品一区二区| 婷婷探花久久精品一区| 免费观看的黄色的网站| 另类专区加勒比| 天天干夜夜一操| 亚洲素人综合| 9+1视频网址| 亚洲精品欧洲色| 精品国产乱码久久久久久久久1 | 亚洲一区二区三区春色| 秋霞男人网| 五十路六十路素人熟女| 欧美韩国你懂得在线| 视频国产精品未满十八禁止在线观看| 99精品久久久久久| 极品色www影院| 啊啊啊啊免费视频| 色性综合| 精品久久无码午夜福利| 欧美 熟女 日韩| 婷婷视频在线免费观看| 亚洲午夜精品久久久中文影院| 成功精品影院| 色哟哟 日韩精品| 精品无码人妻一区二区免费蜜桃| 国产亚洲精品美女久久久久久2021| 啊啊啊啊好疼视频| 久久午夜伦| 免费少妇一区二区| 欧美激情亚洲情色| 色五月婷婷五月天| 成人精品久久久午夜福利| 亚精品无码毛片一区二区三区| 国产做?爰片久久毛片?片美国| 蜜臀99久| 亚洲色入欧美| 蜜桃臀av在线观看| 青草草免费网站av| 亚洲天堂另类| 丝袜喷水在线| 久久性爱城| 亚洲男人综合| 91高清日| 欧美无圣光在线| 日本午夜久久电影| 国产精品免费1区2区视频| 久久九九热| 爱欲AV| 我爱大香蕉| 国产成人 综合亚洲 天堂| 青青草一本道福利视频| 热久久九九热| 99热亚洲| 91快色色色色色| 国产精品久久久| 99久在线精品99re8| 精品人妻1237| 亚洲第一在线视频| 最新亚洲人成网站在线影院| 亚洲熟女人妻中文字幕一区二区| 国产精品高潮久久AV| 99自拍视频在线| 可以免费观看的日韩av毛片| 久久伊人最新网址视频| 五月天精品| 91路www| 嗯……啊…嗯嗯…啊…好舒服| 偷窥自拍A片| 黄色片一区二区三区四区五区| 久久尹人大香焦视| 亚洲有薄码区久久在线一区| 啊啊啊好舒服视频在线观看| 91丨国产丨白浆| 五月天激情国产综合婷婷婷| 久久精品国产亚洲AV嘿嘿| 日本熟女不卡视频| 97免费在线观看| 超碰97极品9| 免费97视频| 热久日综合| 国产自产91区13区| 国产女上位好爽在线| 五月色综合| 久久婷婷亚洲| 在线人人人人人人精品超| 亚洲欧洲日韩天堂av| 国产精品不卡高清在线观看| 色97干| 哈哈操电影| 成人九九| 久久日韩肥臀| 国产一区二区在线看| 欧美日韩97在线| 秋霞福利网| 伊人色综合欧美| 4虎在线视频| av久日| 久久久久久久9最新免费视频观看| 欧美在线55555| 日韩精品人妻中文字幕久久久| 免費人妻夜夜爽天天爽爽一区| 中文啪啪视频| 91女网站| 熟妇熟女一区二三区| 一区久久久二区| 欧美性,色九九| 国产精品色哟哟| 青女在线| www.av不卡中文字幕| 春色综合免费| 人妻第一页| 东京热天堂网| 欧美精品69性爱| 久久久精品中文字幕爱豆| 国产又黄又粗的视频| 成人性爱av| 日日操丁香五月天| 黄色欧美性爱视频| 97天堂| 91AV老熟女视频| 蜜臀AV成人精品蜜臀| 操死我了啊啊啊| 国产精品农村妇女精品| 国产传媒av天美传媒在线| 亚洲色婷婷久久91| 国产亚洲美日韩Aⅴ中文字幕无码成人| 色综合av男人天堂| 91美女丝袜诱惑视频| 欧美内射少妇| 久草线上视频免费看| 人妻丝袜二区| 国产精品久久久吖| 色成人Www精品永久观看| 超碰免费人人| 欧美色图片91| 国产吹潮女在线观看| 久久久夜夜夜| 午夜视频久久久久一区| 久操不卡视频| 99.色网| 九色 蝌蚪 熟女自 | 99自拍B亚洲| 97网址97| 久久久亚洲| 人妻一区视频| 91无人区卡一卡二卡三乱码入口最新版:能让用户有更多选择的选择-经典说说-爱 | 17c在线成人免费A片观看| 亚洲操人| 99亚洲人人| 超碰碰97资源站| 国产51色综合久久免费| 亚洲丝袜色| 97国产精品久久久久| 水多多映视AV| 免费综合亚洲中文| 97色诱| 男人的天堂va| 最新日产中文在线麻豆| 9999久久久久| 岛国免费视频在线| 久色网| 亚洲日韩欧美一区二区| 探花视频免费观看国产专区| 大屁股xxxxx| 伊人国产视频| 天天射夜夜操| 中文字幕在线观看视频www| 无码久| 一区二区三区免费视频入口| 激情五月综合网| 日本精品九九九| 国产精品4p在线观看| 九九这里只有精品| 我想要啊 啊 啊| 亚洲精品国产熟女| 麻豆久久久久久久久丝袜 | 女优免费一区二区永久| 伦理日韩国产久久| 成人乱人伦一区二区| 中文字幕一区二区三区蜜臀| 超碰色97| 日本色色色| 亚州色图欧美色图| 国产精品成人蜜臀AV在线| 美女黑人91神马| av天堂天堂av日韩| 久久精品72| 强奸抽插av| 麻豆国产av网| 国产色图乱伦| 欧美性爱97超碰 | 97人妻色| 91欧美在线| 日韩有码一区三区| 一区二区影视| 桃色五月天| 日夜伊人网| 久久久久精| 男人的天堂2019| 熟女丰满人妻一区| 丰满熟女一区二区三区在线播放| 韩国黄色片精品久久久 | 十八禁成人网站在线观看| 欧美久久久| 日本www操操操| 国产高清在线自在拍69| 亚洲黄色网址视频| 一区二区三区在线日韩影院观看| 午夜电影在线观看无码专区| 久久噜| 一级性爱aaaa| 清纯唯美第一页| 超碰狠狠操| 亚洲天天综合| 少妇与黑人高潮在线| 国产一区自拍欧美日韩| 欧美成人一区二区| 国产高清在线观看欧美| 亚洲九九视频在线观看| 国产超碰在线| 91性色| 欧美白嫩女HD| 日韩欧美俄罗斯A片| 亚州欧美在线| 色一射色一射| 久久人人爽爽人人爽人人片αV| 龙兴卡官方查询| 色色色欧美| 亚洲 欧美 日韩 国产一区二区 | 中文字幕亚韩| 夜夜欧美 | 青青青国产手线观看视频2| 男人天堂综合| 高清在线偷拍自拍视频| 欧美亚洲丝袜人妻制服中文99| 国产suv精品一区二区四区999| 日韩免费看在线黄色片| 欧美洲精品一级| 中文字幕黑人大片| 日韩人妻有码免费视频| 亚洲双插| 亚洲人在线| 免费看久久久性性| 97操| 亚洲图片在线| 午夜情侣自拍网站| 中日亚韩免费视频| 99在线观看视频在线高清| 高清不卡一二三区视频......| 又大又长又粗又爽又黄| 97chaopengongkai| av天天在线| 综合五月天| 思思热在线cao| 青青草福利视频| 天美传媒av在线| 77777亚洲蜜臀精品久久综合蜜臀| 久久受www免费人成| 青青青青青手机视频| 精品无码久久久久| 精品妇女一区二区三区| 人人爱人人操人人性| 超清中文乱码字幕| 亚洲性综合11| 国产人妻一区二区三区欧美毛片| 99热66| 太久视频| 国产福利电影| 91成人无码| 97jingpin| 少妇同性| av天天在线观看| 第一高清av中文字幕| 欧美激情性久久久久久| 狠日欧美| 欧美色交| 激情视频一二三| 玖玖爱综合| 最新AVzaixian| 97香蕉碰碰人妻国产欧美| 91午夜无码| 少妇厨房愉情理伦片bd在线观看| 97视频在线观看免费高清| 青青草无码视频| AV在线资源| 91电影色诱| 中文字幕艹艹| 狠狠久久亚洲欧美专区| 亚欧国产无码精品在线| 国产 日韩 欧美 中文 另类,国产 欧美 另类 制服 变态,高清 日韩 欧美 中文,高 | 五月天亚洲网| 秋霞一级A片黄色视频| 91高潮| 97 色综合| 天天欧美| 三及片网站| 理论久久婷婷网8| 日日97| 高清无码91| 国内一级精品| 熟女少妇一区二区三区| 密臀成人视频久久久| 99最新日韩偷拍视频| 十八禁一区二区无码观看| 丰满搜索结果 -第18页- 久久高清无码 | 亚洲在高跟鞋自慰久久在色线| 欧美一区二区在线资源| 中文字幕视频2区| 国产亚洲欧洲在线观看| 97精品久久久久久久| 精品一久久久| 欧美国产有色电影| 亚洲999综合| 精久久久| 亚洲 日本 不卡| 精品福利| 大屁股人妻女教师撅着屁股|